以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  vba怎么限制重复下单  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=55588)

--  作者:qq代人发帖
--  发布时间:2013/8/23 10:33:04
--  vba怎么限制重复下单
请教
vba怎么限制重复下单
call order.Buy(0,1,Jbuy,0,TCode,TMarket,"",0)
常常一次下两单,加了时间限制也不行
[此贴子已经被作者于2013/8/23 10:33:31编辑过]

--  作者:rushtaotao
--  发布时间:2013/8/23 10:42:57
--  

你这里写的手数是1 一次下单就是一手!要限制你可以用持仓或者其他限制办法 加到if判断语句里

另外以后代码最好发完整点 就这么一行代码 是不能直接告诉你问题所在的


--  作者:王锋
--  发布时间:2013/8/23 10:50:39
--  

参考 order.OrderInfo2方法,下单前查询未成交单,若存在未成交单则本次不要再下了

此外你还可以考虑使用时间记录,下单后记录下单时的计算机时间,再次下单时判断当前时间与上次下单时间的差,如果小于3秒(用户自定)等情况就拒绝再次下单来解决

[此贴子已经被作者于2013/8/23 10:51:52编辑过]

--  作者:Marcus
--  发布时间:2013/8/23 23:46:47
--  
以下是引用qq代人发帖在2013/8/23 10:33:04的发言:
请教
vba怎么限制重复下单
call order.Buy(0,1,Jbuy,0,TCode,TMarket,"",0)
常常一次下两单,加了时间限制也不行
[此贴子已经被作者于2013/8/23 10:33:31编辑过]

我自己写过一段代码用于高频套利,你可以参考:
0. 检查仓位是否与策略一致,如果不一致则进入#1
1. 先检查是否有未成交单,如果有未成交单则调用ORDER指令撤销之,并等待2秒进入#2;否则进入#3
2. 再次确认没有未成交单,如果还有未成交单则调用ORDER指令撤销之(这次不等2秒了),然后进入#3
3. 立即开新单,开单数量根据仓位以及策略数量的差值而定
--  作者:Marcus
--  发布时间:2013/8/23 23:53:30
--  
 补充一点,下单后延时2秒检验仓位。
大多数情况下,主力合约对价位加几档滑点都能迅速成交,未成交单延时检查再定价追单基本可以处理你的问题。
[此贴子已经被作者于2013/8/23 23:54:08编辑过]