🚀 AI 一键生成 qmt 策略代码

如何在QMT中通过Python调用VBA公式并获取gmd_ex格式数据?

qmt | 发布时间: 2026/5/20
以下内容由 EasyQuant 生成。

问题描述

python调vba函数 并 获取gmd_ex格式的数据

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量化开发者提供了一个强大的工具,使得复杂指标的计算和数据获取变得更加高效和灵活。