以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助] vba 开平仓指令 的 bug  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=141684)

--  作者:lwp00751206
--  发布时间:2016/10/24 11:54:45
--  [求助] vba 开平仓指令 的 bug

用vba 发送1条开/平仓指令后,在没有任何成交的情况下有时会出现多条未成交纪录

     举个例子: 发送1条开多仓指令,开7手多仓,开仓价低于市场卖出价50个点,在没有任何成交的情况下,察看未成交单,

此时的未成交单数量是2,一个是3手的开多,一个是4手的开多,委托价一致,订单id不同,委托时间相同。

     这种情况不是每次执行委托指令都会出现。但这样会给整个程序带来很多麻烦,在处理和校验成交或未成交的时候都会造成计算量加倍,而且如果没有注意到这个bug会导致整个计算出错


--  作者:王锋
--  发布时间:2016/10/24 12:45:05
--  
VBA不会存在这个问题,建议你还是从你自己的代码中着手检查BUG吧
--  作者:lwp00751206
--  发布时间:2016/10/24 13:12:44
--  
怎么可能不存在,我这每条指令每个未成交单都有记录,每次都是循环历遍所有未成交单,同时记录,你们还是好好查一下,不要说的那么绝对,等我截图上来时你们就难堪了
--  作者:lwp00751206
--  发布时间:2016/10/24 13:15:38
--  
而且当出现多个未成交单时,出现的未成交单的id和开平指令中返回的id会不一致,
--  作者:王锋
--  发布时间:2016/10/24 13:15:41
--  

那提供一下交易日志吧,我们看一下日志你的VBA是怎么下单的


--  作者:lwp00751206
--  发布时间:2016/10/24 13:29:13
--  

我没有开启记录日志,这样会影响整个程序的速度,你们只要自己搞个简单的多手数下单,然后循环读取未成交进行比对,不管是实盘还是模拟的都可以,测半天的时间一定会看到

 


--  作者:lwp00751206
--  发布时间:2016/10/24 13:31:00
--  

我获取未成交用的是orderinfo2,从0开始循环

 


--  作者:yukizzc
--  发布时间:2016/10/24 14:33:18
--  

测试结果如下


图片点击可在新窗口打开查看此主题相关图片如下:43o%35a321ib6t{8{raft3.png
图片点击可在新窗口打开查看


--  作者:lwp00751206
--  发布时间:2016/10/24 16:05:01
--  

不是只是循环读取未成交,看来是我没表达清楚。

正确的循环体是:

 

循环开始:

   1:确认无未成交单存在

   2:发出一条开平指令

   3:历遍未成交

   4:撤掉开平,或确认成交,最终确认无未成交单存在

循环结束

 

在这个循环过程中有时就会出现只发出了一次开平指令,但在历遍未成交的过程中出现2个未成交单

 


--  作者:yukizzc
--  发布时间:2016/10/24 16:11:23
--  

你在buy后面跟上一条 msgout输出调试看呢

到底是发了几条开平指令,还是一条开平指令

另外把日志勾上,看下日志是怎么记录的,循环两次的报单还是循环一次内,两次发单