以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  下单队列问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=50241)

--  作者:wsanle
--  发布时间:2013/3/25 22:59:46
--  下单队列问题

管理员,有两组指令请帮忙解答如下问题,谢谢!

      发单指令代码组:

      Order.OrderQueue = 1             
      call order.sell(1,1,0,0,“IF04”,“ZJ”,“800000”,0)
      call order.BuyShort(1,1,0,0,“IF04”,“ZJ”,“800000”,0)

 

      撤单指令代码组:

      Result=Order.OrderInfoByCode2(,“IF04”,"ZJ”, OrderID, ConSign, Filled, Remaining, Action,    OrderType, LmtPrice, Account, Kaiping)
       If Result=1 Then
          call Order.CancelOrder(OrderID)

       End If


问题1:两下单指令入队列后,先平多仓,成交后再反手开空仓,好理解。如果平多仓指令在一段时间后未成交(5秒),我发出查询有无未成交订单指令,此时的回报的未成交信息(Result=1),是指平仓未成交?开仓未成交?还是平仓开仓都未成交?

问题2:在平仓未成交时(反手开仓尚未执行),我此时发出撤单指令,是只撤销平仓指令,还是平仓指令和反手开仓指令成对都撤销?如果是都撤销是我需要的结果,否则撤销了平仓指令的同时,反手开仓继续执行的话,我的资金就会不足了。

问题3:在发出撤单指令完成撤单后,我如果继续委托(先平多仓,再反手开空仓),是否必须将上面发单指令代码组的全部代码重新执行一次,还是只需要重新发出平仓指令即可?


--  作者:王锋
--  发布时间:2013/3/26 0:13:36
--  

问题1,OrderInfoByCode2这个只返回指定品种的未成交订单,如果同一个品种存在多个未成交单,那么可能会随机返回一个。如果你需要遍历整个未成交单,包括一个品种的多个订单,那么你应该使用 OrderInfo2 方法 进行遍历,取得所有未成交单信息进行处理

撤单时只撤 OrderID 这笔挂单,其他均不影响。

建议你多用Application.msgout函数用模拟账户进行调试一下便知


--  作者:wsanle
--  发布时间:2013/3/26 10:59:57
--  

王峰老师,按您的意思我理解:

1、在打开Order.OrderQueue=1时候,如果同时下了平仓和反手开仓的订单,如果平仓单未成交,开仓单肯定也未执行,此时用Order.OrderInfoByCode2检测是否有未成交的订单,回报的可能是平仓的挂单,也可能是反手开仓的挂单,是随机的,此时用call Order.CancelOrder(OrderID)撤单,可能撤销的是平仓挂单,也可能是反手开仓的挂单,取决于OrderID返回的挂单号。我的问题是,如果我撤销了平仓挂单,没有撤销后面的反手开仓挂单,如果账号资金足够,是不是会执行反手开仓挂单?

2、如果我只撤销了平仓挂单,马上继续追加挂平仓单,是否也不会成交,因为队列前面还有反手开仓单没有撤销,必须将平仓和反手开仓单一起撤销后,再发出平仓和反手开仓挂单?


--  作者:王锋
--  发布时间:2013/3/26 13:27:19
--  

看了你的描述,

这里解释如下:

在打开Order.OrderQueue=1时候,金字塔会按照队列报单,也就是只会报第一笔,第二笔放在队列中不会报单,如果你查询未成交单的话只会查到第一笔。

如果撤单成功,那么在默认情况下第二笔报单会随之报出去,如果你希望第一笔报单撤单后撤销队列里的报单,那么你应该在 交易菜单-》下单设置-》程序化交易 选项卡中,选择 “之前报单完成成交后再顺序报单”这个选项


--  作者:wsanle
--  发布时间:2013/3/26 15:10:57
--  
谢谢王峰,根据你的提示,我做了试验,确实如此,如果平仓报单未成交,撤单是撤平仓报单,如果选择 “之前报单完成成交后再顺序报单”这个选项,这样撤销平仓保单后,队列中的反手开仓也就取消了。谢谢了!
--  作者:wsanle
--  发布时间:2013/3/26 15:37:33
--  

另外请教王峰老师,在下单设置选择“之前报单完成成交后再顺序报单”这个选项时,弹出”使用时注意:在策略里的报单至少需要2笔以上的委托单,如果只往队列中报单一笔,那么金字塔将会在2秒钟之后才开始处理这一笔保单“的提示,这里说说的至少2笔是什么意思,是说今天这个策略至少有2笔委托先后发送到队列,还是必须是同时发送2笔委托到队列?按前者理解,即今天发送第一笔委托时,会在队列中等待延迟2秒才报单,今天第2笔委托就不再在队列中延迟2秒了,是这样吗?


--  作者:王锋
--  发布时间:2013/3/26 15:59:02
--  

在第二笔队列插入后才马上对第一笔报单进行委托处理。如果第二笔报单迟迟未报,那么再等待2秒后不再等待