以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- OrderStatusEx2 事件 Status = Tradeing 时,相关参数不正确 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=51229) |
|
-- 作者:szp -- 发布时间:2013/4/19 15:16:23 -- OrderStatusEx2 事件 Status = Tradeing 时,相关参数不正确 在OrderStatusEx2 事件中,当Status = Tradeing 时, OrderID=0 Kaiping=0 Aspect=0 这是正常的吗????
|
|
-- 作者:王锋 -- 发布时间:2013/4/19 15:30:31 -- OrderID=0 这个似乎不太正常,但也不排除是正常。
|
|
-- 作者:szp -- 发布时间:2013/4/19 15:35:12 -- 应该是不正常吧, OrderID 都是 Sell,Buy,SellShort,BuyShort 返回的,而这几个函数都返回 一个非零的 Long ,如果为零则表示出错了,是哪出了问题呢?况且 KaiPing 和 Aspect 也不应该为零呀~~ |
|
-- 作者:szp -- 发布时间:2013/4/19 15:39:54 --
|
|
-- 作者:szp -- 发布时间:2013/4/19 15:44:44 -- 下面是我的VBA代码: \'获取开平仓的文字说明 Private Function GetKaiPingCangName(lngKP,lngAspect) On Error Resume Next If lngKP=0 Then If lngAspect=0 Then GetKaiPingCangName="开多仓" Else GetKaiPingCangName="开空仓" End If End If If lngKP=1 Then If lngAspect=0 Then GetKaiPingCangName="平空仓" Else GetKaiPingCangName="平多仓" End If End IF If lngKP=2 Then If lngAspect=0 Then GetKaiPingCangName="平今空仓" Else GetKaiPingCangName="平今多仓" End If End IF If Err.Number<>0 Then GetKaiPingCangName="未知" Exit Function End If End Function \'获取委托价格类型的中文名称 Private Function GetPriceTypeName(lngPriceType) On Error Resume Next Select Case lngPriceType Case 0 GetPriceTypeName="限价" Case 1 GetPriceTypeName="市价" Case 2 GetPriceTypeName="停损" Case 3 GetPriceTypeName="限价停损" Case Else GetPriceTypeName="未知" End Select If Err.Number<>0 Then GetPriceTypeName="未知" Exit Function End If End Function \'当委托挂单出现变化时发生,比如撤单、成交等 Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType) On Error Resume Next Dim ret Status=UCase(Status) Select Case Status Case "CANCELLED" \'表示挂单已经撤销 Call AddLog("(OrderStatusEx2)挂单已经撤销,挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled & _ ",未成交数量=" & Remaining,True) Case "PRESUBMITTED" \'表示挂单已经提交,当只成交一部分尚未完全成交时也会出现此事件,此时已成交数量在Filled参数中显示 Call AddLog("(OrderStatusEx2)挂单已经提交(PreSubmitted),挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled & _ ",未成交数量=" & Remaining,True) Case "SUBMITTED" \'表示挂单已经提交,当只成交一部分尚未完全成交时也会出现此事件,此时已成交数量在Filled参数中显示 Call AddLog("(OrderStatusEx2)挂单已经提交(Submitted),挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled & _ ",未成交数量=" & Remaining,True) Case "TRADEING" \'每笔成交回报,此时Filled是本次成交数量,Remaining将始终为0 Call AddLog("(OrderStatusEx2)挂单已经部分成交,挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",本次成交数量=" & Filled,True) Case "INACTIVE" \'表示本次委托无效,比如价格超过允许范围,委托数量超出范围等等 Call AddLog("(OrderStatusEx2)挂单委托无效,挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled & _ ",未成交数量=" & Remaining,True) Case "FILLED" \'表示本地挂单已经全部成交 Call AddLog("(OrderStatusEx2)挂单已经全部成交,挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled,True) End Select If Err.Number<>0 Then Call SetUILastError("Sub:ORDER_OrderStatus","(" & Err.Source & ")" & Err.Description & ",挂单ID=" & OrderID & ",帐户=" & Account & ",市场=" & Market & ",合约=" & Code & _ ",开平仓类型=" & GetKaiPingCangName(KaiPing,Aspect) & ",价格类型=" & GetPriceTypeName(OrderType) & ",价格=" & Price & ",已成交数量=" & Filled & _ ",未成交数量=" & Remaining) Exit Sub End If End Sub 2013-04-19 15:04:05.490 Function:szCloseOut,空头持仓清余,数量=3,价格=2536.0,合约=IF05,帐户=XXX 2013-04-19 15:04:05.490 Function:szCloseOut,以限价的方式平掉所有空头仓位下单成功,新挂单ID=-1784373228,数量=3,价格=2536.0,合约=IF05,帐户=XXX 2013-04-19 15:04:05.520 (OrderStatusEx2)挂单已经提交(Submitted),挂单ID=-1784373228,帐户=XXX,市场=ZJ,合约=IF05,开平仓类型=平今空仓,价格类型=限价,价格=2536,已成交数量=0,未成交数量=3 2013-04-19 15:04:05.650 (OrderStatusEx2)挂单已经提交(Submitted),挂单ID=-1784373228,帐户=XXX,市场=ZJ,合约=IF05,开平仓类型=平今空仓,价格类型=限价,价格=2536,已成交数量=0,未成交数量=3 2013-04-19 15:04:05.670 (OrderStatusEx2)挂单已经全部成交,挂单ID=-1784373228,帐户=XXX,市场=ZJ,合约=IF05,开平仓类型=平今空仓,价格类型=限价,价格=2536,已成交数量=3 2013-04-19 15:04:05.680 (OrderStatusEx2)挂单已经部分成交,挂单ID=0,帐户=XXX,市场=ZJ,合约=IF05,开平仓类型=开多仓,价格类型=限价,价格=2536,本次成交数量=3 日志表明 ,当Status = Tradeing 时, OrderID 总是 =0 Kaiping 总是 =0 Aspect 总是 =0 [此贴子已经被作者于2013-4-19 15:45:22编辑过]
|
|
-- 作者:王锋 -- 发布时间:2013/4/19 15:50:10 -- 不排除是你的代码记录问题, 建议你新建个工程, OrderStatusEx2 消息里只简单记录日志,然后再看看 |
|
-- 作者:szp -- 发布时间:2013/4/19 15:58:26 -- 好吧,只能下星期再测试了 |
|
-- 作者:szp -- 发布时间:2013/4/25 23:22:03 -- 代码没问题,但这个现象有时有有时没有,可能是模拟帐户的原因吧(用的是广发期货的股指仿真帐户),先不深究. |