3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT (迅投量化平台) 中,通常所说的“VBA 指标”或“公式指标”是指在客户端图形界面或公式编辑器中编写的技术指标/扩展指标。Python 策略本身无法直接运行 VBA 语言逻辑,但可以通过 QMT 提供的扩展数据 API(ext_data)或因子数据接口来引用这些在图形系统中计算好的自定义指标。自由引用这些指标的完整步骤如下:
handlebar(ContextInfo) 函数中,使用 ext_data() 或 ContextInfo.get_ext_all_data() 接口按指标名称和标的代码提取其对应数值。ext_data(extdataname, stockcode, deviation, ContextInfo)extdataname (string):扩展数据/自定义指标的名称(例如 'mycci')。stockcode (string):合约代码,格式如 '600000.SH'。deviation (number):K 线偏移量(0 表示当前 Bar,N 表示向右偏移 N 根,-N 表示向左偏移 N 根)。ContextInfo:全局上下文对象。number(对应的指标数值)。#coding:gbk
def init(ContextInfo):
# 设置交易标的
ContextInfo.set_universe(['600000.SH'])
print("策略初始化完成,准备获取自定义指标...")
def handlebar(ContextInfo):
# 获取当前主图股票代码
stock_code = ContextInfo.stockcode
# 调用名为 'mycci' 的扩展数据/VBA自定义指标,不偏移(0)
vba_indicator_value = ext_data('mycci', stock_code, 0, ContextInfo)
# 打印当前 K 线的指标结果
print(f"当前Bar索引: {ContextInfo.barpos}, 股票代码: {stock_code}, 自定义指标值: {vba_indicator_value}")
# 根据自定义指标制定交易逻辑示例
if vba_indicator_value > 100:
print("自定义指标触发上穿条件,可执行买入逻辑")
如果需要在策略初始化 init() 时一次性加载所有品种的自定义扩展指标历史数据,可以使用:
def init(ContextInfo):
# 引用扩展数据在指定时间区域内的所有值和排名,返回 pandas.Panel 或 DataFrame 结构
all_ext_data = ContextInfo.get_ext_all_data('mycci', start_time='20230101', end_time='20231231')
print(all_ext_data)
#coding:gbk,防止日志或代码注释出现乱码。