问题描述
1.环境准备:目前该模式需要通过投研专业版进行调用,并且必须用投研先锋版本的安装包,非先锋版不支持。
另外需要本地有 xtquant,官网下载 xtquant 包即可:https://dict.thinktrader.net/nativeApi/download_xtquant.html?id=TB5IbM
2.可使用 python 函数 便捷获取 vba 公式的输出
3.填写 vba 公式内容即可获取 gmd_ex 格式的数据:
4.获取数据量较大时,获取速度较 gmd_ex 会有所降低,但更加灵活,可快速创建新字段:
解决方案
在QMT(迅投极速交易系统)的量化开发中,有时我们需要结合VBA公式的强大指标计算能力和Python的灵活数据处理能力。通过Python调用VBA函数并获取 gmd_ex 格式的数据,可以极大地提升策略开发的灵活性,尤其是在需要快速创建新字段或自定义指标时。
以下是具体的实现指南和注意事项:
1. 环境准备
要实现Python调用VBA并获取 gmd_ex 格式数据,必须满足特定的环境要求:
- 客户端版本:目前该模式需要通过投研专业版进行调用,并且必须使用投研先锋版本的安装包,普通的非先锋版不支持此功能。
- 依赖库:本地Python环境需要安装
xtquant库。您可以前往迅投官网下载xtquant包进行安装(下载地址:xtquant下载)。
2. 核心优势与应用场景
- 便捷获取:可使用Python函数便捷地获取VBA公式的输出结果,无需在两个环境间进行复杂的文件读写。
- 灵活定制:只需在接口中填写VBA公式内容,即可直接获取
gmd_ex格式的数据。这使得开发者可以快速验证新的技术指标或因子,快速创建新字段。
3. 性能与注意事项
- 性能权衡:当获取的数据量较大时,通过这种方式获取数据的速度相较于直接读取原生的
gmd_ex数据会有所降低。这是因为跨语言调用和公式实时计算需要消耗额外的系统资源。 - 适用建议:建议在策略研发阶段、因子挖掘阶段或处理中小规模数据时使用此方法,以充分利用其灵活性。在实盘高频交易或处理海量历史数据时,需注意评估性能瓶颈。
4. 实现思路(伪代码示例)
虽然具体的API调用细节依赖于 xtquant 的最新文档,但通常的调用逻辑如下:
# 导入xtquant相关模块
from xtquant import xtdata
# 确保xtdata已经连接到QMT客户端
# ... 连接代码 ...
# 定义你需要调用的VBA公式
vba_formula = """
// 这里填写你的VBA公式代码,例如计算某个自定义的均线或动量指标
MY_INDICATOR: MA(CLOSE, 10) + STD(CLOSE, 20);
"""
# 设定目标股票和时间范围
stock_code = '000001.SZ'
start_time = '20230101'
end_time = '20231001'
# 调用xtquant提供的特定接口执行VBA公式并获取gmd_ex格式数据
# 注意:具体函数名请参考xtquant最新官方文档
try:
# 假设接口名为 get_vba_data_ex
gmd_ex_data = xtdata.get_vba_data_ex(
formula=vba_formula,
stock_code=stock_code,
period='1d',
start_time=start_time,
end_time=end_time
)
print("成功获取gmd_ex格式数据:")
print(gmd_ex_data)
except Exception as e:
print(f"获取数据失败: {e}")
总结:通过投研先锋版和 xtquant,Python与VBA的无缝结合为QMT量化开发者提供了一个强大的工具,使得复杂指标的计算和数据获取变得更加高效和灵活。