🚀 AI 一键生成 qmt 策略代码
立即体验
👉 AI 生成代码 👈

QMT量化平台:交易策略跨周期运行指南(日线转15分钟)

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

问题描述

用同样的交易策略,是不是可以在不同的周期去交易?

原有的交易策略是日线,是不是可以用在 15 分钟的周期去交易?在改动什么吗?

解决方案

是的,完全可以用同样的交易逻辑在不同的周期去交易。在 QMT 平台中,将原有的日线策略应用到 15 分钟周期是非常方便的。

QMT 平台的模型是**数据驱动(逐 K 线运行)**的,handlebar(ContextInfo) 函数会在每根 K 线上被调用一次。因此,如果主图周期变成了 15 分钟,策略就会每 15 分钟执行一次逻辑。

要将日线策略改为 15 分钟周期,您主要需要做以下几个方面的改动和确认:

1. 界面设置的改动(最基础)

在 QMT 的【策略编辑器】右侧的基本信息面板中,找到 默认周期,将其从“日线”修改为“15分钟线”。
注:如果在回测模式下,还需要在“回测参数”或主图行情界面将周期切换为 15 分钟。

2. 代码层面的改动(检查数据获取函数)

检查您的 Python 代码中是否“写死”了周期参数。主要检查以下几个函数:

  • ContextInfo.get_market_data()ContextInfo.get_history_data()
    如果您在获取数据时,period 参数写死了 '1d',需要将其改为 '15m',或者更推荐的做法是改为动态获取当前主图周期:
    # 错误示范(写死了日线):
    # df = ContextInfo.get_market_data(['close'], stock_code, period='1d')
    
    # 正确示范1(直接改为15分钟):
    df = ContextInfo.get_market_data(['close'], stock_code, period='15m')
    
    # 正确示范2(动态跟随主图周期,推荐):
    current_period = ContextInfo.period # 如果主图是15分钟,这里会返回 '15m'
    df = ContextInfo.get_market_data(['close'], stock_code, period=current_period)
    

3. 策略参数的重新调优(逻辑层面)

虽然代码逻辑可以无缝迁移,但金融市场的特性在不同周期下差异很大。日线级别的参数在 15 分钟级别通常不再适用,需要重新回测调优:

  • 均线/指标周期:日线策略中的 20 日均线代表近一个月的趋势;如果在 15 分钟线用 20 周期均线,它只代表过去 5 个小时(20 * 15分钟)的趋势。您可能需要成倍放大参数(例如改为 320 周期)或者寻找适合 15 分钟级别的新参数。
  • 滑点与手续费影响:15 分钟周期的交易频率通常远高于日线,这意味着交易成本(手续费和滑点)对策略收益的侵蚀会显著增加。在回测 15 分钟策略时,务必在 ContextInfo.set_commission()ContextInfo.set_slippage() 中设置真实的费率,以验证策略在扣除成本后是否依然盈利。
  • 日内效应:15 分钟策略会受到开盘(9:30-10:00)和尾盘(14:30-15:00)剧烈波动的影响,可能需要增加时间过滤条件(例如:if current_time > '14:45:00': 不开新仓)。

总结:在 QMT 中跨周期运行策略在技术实现上非常简单,只需改动 UI 设置和数据接口的 period 参数(改为 '15m')即可;但从量化研究的角度,务必重新进行回测和参数优化。