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.
7.8 KiB
7.8 KiB
数据源切换指南
本指南详细说明了如何在AlphaFutures系统中切换不同的数据源(TQSDK、RQData等)。
方法一:通过环境变量配置(推荐)
1. Windows系统环境变量配置
-
打开系统属性:
- 右键点击"此电脑" → 选择"属性"
- 点击"高级系统设置"
-
进入环境变量设置:
- 点击"环境变量"按钮
-
添加/修改系统变量:
- 在"系统变量"区域点击"新建"(如果已存在则点击"编辑")
- 变量名:
DATA_ADAPTER_TYPE - 变量值:
tqsdk- 使用TQSDK数据源rqdata- 使用RQData数据源
-
设置账号信息(可选):
- TQSDK账号:
- 新建变量
TQSDK_USERNAME,值为你的TQSDK用户名 - 新建变量
TQSDK_PASSWORD,值为你的TQSDK密码
- 新建变量
- RQData账号:
- 新建变量
RQDATA_USERNAME,值为你的RQData用户名 - 新建变量
RQDATA_PASSWORD,值为你的RQData密码
- 新建变量
- TQSDK账号:
-
生效配置:
- 点击"确定"保存所有设置
- 重启应用程序:环境变量变更需要重启应用才能生效
2. Linux/Mac系统环境变量配置
-
编辑配置文件:
# 对于bash用户 nano ~/.bashrc # 对于zsh用户 nano ~/.zshrc -
添加环境变量:
# 设置数据源类型 export DATA_ADAPTER_TYPE="rqdata" # 设置RQData账号(可选) export RQDATA_USERNAME="your_username" export RQDATA_PASSWORD="your_password" -
生效配置:
# 对于bash用户 source ~/.bashrc # 对于zsh用户 source ~/.zshrc
方法二:在代码中临时切换
1. 临时设置环境变量
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. 直接指定适配器
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 文件:
# 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. 在代码中加载配置
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. 代码中查看
from qihuo_analyzer.data.data_fetcher import DataFetcher
# 创建DataFetcher实例
fetcher = DataFetcher()
# 查看当前使用的适配器类型
print(f"当前使用的数据源: {fetcher.adapter.__class__.__name__}")
# 查看适配器配置信息
print(f"适配器配置: {fetcher.adapter.config}")
2. 检查环境变量
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:
- 检查账号密码是否正确
- 检查网络连接是否正常
- 检查API服务是否正常运行
- 尝试重启应用程序
Q: 如何在运行时动态切换数据源
A:
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使用TQSDK,fetcher2使用RQData
Q: 数据源切换后数据格式不一致
A: 统一接口已处理数据格式问题,确保返回格式一致。如果遇到问题,请检查:
- 确认使用的是最新版本的统一接口
- 检查数据获取参数是否正确
- 查看日志中的错误信息
示例:完整的数据源切换流程
场景:从TQSDK切换到RQData
-
设置环境变量:
DATA_ADAPTER_TYPE= "rqdata"RQDATA_USERNAME= "your_rqdata_username"RQDATA_PASSWORD= "your_rqdata_password"
-
重启应用:确保环境变量生效
-
验证切换:
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}") -
确认切换成功:
- 查看输出中的"当前使用的数据源"信息
- 检查数据获取是否正常
总结
通过以上方法,你可以轻松在不同的数据源之间切换,选择最适合你使用场景的数据源。统一接口的设计确保了切换数据源不会影响业务逻辑,为系统提供了更大的灵活性。