3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化交易平台中,您可以通过在 init(ContextInfo) 函数中赋值 ContextInfo.start 和 ContextInfo.end 变量来直接指定回测的起止日期。
在策略代码的初始化函数 init 中添加如下代码即可:
#coding:gbk
def init(ContextInfo):
# 设置回测开始时间,格式为 'YYYY-MM-DD HH:MM:SS'
ContextInfo.start = '2022-01-01 09:30:00'
# 设置回测结束时间,格式为 'YYYY-MM-DD HH:MM:SS'
ContextInfo.end = '2022-12-31 15:00:00'
# 设置回测基准(可选)
ContextInfo.benchmark = '000300.SH'
# 设定股票池等其他初始化操作
ContextInfo.set_universe(['600000.SH'])
def handlebar(ContextInfo):
# 策略核心逻辑
pass
ContextInfo.start 和 ContextInfo.end,代码中的设置优先级高于策略编辑器界面“回测参数”面板中的设置。这意味着系统会忽略界面上填写的日期,强制使用代码中指定的时间段进行回测。'YYYY-MM-DD HH:MM:SS'(例如 '2023-01-01 09:30:00')。init 函数中进行设置,且建议在 init 的前几行设置,确保在策略加载初期即生效。ContextInfo.end 小于或等于 ContextInfo.start,回测计算范围将为空,导致回测无法正常进行。Q: 如果我在代码里写了日期,但界面上也设置了不同的日期,QMT 会以哪个为准?
A: QMT 会以代码里设置的日期为准。代码中的 ContextInfo.start 和 ContextInfo.end 具有更高的优先级,会覆盖界面上的回测参数设置。
Q: 这个设置会影响实盘交易吗?
A: 不会。ContextInfo.start 和 ContextInfo.end 仅用于定义历史回测的时间区间。实盘模式下,策略是跟随实时行情数据驱动运行的,这两个参数无效。
Q: 时间格式必须包含时分秒吗?
A: 建议包含时分秒以确保精确性,标准格式为 'YYYY-MM-DD HH:MM:SS'。如果只写日期(如 '2023-01-01'),系统可能无法正确解析或默认补全为 0 点,建议严格遵守标准格式。