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);
        }
Beispiel #2
0
 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);
         }
     }
 }