问题描述
解决方案
是的,您可以在 QMT 的策略代码中通过 ContextInfo.capital 属性来设置回测的初始资金。
设置方法
在策略的初始化函数 init(ContextInfo) 中,直接对 ContextInfo.capital 赋值即可。
注意规则:
- 优先级:如果在代码中设置了
ContextInfo.capital,它将覆盖策略编辑器界面中“回测参数”面板里设置的初始资金数值。 - 适用模式:该属性仅在回测模式下生效。
代码示例
以下是一个简单的示例代码,展示如何在初始化时将资金设置为 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 仅用于回测时的模拟账户初始化。