QMT利用定时器解放双手
发布时间:4小时前阅读:8
九点二十坐到电脑前,茶还没喝一口,先点开 QMT 把策略跑起来;九点半一开盘价格就冲,你手忙脚乱想再补一个开盘后的调仓动作,结果发现策略只会跟着行情走,不会自己看表。这种靠人盯时间的日子,一天两天还行,做成习惯迟早出错。
先说清楚为什么会这样。QMT 的策略默认由行情驱动,来一根 K 线,回调函数跑一次,没有行情就没有动作。它并不知道"九点三十五"这个时刻意味着什么,除非你在代码里明确告诉它。所以想让程序自己看表,靠的不是行情推送,而是定时机制。
具体做法分四步。第一步,在策略初始化函数里注册定时任务,把执行时刻和对应函数登记好,只注册一次,别写在每根 K 线都会跑的位置,否则任务越积越多,同一时刻被触发好几遍。第二步,任务函数第一件事判断今天是不是交易日,非交易日直接返回,省得空跑。第三步,任务体保持轻量,只做查持仓、算目标、发单、写日志,重计算挪到别处,避免把行情线程堵住。第四步,每次执行打一条带时间戳的日志,事后能对照有没有漏跑、重跑。
还有一个容易踩的坑:定时任务和行情回调可能同时读写同一份状态,比如持仓表。两边都在改,一笔单就可能被算两次。稳妥的写法是给共享状态加锁,或者让定时任务只做标记,真正的下单统一回到主流程里执行,这样顺序是确定的。
调试阶段建议先把定时任务设成只打日志不下单,跑两天看看触发时间准不准,再逐步放开动作。很多人一上来就让它自动买卖,出了问题连是逻辑错还是触发错都分不清。
时间点怎么选也有讲究。开盘前的集合竞价、午后开盘、尾盘几分钟,这几个位置行情波动大、委托回报也可能延迟,定时任务放在这些时点,很容易拿到还没更新的持仓数据。稳妥的做法是把任务安排在行情稳定之后,比如开盘后过几分钟再动手,宁可晚一点,也别在数据还没落地时做决策。
判断有没有真的跑通,别只看当天。连续三个交易日,日志里的时间戳和你设定的时刻偏差在秒级,且没有重复下单、没有漏执行,这才算把双手解放出来了。
股票/量化开户欢迎找我!满足条件股票佣金万0.854、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!期权1.8元一张全包价!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
