🚀 AI 一键生成 qmt 策略代码

券商版 QMT 能否正常调用 call_vba() 函数?权限与用法详解

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

问题描述

call_vba()函数,券商的QMT能正常调用?还是要迅投的付费会员才能用?

call_vba()函数,券商的 QMT 能正常调用?还是要迅投的付费会员才能用?

解决方案

券商版 QMT 与 call_vba() 权限说明

关于 call_vba() 函数在 QMT 中的调用权限,通常有以下几种情况:

  1. 券商版 QMT 权限差异:券商免费提供的 QMT 终端(通常称为普通版或极简版)在 API 权限上可能会有所阉割。部分券商的高级版本(如需要满足一定资金门槛开通的专业版)可能会开放更多的底层函数调用权限。具体是否支持 call_vba()完全取决于您所在券商采购的 QMT 版本以及为您开通的权限级别
  2. 迅投官方付费版本:迅投官方的专业版、机构版(通常需要付费或机构合作)拥有最完整的 API 权限,通常包含对底层指标和复杂函数的无限制调用。

建议:最直接的方法是在您的券商版 QMT 策略编辑器中编写一个简单的测试脚本调用该函数,如果报错提示无权限或找不到该函数,则说明当前版本不支持。此时您可以联系您的券商客户经理,询问是否可以申请开通更高级的 QMT 权限。


QMT 官方文档中的指标与扩展数据调用方法(替代方案)

在标准的 QMT Python API 官方文档中,并没有直接推荐使用 call_vba() 来获取指标数据。相反,QMT 提供了专门的引用函数来获取扩展数据和自定义指标数据。如果您在券商版中无法使用 call_vba(),可以尝试使用官方标准的 ext_data() 系列函数。

1. 获取扩展数据 ext_data()

用法ext_data(extdataname, stockcode, deviation, ContextInfo)

释义:获取在 QMT 平台上定义好的扩展数据或指标数据。

示例代码

def handlebar(ContextInfo):
    # 获取 600000.SH 的自定义指标 'mycci' 的当前值,不偏移
    cci_value = ext_data('mycci', '600000.SH', 0, ContextInfo)
    print(cci_value)

2. 获取扩展数据在指定时间区间内的值 ext_data_range()

用法ext_data_range(extdataname, stockcode, begintime, endtime, ContextInfo)

示例代码

def handlebar(ContextInfo):
    # 获取指定时间段内的指标数据
    data_dict = ext_data_range('mycci', '600000.SH', '2023-01-01 09:30:00', '2023-12-31 15:00:00', ContextInfo)
    print(data_dict)

总结

如果您希望在 Python 策略中复用已有的指标逻辑,建议先在 QMT 的公式编辑器中将指标写好并保存为扩展数据,然后在 Python 策略中通过 ext_data() 接口进行安全、合规的调用,这种方式在绝大多数券商版 QMT 中都是默认支持的。