You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AlphaFutures/数据源切换指南.md

295 lines
7.8 KiB

# 数据源切换指南
本指南详细说明了如何在AlphaFutures系统中切换不同的数据源TQSDK、RQData等
## 方法一:通过环境变量配置(推荐)
### 1. Windows系统环境变量配置
1. **打开系统属性**
- 右键点击"此电脑" → 选择"属性"
- 点击"高级系统设置"
2. **进入环境变量设置**
- 点击"环境变量"按钮
3. **添加/修改系统变量**
- 在"系统变量"区域点击"新建"(如果已存在则点击"编辑"
- 变量名:`DATA_ADAPTER_TYPE`
- 变量值:
- `tqsdk` - 使用TQSDK数据源
- `rqdata` - 使用RQData数据源
4. **设置账号信息**(可选):
- **TQSDK账号**
- 新建变量 `TQSDK_USERNAME`值为你的TQSDK用户名
- 新建变量 `TQSDK_PASSWORD`值为你的TQSDK密码
- **RQData账号**
- 新建变量 `RQDATA_USERNAME`值为你的RQData用户名
- 新建变量 `RQDATA_PASSWORD`值为你的RQData密码
5. **生效配置**
- 点击"确定"保存所有设置
- **重启应用程序**:环境变量变更需要重启应用才能生效
### 2. Linux/Mac系统环境变量配置
1. **编辑配置文件**
```bash
# 对于bash用户
nano ~/.bashrc
# 对于zsh用户
nano ~/.zshrc
```
2. **添加环境变量**
```bash
# 设置数据源类型
export DATA_ADAPTER_TYPE="rqdata"
# 设置RQData账号可选
export RQDATA_USERNAME="your_username"
export RQDATA_PASSWORD="your_password"
```
3. **生效配置**
```bash
# 对于bash用户
source ~/.bashrc
# 对于zsh用户
source ~/.zshrc
```
## 方法二:在代码中临时切换
### 1. 临时设置环境变量
```python
import os
# 临时切换到RQData数据源
os.environ["DATA_ADAPTER_TYPE"] = "rqdata"
# 设置RQData账号可选
os.environ["RQDATA_USERNAME"] = "your_username"
os.environ["RQDATA_PASSWORD"] = "your_password"
# 然后创建DataFetcher实例
from qihuo_analyzer.data.data_fetcher import DataFetcher
fetcher = DataFetcher()
# 现在fetcher会使用RQData数据源
kline_data = fetcher.get_kline_data("SHFE.rb2409", 3600, start_time, end_time)
```
### 2. 直接指定适配器
```python
from qihuo_analyzer.data.api_adapters.adapter_factory import DataAdapterFactory
# 直接创建RQData适配器
rqdata_adapter = DataAdapterFactory.create_adapter("rqdata")
rqdata_adapter.connect()
# 使用RQData获取数据
data = rqdata_adapter.get_kline_data("SHFE.rb2409", 3600, start_time, end_time)
# 关闭连接
rqdata_adapter.disconnect()
# 切换到TQSDK适配器
tqsdk_adapter = DataAdapterFactory.create_adapter("tqsdk")
tqsdk_adapter.connect()
# 使用TQSDK获取数据
data = tqsdk_adapter.get_kline_data("SHFE.rb2409", 3600, start_time, end_time)
# 关闭连接
tqsdk_adapter.disconnect()
```
## 方法三:在配置文件中设置
如果系统支持配置文件,可以在配置文件中添加数据源设置:
### 1. 创建配置文件
在项目根目录创建 `config.py` 文件:
```python
# config.py
DATA_ADAPTER_TYPE = "rqdata" # 可选值: tqsdk, rqdata
# RQData账号配置可选
RQDATA_USERNAME = "your_username"
RQDATA_PASSWORD = "your_password"
# TQSDK账号配置可选
TQSDK_USERNAME = "your_username"
TQSDK_PASSWORD = "your_password"
```
### 2. 在代码中加载配置
```python
import os
from config import DATA_ADAPTER_TYPE, RQDATA_USERNAME, RQDATA_PASSWORD, TQSDK_USERNAME, TQSDK_PASSWORD
# 设置环境变量
os.environ["DATA_ADAPTER_TYPE"] = DATA_ADAPTER_TYPE
# 设置账号信息
if RQDATA_USERNAME:
os.environ["RQDATA_USERNAME"] = RQDATA_USERNAME
if RQDATA_PASSWORD:
os.environ["RQDATA_PASSWORD"] = RQDATA_PASSWORD
if TQSDK_USERNAME:
os.environ["TQSDK_USERNAME"] = TQSDK_USERNAME
if TQSDK_PASSWORD:
os.environ["TQSDK_PASSWORD"] = TQSDK_PASSWORD
# 创建DataFetcher实例
from qihuo_analyzer.data.data_fetcher import DataFetcher
fetcher = DataFetcher()
```
## 查看当前使用的数据源
### 1. 代码中查看
```python
from qihuo_analyzer.data.data_fetcher import DataFetcher
# 创建DataFetcher实例
fetcher = DataFetcher()
# 查看当前使用的适配器类型
print(f"当前使用的数据源: {fetcher.adapter.__class__.__name__}")
# 查看适配器配置信息
print(f"适配器配置: {fetcher.adapter.config}")
```
### 2. 检查环境变量
```python
import os
# 查看当前数据源类型
adapter_type = os.environ.get("DATA_ADAPTER_TYPE", "tqsdk")
print(f"当前配置的数据源类型: {adapter_type}")
# 查看账号配置
if adapter_type == "rqdata":
username = os.environ.get("RQDATA_USERNAME", "未配置")
print(f"RQData账号: {username}")
elif adapter_type == "tqsdk":
username = os.environ.get("TQSDK_USERNAME", "未配置")
print(f"TQSDK账号: {username}")
```
## 切换数据源的注意事项
### 1. 账号配置
- **切换到TQSDK**需要配置TQSDK账号密码否则使用模拟数据
- **切换到RQData**需要配置RQData账号密码否则使用模拟数据
- **未配置账号**:系统会自动使用模拟数据,确保系统正常运行
### 2. 数据一致性
- 不同数据源的数据格式可能略有差异,但统一接口会确保返回格式一致
- 历史数据的时间范围和精度可能因数据源而异
- 实时数据的更新频率可能不同
### 3. 性能考虑
- **TQSDK**:适合实时数据和高频交易策略
- **RQData**:适合历史数据回测和研究分析
- 选择适合你使用场景的数据源
### 4. 错误处理
- 切换数据源后,建议测试基本功能确保连接正常
- 如遇连接问题,检查账号配置和网络连接
- 系统会自动处理API错误并使用模拟数据作为降级方案
## 常见问题解决
### Q: 切换数据源后连接失败
**A:**
1. 检查账号密码是否正确
2. 检查网络连接是否正常
3. 检查API服务是否正常运行
4. 尝试重启应用程序
### Q: 如何在运行时动态切换数据源
**A:**
```python
import os
from qihuo_analyzer.data.data_fetcher import DataFetcher
# 先使用TQSDK
os.environ["DATA_ADAPTER_TYPE"] = "tqsdk"
fetcher1 = DataFetcher()
# 再使用RQData
os.environ["DATA_ADAPTER_TYPE"] = "rqdata"
fetcher2 = DataFetcher()
# 现在fetcher1使用TQSDKfetcher2使用RQData
```
### Q: 数据源切换后数据格式不一致
**A:**
统一接口已处理数据格式问题,确保返回格式一致。如果遇到问题,请检查:
1. 确认使用的是最新版本的统一接口
2. 检查数据获取参数是否正确
3. 查看日志中的错误信息
## 示例:完整的数据源切换流程
### 场景从TQSDK切换到RQData
1. **设置环境变量**
- `DATA_ADAPTER_TYPE` = "rqdata"
- `RQDATA_USERNAME` = "your_rqdata_username"
- `RQDATA_PASSWORD` = "your_rqdata_password"
2. **重启应用**:确保环境变量生效
3. **验证切换**
```python
from qihuo_analyzer.data.data_fetcher import DataFetcher
# 创建DataFetcher实例
fetcher = DataFetcher()
# 测试数据获取
try:
# 获取K线数据
data = fetcher.get_kline_data(
symbol="SHFE.rb2409",
interval=3600,
start_time="2024-01-01 00:00:00",
end_time="2024-01-02 00:00:00"
)
print("数据获取成功!")
print(f"获取到 {len(data)} 条数据")
print(f"当前使用的数据源: {fetcher.adapter.__class__.__name__}")
except Exception as e:
print(f"数据获取失败: {e}")
```
4. **确认切换成功**
- 查看输出中的"当前使用的数据源"信息
- 检查数据获取是否正常
## 总结
通过以上方法,你可以轻松在不同的数据源之间切换,选择最适合你使用场景的数据源。统一接口的设计确保了切换数据源不会影响业务逻辑,为系统提供了更大的灵活性。