public override void onMessage(QuickFix42.OrderCancelReject message, SessionID session) { OrderCancelReject reject = new OrderCancelReject(); // required fields reject.TransactTime = Clock.Now; reject.OrderID = message.getOrderID().getValue(); reject.ClOrdID = message.getClOrdID().getValue(); reject.OrigClOrdID = message.getOrigClOrdID().getValue(); (reject as FIXOrderCancelReject).OrdStatus = message.getOrdStatus().getValue(); (reject as FIXOrderCancelReject).CxlRejResponseTo = message.getCxlRejResponseTo().getValue(); (reject as FIXOrderCancelReject).CxlRejReason = message.getCxlRejReason().getValue(); // optional fields if (message.isSetSecondaryOrderID()) { reject.SecondaryOrderID = message.getSecondaryOrderID().getValue(); } if (message.isSetAccount()) { reject.Account = message.getAccount().getValue(); } if (message.isSetText()) { reject.Text = message.getText().getValue(); } // event provider.EmitOrderCancelReject(reject); }
public void OnOrderCancelReject(object sender, OrderCancelRejectEventArgs e) { if (OrderCancelReject != null) { QuickFix42.OrderCancelReject sourceCancelReject = e.OrderCancelReject; try { SmartQuant.FIX.OrderCancelReject cancelReject = new OrderCancelReject(); cancelReject.OrigClOrdID = sourceCancelReject.getOrigClOrdID().getValue(); cancelReject.ClOrdID = sourceCancelReject.getClOrdID().getValue(); cancelReject.OrderID = sourceCancelReject.getOrderID().getValue(); cancelReject.CxlRejReason = CxlRejReason.TooLateToCancel; //因国信没有详细撤单原因说明,暂且设置为这个。 cancelReject.CxlRejResponseTo = CxlRejResponseTo.CancelRequest; //因国信不支持订单取消替换,故只有此种错误类型。 cancelReject.Text = sourceCancelReject.getText().getValue(); OrderCancelReject(this, new SmartQuant.FIX.OrderCancelRejectEventArgs(cancelReject)); } catch (Exception ex) { EmitError(-1, -1, ex.Message); } } }