protected override void OnRspQryOrderInfo(CLRDFITCOrderCommRtnField OrderData, CLRDFITCErrorRtnField ErrorInfo, bool bIsLast) { if (ProgramTradeEvents.RspEventHandler.ContainsKey(RspSpiModules.QryOrders) && null != ProgramTradeEvents.RspEventHandler[RspSpiModules.QryOrders]) { TypedRspEventArgs <CLRDFITCOrderCommRtnField, CLRDFITCErrorRtnField> evt = new TypedRspEventArgs <CLRDFITCOrderCommRtnField, CLRDFITCErrorRtnField> { RequestID = OrderData.lRequestID, ErrorID = ErrorInfo.nErrorID, Message = ErrorInfo.errorMsg, Data = OrderData, Error = ErrorInfo, IsLast = bIsLast }; Parallel.ForEach(ProgramTradeEvents.RspEventHandler[RspSpiModules.QryOrders].GetInvocationList(), handler => { (handler as EventHandler <RspEventArgs>).BeginInvoke(this, evt, null, null); }); } }
public static OrderDetail CreateDetail(CLRDFITCOrderCommRtnField order) { OrderDetail result = new OrderDetail(); result.OrderSysID = order.spdOrderID; switch (order.exchangeID) { case "DCE": result.ExchangeID = ExchangeID.DCE; break; case "CZCE": result.ExchangeID = ExchangeID.CZCE; break; case "CFFEX": result.ExchangeID = ExchangeID.CFFEX; break; case "SHFE": result.ExchangeID = ExchangeID.SHFE; break; } result.InstrumentID = order.instrumentID; switch (order.openClose) { case (int)CLRDFITCOpenCloseType.SPD_OPEN: result.Operation = Operation.Open; break; case (int)CLRDFITCOpenCloseType.SPD_CLOSE: result.Operation = Operation.Close; break; } switch (order.buySellType) { case (short)CLRDFITCBuySellType.SPD_BUY: result.Direction = Direction.Buy; break; case (short)CLRDFITCBuySellType.SPD_SELL: result.Direction = Direction.Sell; break; } result.LimitPrice = order.insertPrice; result.Volume = order.orderAmount; result.MatchedPrice = order.matchedPrice; result.MatchedVolume = order.matchedAmount; switch (order.orderStatus) { case (short)CLRDFITCOrderAnswerStatusType.SPD_CANCELED: result.OrderStatus = OrderState.AllCanceled; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_FILLED: result.OrderStatus = OrderState.AllDealed; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_IN_QUEUE: result.OrderStatus = OrderState.Queuening; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_PARTIAL: result.OrderStatus = OrderState.PartialDealed; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_PARTIAL_CANCELED: result.OrderStatus = OrderState.PartialCaneled; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_IN_CANCELING: result.OrderStatus = OrderState.Canceling; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_ERROR: result.OrderStatus = OrderState.Error; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_PLACED: result.OrderStatus = OrderState.Placed; break; case (short)CLRDFITCOrderAnswerStatusType.SPD_TRIGGERED: result.OrderStatus = OrderState.Triggered; break; } return(result); }