🚀 AI 一键生成 qmt 策略代码

QMT 回测技巧:如何通过 Python 代码设置初始回测资金?

qmt | 发布时间: 2025/12/30
以下内容由 EasyQuant 生成。

问题描述

可以在代码里设置回测的初始资金吗?

解决方案

是的,您可以在 QMT 的策略代码中通过 ContextInfo.capital 属性来设置回测的初始资金。

设置方法

在策略的初始化函数 init(ContextInfo) 中,直接对 ContextInfo.capital 赋值即可。

注意规则:

  1. 优先级:如果在代码中设置了 ContextInfo.capital,它将覆盖策略编辑器界面中“回测参数”面板里设置的初始资金数值。
  2. 适用模式:该属性仅在回测模式下生效。

代码示例

以下是一个简单的示例代码,展示如何在初始化时将资金设置为 50 万元:

# -*- coding: gbk -*-

def init(ContextInfo):
    # 设置回测初始资金为 500,000 元
    ContextInfo.capital = 500000
    
    # 打印确认
    print(f"策略初始化完成,回测初始资金已设置为: {ContextInfo.capital}")

def handlebar(ContextInfo):
    # 策略运行逻辑
    pass

Q&A

Q: 如果我在代码里写了 ContextInfo.capital = 100000,但在界面上设置了 100万,回测时以哪个为准?
A: 以代码中的设置为准。代码中的 ContextInfo.capital 赋值优先级高于界面的回测参数设置,回测将以 100,000 元开始。

Q: ContextInfo.capital 可以在 handlebar 函数中动态修改吗?
A: ContextInfo.capital 主要用于设定初始资金,通常仅在 init 中设置。在 handlebar(盘中运行)修改该值通常没有实际意义,因为它代表的是起步资金,而非当前可用资金。如果需要获取当前可用资金,应使用 get_trade_detail_data 查询账号详情。

Q: 实盘模式下设置 ContextInfo.capital 有用吗?
A: 没有作用。实盘模式下,交易资金取决于您绑定的实际资金账号中的可用资金,ContextInfo.capital 仅用于回测时的模拟账户初始化。