|
|
|
@ -73,10 +73,67 @@
|
|
|
|
7. 处理数据并返回给客户端
|
|
|
|
7. 处理数据并返回给客户端
|
|
|
|
8. 如果TQSDK失败,自动切换到测试数据源
|
|
|
|
8. 如果TQSDK失败,自动切换到测试数据源
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 主力合约获取
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 核心流程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. **主力合约获取机制**:
|
|
|
|
|
|
|
|
- 系统通过TQSDK的`query_quotes()`方法获取主力合约数据
|
|
|
|
|
|
|
|
- 支持实盘数据和模拟数据两种模式
|
|
|
|
|
|
|
|
- 实现了异常处理和超时机制,确保获取过程稳定
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. **数据处理**:
|
|
|
|
|
|
|
|
- 从TQSDK获取主力合约列表
|
|
|
|
|
|
|
|
- 提取品种代码和对应的主力合约代码
|
|
|
|
|
|
|
|
- 转换为主力合约映射表,便于查询
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. **API接口**:
|
|
|
|
|
|
|
|
- 提供`/api/main-contracts`接口,返回主力合约数据
|
|
|
|
|
|
|
|
- 接口返回格式包含品种代码、品种名称和主力合约代码
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 代码位置
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **TQSDK适配器**:`backend/service_implementation/qihuo_analyzer/data/api_adapters/tqsdk_adapter.py`
|
|
|
|
|
|
|
|
- 实现了`get_main_contracts()`方法,使用TQSDK获取主力合约数据
|
|
|
|
|
|
|
|
- 提供了模拟数据作为fallback
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **数据获取器**:`backend/service_implementation/qihuo_analyzer/data/data_fetcher.py`
|
|
|
|
|
|
|
|
- 实现了`get_main_contracts()`方法,作为适配器方法的包装
|
|
|
|
|
|
|
|
- 提供了统一的主力合约获取接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **API服务**:`backend/service_implementation/service/app.py`
|
|
|
|
|
|
|
|
- 添加了`/api/main-contracts`接口,返回主力合约数据
|
|
|
|
|
|
|
|
- 处理数据格式转换和错误处理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 使用方法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. **通过API接口获取**:
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
GET http://localhost:5000/api/main-contracts
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. **在代码中获取**:
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
from qihuo_analyzer.data.data_fetcher import DataFetcher
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data_fetcher = DataFetcher()
|
|
|
|
|
|
|
|
data_fetcher.connect()
|
|
|
|
|
|
|
|
main_contracts = data_fetcher.get_main_contracts()
|
|
|
|
|
|
|
|
print(main_contracts) # 输出:{'AU': 'AU2603', 'AG': 'AG2603', ...}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 技术实现细节
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- **TQSDK接口**:使用`query_quotes(ins_class='FUTURE')`获取主力合约数据
|
|
|
|
|
|
|
|
- **数据处理**:通过`get_quote()`获取合约详细信息,提取`underlying_symbol`和`instrument_id`
|
|
|
|
|
|
|
|
- **异常处理**:实现了多层异常捕获,确保系统稳定性
|
|
|
|
|
|
|
|
- **模拟数据**:当TQSDK不可用时,使用预定义的模拟数据
|
|
|
|
|
|
|
|
|
|
|
|
## 技术特点
|
|
|
|
## 技术特点
|
|
|
|
|
|
|
|
|
|
|
|
1. **工厂模式**:使用工厂模式管理数据源实例,提高代码可维护性
|
|
|
|
1. **工厂模式**:使用工厂模式管理数据源实例,提高代码可维护性
|
|
|
|
2. **接口隔离**:通过接口定义数据源行为,便于扩展新的数据源类型
|
|
|
|
2. **接口隔离**:通过接口定义数据源行为,便于扩展新的数据源类型
|
|
|
|
3. **容错机制**:实现了数据源故障自动切换,提高系统可靠性
|
|
|
|
3. **容错机制**:实现了数据源故障自动切换,提高系统可靠性
|
|
|
|
4. **配置驱动**:数据源配置通过配置文件管理,便于运维和部署
|
|
|
|
4. **配置驱动**:数据源配置通过配置文件管理,便于运维和部署
|
|
|
|
5. **模块化设计**:将数据获取逻辑与API接口分离,提高代码可读性
|
|
|
|
5. **模块化设计**:将数据获取逻辑与API接口分离,提高代码可读性
|
|
|
|
|
|
|
|
6. **主力合约支持**:实现了主力合约的自动获取和管理,方便用户快速访问主要交易合约
|