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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → OrderStatusEx2 事件 Status = Tradeing 时,相关参数不正确

   

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


  共有3256人关注过本帖平板打印复制链接

主题:OrderStatusEx2 事件 Status = Tradeing 时,相关参数不正确

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


加好友 发短信
等级:论坛游民 帖子:130 积分:400 威望:0 精华:1 注册:2013/3/3 18:05:14
  发帖心情 Post By: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




下面是我自己用VBA记录的日志 :

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编辑过]

 回到顶部