'获取开平仓的文字说明
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