QMT 策略里最容易写错的一行,是下单数量
发布时间:1小时前阅读:5
新手写第一个策略,逻辑往往是对的,方向也对,但跑出来的成交量和预期差得离谱。问题经常不在策略思路,而在下单数量那一行。
这一行出错,有三种典型情况。
1、把金额当成股数。策略里算出来"这次买两万块",直接把这个数字传给下单接口,结果系统理解为买两万股。两万块的股票可能是一千股,也可能是一百股,取决于价格。正确做法是先按当前价格算出股数,再取整到一手的整数倍,最后才下单。
2、忘了取整。A股买入必须是100股的整数倍,科创板等板块另有规则。算出来的股数带小数,或者不是整百,接口会直接拒绝。日志里会看到委托失败,但如果不看日志,你只会觉得策略没反应。
3、可用资金和可用持仓分不清。想卖的时候用了总持仓而不是可用持仓,T+1 制度下当天买入的股票不可卖,委托就会被拒。想买的时候用了总资产而不是可用资金,同样会被拒。
这三件事有一个共同的解决办法:下单前把数量、价格、可用资金、可用持仓四个数字打进日志。跑一次就能看出哪一项不对。
判断标准:每次下单前,日志里应该能看到"准备买入某某,价格多少,数量多少,占用资金多少"。这一行没有,出了问题就只能靠猜。
还有一个隐藏得比较深的问题:价格精度。有些品种的价格最小变动单位不是0.01,比如部分基金是0.001。策略里如果按两位小数处理价格,委托可能因为价格不符合规则被拒。这类错误回测里不会暴露,因为回测的撮合逻辑比较宽松,只在实盘或者仿真严格的环境里才显现。
再补一条实践建议:把下单封装成一个独立函数,所有数量计算、取整、校验都放在里面,策略主体只调用这个函数。这样以后修改规则只需要改一处,不会出现某个策略改好了、另一个还留着老问题的局面。
补一个最常见的现场:策略本来想买一千股,结果买了一万股,占了八成仓位。第二天行情不好,亏损失去控制。这类事故的根子都在同一处,就是数量这一行没人复核。养成习惯,下单前把数量打印出来,对着当前价格心算一下占用金额,几十秒的事,能挡掉大部分事故。
股票开户欢迎找我!可以申请万0.854的股票佣金、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
