3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化平台中,同一个交易策略是完全可以在不同的周期(如从日线切换到 15 分钟线)去运行和交易的。QMT 的运行机制是基于 K 线驱动的,即每走完一根 K 线(无论是日线还是 15 分钟线),系统都会调用一次 handlebar(ContextInfo) 函数。
如果您想将原有的日线策略用在 15 分钟周期上,通常需要从以下几个方面进行检查和改动:
最直接的改动是在 QMT 软件界面上:
如果您的代码编写得比较规范(动态获取周期),可能一行代码都不用改。但如果存在硬编码,则需要修改:
如果您在代码中使用了 ContextInfo.get_market_data_ex 或 ContextInfo.get_history_data 获取数据,请检查 period 参数:
period='1d'。这会导致即使主图是 15 分钟,获取的依然是日线数据。period 设置为 'follow'(跟随主图周期),或者使用 ContextInfo.period 动态传入。# 推荐写法:使用 'follow' 让数据周期自动跟随主图周期(如15分钟)
def handlebar(ContextInfo):
# 获取当前主图周期的数据
data = ContextInfo.get_market_data_ex(
['open', 'high', 'low', 'close'],
[ContextInfo.stockcode],
period='follow', # 自动跟随界面设置的周期
count=20
)
如果您的日线策略中使用了 do_order() 配合时间判断(例如判断 14:55:00 尾盘下单),在 15 分钟周期下,这种基于特定时间点的逻辑可能需要重写,因为 15 分钟线的 Bar 结束时间是 09:45, 10:00 等。
虽然代码可以无缝切换,但金融市场的逻辑在不同周期下差异巨大,您必须重新评估策略参数:
ContextInfo.set_commission 和 ContextInfo.set_slippage)。if current_time > '14:45:00': 不开新仓)。技术上:只需在界面切换周期,并确保代码中的数据获取函数使用 period='follow' 即可。
策略上:必须重新进行回测,调整技术指标参数,并严格评估高频交易带来的手续费磨损。