问题描述
我一直都在用 order_target_percent 下单,,到现在都还用着,今天突然看到知识库里标着仅回测可用。请问是要改版了吗
解决方案
您好!不用担心,在 QMT 平台中,order_target_percent 函数是完全支持实盘使用的,并没有进行仅限回测的调整。
为什么会看到“仅回测可用”?
您在某些知识库或文档中看到“仅回测可用”的标注,可能是以下几种情况:
- 文档错误或滞后:部分非官方或早期的文档可能存在描述不准确的情况。
- 混淆了其他平台:某些其他的量化平台(如聚宽等)的早期版本中,部分高级下单函数可能在实盘对接时存在限制,导致文档中有类似说明,但这不适用于 QMT。
- 模拟运行模式限制:根据 QMT 官方 API 文档说明:“模拟运行模式下交易函数无效”。这指的是在不接入真实柜台的纯模拟运行(非实盘、非回测)状态下,交易函数不会产生实际委托,但这并不意味着它不能用于真正的实盘。
QMT 官方文档说明
根据 QMT 官方 Python API 文档,order_target_percent 属于标准的股票下单函数之一:
用法:
order_target_percent(stockcode, tar_percent[, style, price], ContextInfo[, accId])
释义: 指定目标比例交易,买入 / 卖出证券以自动调整该证券的仓位到占有一个指定的投资组合的目标百分比。投资组合价值等于所有已有仓位的价值和剩余现金的总和。
官方文档明确指出:“实盘运行调用策略中设置的资金账号进行交易,产生实际委托”。因此,只要您的策略在实盘模式下运行,并且资金账号设置正确,order_target_percent 就能正常向柜台发送真实的交易指令。
实盘使用注意事项
在实盘中继续使用 order_target_percent 时,请注意以下几点:
- 资金与持仓计算:该函数依赖于当前账户的总资产(可用资金 + 持仓市值)。在实盘中,由于行情波动和资金同步的延迟,计算出的目标股数可能会有微小偏差。
- 整手向下取整:买/卖单会被向下舍入为 100 的倍数(A股 1 手 = 100 股)。
- 资金不足处理:如果账户可用资金不足以达到目标比例,API 将不会创建发送订单,请确保账户留有足够的资金余量。
示例代码
def init(ContextInfo):
# 设置实盘资金账号
ContextInfo.set_account('您的实盘资金账号')
def handlebar(ContextInfo):
# 按最新价下买入调仓到 5.1% 持仓
order_target_percent('000002.SZ', 0.051, ContextInfo, '您的实盘资金账号')
# 用指定价 37.5 调仓到 10.2% 持仓
order_target_percent('000002.SZ', 0.102, 'fix', 37.5, ContextInfo, '您的实盘资金账号')
总结:您可以放心继续在实盘中使用 order_target_percent,QMT 并没有对其进行改版或限制。