以文本方式查看主题

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

--  作者:林华强
--  发布时间:2017/6/8 14:11:36
--  订单ID重复

因为4.1存在软件崩溃的问题,我把软件升级到4.2,但是却出现了下套利对订单ID重复的问题,输出的消息窗口显示cu跟ni订单ID都是705873434,但是从交易日志来看却不是这样的。请问这是什么问题?代码如下:

dim sendOrder1,sendOrder2,NewPrice1,NewPrice2,Report_CU,Report_NI
Sub TLStart()
    \'"""注册品种"""
    call marketdata.RegReportNotify("CU08", "SQ")
    call marketdata.RegReportNotify("NI09", "SQ")
End Sub

Sub MARKETDATA_ReportNotify(ReportData)
  \'"""处理行情推送"""
    set Report_CU = marketdata.GetReportData("CU08", "SQ") 
 set Report_NI = marketdata.GetReportData("NI09", "SQ")
 if ReportData.Label = "CU08" then
  NewPrice1 = Report_CU.NewPrice \'最新价          
  NewPrice2 = Report_NI.NewPrice
  if time = "14:01:00" then
         sendOrder1 = order.Buy(0,1,NewPrice1,0,"CU08", "SQ","",0)     
         sendOrder2 = order.Buyshort(0,1,NewPrice2,0,"NI09", "SQ","",0)
     end if
    end if
    application.MsgOut time&" ID1:"&sendOrder1&"   ID2:"&sendOrder2
end sub


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170608140328.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170608140432.png
图片点击可在新窗口打开查看

--  作者:yukizzc
--  发布时间:2017/6/8 14:30:39
--  

Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
 if Status = "Submitted" then
  call d.SetKey(OrderID,Price)
 end if

 

在下单事件里当订单提交后,去记录对应的id


--  作者:林华强
--  发布时间:2017/6/8 14:48:28
--  
一定要这样写?那么为什么我在4.2版本以前这样写就没有问题?
--  作者:yukizzc
--  发布时间:2017/6/8 15:02:04
--  

刚咨询了下,此处有点小bug。后面会修正

目前您可以按照我上面方式去解决


--  作者:林华强
--  发布时间:2017/6/8 15:09:11
--  
因为我需要保存订单ID与策略的映射关系,所以不能放到orderstatusex事件里。这个BUG是不是需要等到下个版本才能修复?


Function sendOrder(Market, vtSymbol, orderType, Price, Volume, name)
         \'"""发单"""
        application.MsgOut "调用trade函数"&OrderType
Select Case OrderType
Case 0 \'开多
    sendOrder = order.Buy(0,Volume,Price,0,vtSymbol,Market,"",0)  
    Case 1 \'平多
    sendOrder = order.Sell(0,Volume,Price,0,vtSymbol,Market,"",0)
    Case 2 \'开空
        sendOrder = order.Buyshort(0,Volume,Price,0,vtSymbol,Market,"",0)  
    Case 3 \'平空
        sendOrder = order.Sellshort(0,Volume,Price,0,vtSymbol,Market,"",0)
    end Select
    application.MsgOut "开仓方向:"&OrderType&" ID:"&sendOrder
    orderStrategyDict.Add sendOrder, strategyDict.Item(name) \'保存vtOrderID和策略的映射关系
        For Each key In orderStrategyDict \'循环遍历Dictionary键,并输出键值
            application.MsgOut key&":"&orderStrategyDict.Item(key).name_get&" "&name
        Next
End Function

--  作者:yukizzc
--  发布时间:2017/6/8 15:15:59
--  
shi de
--  作者:林华强
--  发布时间:2017/7/7 15:21:16
--  

这个订单号的bug在下个版本修复,大概什么时候会出来呢?


--  作者:王锋
--  发布时间:2017/7/7 16:23:53
--  

目前4.21正式版已经修复了


--  作者:林华强
--  发布时间:2017/7/7 16:29:51
--  
官网上还没看见4.21正式版,是不是还没发布呢?
--  作者:王锋
--  发布时间:2017/7/7 16:42:10
--  
下载区已经有了,建议认真看一下