欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 下单队列问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3845人关注过本帖树形打印复制链接

主题:下单队列问题

帅哥哟,离线,有人找我吗?
wsanle
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
下单队列问题  发帖心情 Post By: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:在发出撤单指令完成撤单后,我如果继续委托(先平多仓,再反手开空仓),是否必须将上面发单指令代码组的全部代码重新执行一次,还是只需要重新发出平仓指令即可?


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/3/26 0:13:36 [只看该作者]

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

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

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
wsanle
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
  发帖心情 Post By:2013/3/26 10:59:57 [只看该作者]

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/3/26 13:27:19 [只看该作者]

看了你的描述,

这里解释如下:

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

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
wsanle
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
  发帖心情 Post By:2013/3/26 15:10:57 [只看该作者]

谢谢王峰,根据你的提示,我做了试验,确实如此,如果平仓报单未成交,撤单是撤平仓报单,如果选择 “之前报单完成成交后再顺序报单”这个选项,这样撤销平仓保单后,队列中的反手开仓也就取消了。谢谢了!

 回到顶部
帅哥哟,离线,有人找我吗?
wsanle
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
  发帖心情 Post By:2013/3/26 15:37:33 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/3/26 15:59:02 [只看该作者]

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



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部