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

7.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

数据源切换指南

本指南详细说明了如何在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用户
    nano ~/.bashrc
    
    # 对于zsh用户
    nano ~/.zshrc
    
  2. 添加环境变量

    # 设置数据源类型
    export DATA_ADAPTER_TYPE="rqdata"
    
    # 设置RQData账号可选
    export RQDATA_USERNAME="your_username"
    export RQDATA_PASSWORD="your_password"
    
  3. 生效配置

    # 对于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:

  1. 检查账号密码是否正确
  2. 检查网络连接是否正常
  3. 检查API服务是否正常运行
  4. 尝试重启应用程序

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使用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. 验证切换

    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. 确认切换成功

    • 查看输出中的"当前使用的数据源"信息
    • 检查数据获取是否正常

总结

通过以上方法,你可以轻松在不同的数据源之间切换,选择最适合你使用场景的数据源。统一接口的设计确保了切换数据源不会影响业务逻辑,为系统提供了更大的灵活性。