public void Set(QuickFix.Fields.OrigClOrdID val) { this.OrigClOrdID = val; }
protected void ProcessOrderCancelRequest(QuickFix.SessionID session, QuickFix.Fields.ClOrdID clordid, QuickFix.Fields.OrigClOrdID origordid , bool is_cancelreplace_request, int new_qty, double new_px, double new_stop_px) { IOrder order = null; try { // order exists ? OrderFixBridge order_bridge; lock (locker_) order_bridge = m_orders.AddOrGet(null, origordid.getValue(), session); if (order_bridge.Order == null) { RejectCancelRequest(session, clordid, origordid, null, "Unknown order !", QuickFix.Fields.CxlRejReason.UNKNOWN_ORDER, true); return; } order = order_bridge.Order; switch (order.OrderState) { // order is still alive, go ahead case OrderState.Accepted: case OrderState.PartFilled: case OrderState.Working: if (is_cancelreplace_request) { QuickFixStaticAcceptor.FromFIX_ChangeOrder(order, new_qty, new_px, new_stop_px); } else { QuickFixStaticAcceptor.FromFIX_CancelOrder(order); } return; // pending case OrderState.PendingChange: //VV? case OrderState.PendingSubmit: //VV? case OrderState.PendingCancel: //VV? { string error_message = "Invalid cancel or cancel/replace request since order " + origordid.getValue() + " is in pending state : " + order.OrderState.ToString(); RejectCancelRequest(session, clordid, origordid, order, error_message, QuickFix.Fields.CxlRejReason.ALREADY_PENDING, is_cancelreplace_request); return; } // terminal state case OrderState.Cancelled: case OrderState.Filled: case OrderState.Rejected: { string error_message = "Invalid cancel or cancel/replace request since order " + origordid.getValue() + " is in terminal/closed state : " + order.OrderState.ToString(); RejectCancelRequest(session, clordid, origordid, order, error_message, QuickFix.Fields.CxlRejReason.TOO_LATE_TO_CANCEL, is_cancelreplace_request); return; } case OrderState.Unknown: { string error_message = "Invalid cancel or cancel/replace request since order " + origordid.getValue() + " is in unknow NT7 state : " + order.OrderState.ToString(); RejectCancelRequest(session, clordid, origordid, order, error_message, QuickFix.Fields.CxlRejReason.OTHER, is_cancelreplace_request); return; } } } catch (Exception e) { RejectCancelRequest(session, clordid, origordid, order, "ProcessOrderCancelRequest : internal Error : " + e.ToString() , QuickFix.Fields.CxlRejReason.OTHER, is_cancelreplace_request); } }
protected void RejectCancelRequest(QuickFix.SessionID session, QuickFix.Fields.ClOrdID clordid, QuickFix.Fields.OrigClOrdID origordid, IOrder nt7_order, string rej_reason, int cxl_rej, bool is_cancelreplace_request) { QuickFix.FIX42.OrderCancelReject rej = new QuickFix.FIX42.OrderCancelReject(); if (nt7_order == null) { rej.Set(new QuickFix.Fields.OrderID("NONE")); } else { rej.Set(new QuickFix.Fields.OrderID(clordid.getValue())); } rej.Set(origordid); rej.Set(Converter.c(nt7_order.OrderState)); rej.Set(new QuickFix.Fields.CxlRejResponseTo(is_cancelreplace_request ? QuickFix.Fields.CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST : QuickFix.Fields.CxlRejResponseTo.ORDER_CANCEL_REQUEST)); rej.Set(new QuickFix.Fields.CxlRejReason(cxl_rej)); rej.Set(new QuickFix.Fields.Text(rej_reason)); rej.Set(new QuickFix.Fields.TransactTime(DateTime.Now, true)); QuickFix.Session.SendToTarget(rej, session); }
protected void ProcessOrderCancelRequest(QuickFix.SessionID session, QuickFix.Fields.ClOrdID clordid, QuickFix.Fields.OrigClOrdID origordid) { ProcessOrderCancelRequest(session, clordid, origordid, false, 0, 0, 0); }