返回列表 发布新帖

QMT量化必看:这个变量坑过很多人,今天讲清楚

31 0
发表于 昨天 17:39 | 显示全部楼层 阅读模式

QMT里有个很隐蔽的坑:策略变量放在contextinfo里,每次handlebar刷新都会被重置——导致你以为只下了一单,其实下了一堆,这是一期非常重要QMT踩坑视频,在开始之前,还没有QMT、PTrade又想做量化的朋友可以随时找我。我们先来看一段策略代码:

image.png

这段代码很简单,就是先赋值一个is_traded---下单标记为False,(后面我们都叫这个is_traded变量为下单标记),然后在每三秒刷新一次的handlebar中先去检测这个下单标记是不是为False,如果为False,就对某个标的做一个限价下单1手的操作,然后再给我们的下单标记赋值为True,如果三秒后下一个handlebar刷新,检测到下单标记为True了,就直接输出个已下单,然后跳过,就不再下单了。这段代码按照逻辑来说是不是只会下一单?那我们来运行一下看看:

image.png

可以看到,程序在给我们三秒下一次原本设定好的委托单嗷,那这不符合代码逻辑啊是不是?我们下单之后明明把下单标记设置为True了,按道理下次handlebar刷新的时候会跳过下单啊?这其实是一个非常严重的问题,因为如果稍有不慎,这个问题会导致你的策略重复地下很多委托。什么原因我们来看官网截图:图上很明确了,contextinfo的变量在下一个handlebar刷新后不会保留,也就是说,contextInfo里的变量会随着handlebar的三秒刷新而重置,(别逗你contextinfo笑了),重置为False之后,是不是又会下单,然后继续重置继续下单...

image.png

然后解决方案也很简单,我们重建一个全局class,然后把下单标记放在新建的这个classs里,这样就规避了contextinfo的重置机制,这是更改之后的程序,我们来看看效果:可以看到程序再下了一次委托单之后,就提示已下单跳过了,问题完美解决。

image.png

我是为量化投资者提供专业技术服务的一线客户经理,各位在量化方面有什么问题可以随时问我。

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表