public virtual void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { if (this.IsConnected) { this.application.Send((FIXOrderCancelReplaceRequest)request); } else { OrderCancelReject reject = new OrderCancelReject(); reject.TransactTime = Clock.Now; reject.OrigClOrdID = request.OrigClOrdID; reject.ClOrdID = reject.OrigClOrdID; reject.CxlRejResponseTo = FreeQuant.FIX.CxlRejResponseTo.CancelReplaceRequest; reject.CxlRejReason = FreeQuant.FIX.CxlRejReason.BrokerOption; reject.OrdStatus = FreeQuant.FIX.OrdStatus.Undefined; reject.Text = BeAEwTZGlZaeOmY5cm.J00weU3cM6(4342); if (this.GZq4XSlmZH != null) { this.GZq4XSlmZH((object)this, new OrderCancelRejectEventArgs(reject)); } if (this.j4t4Wyi2Ea == null) { return; } this.j4t4Wyi2Ea(new ProviderErrorEventArgs((IProvider)this, -1, -1, BeAEwTZGlZaeOmY5cm.J00weU3cM6(4396))); } }
private void OnMessage(OrderCancelReject @event) { this.EventCount++; this.Logger.LogWarning(LogId.Trading, $"{Received}{Event} {@event}."); this.SendToEventPublisher(@event); }
private void EmitOrderCancelReject(OrderCancelReject reject) { if (OrderCancelReject != null) { OrderCancelReject(this, new OrderCancelRejectEventArgs(reject)); } }
public virtual void SendOrderCancelReplaceRequest(FreeQuant.FIX.OrderCancelReplaceRequest request) { if (this.IsConnected) { this.application.Send(request); } else { OrderCancelReject reject = new OrderCancelReject(); reject.TransactTime = Clock.Now; reject.OrigClOrdID = request.OrigClOrdID; reject.ClOrdID = reject.OrigClOrdID; reject.CxlRejResponseTo = SmartQuant.FIX.CxlRejResponseTo.CancelReplaceRequest; reject.CxlRejReason = SmartQuant.FIX.CxlRejReason.BrokerOption; reject.OrdStatus = SmartQuant.FIX.OrdStatus.Undefined; reject.Text = BeAEwTZGlZaeOmY5cm.J00weU3cM6(2480); if (this.B02KF0Hm96 != null) { this.B02KF0Hm96((object)this, new OrderCancelRejectEventArgs(reject)); } if (this.e4HAgJhCB == null) { return; } this.e4HAgJhCB(new ProviderErrorEventArgs((IProvider)this, -1, -1, BeAEwTZGlZaeOmY5cm.J00weU3cM6(2534))); } }
private void EmitOrderCancelReject(OrderCancelReject reject) { if (this.OrderCancelReject == null) { return; } this.OrderCancelReject((object)this, new OrderCancelRejectEventArgs(reject)); }
public void EmitOrderCancelReject(OrderCancelReject reject) { if (this.B02KF0Hm96 == null) { return; } this.B02KF0Hm96((object)this, new OrderCancelRejectEventArgs(reject)); }
public void EmitOrderCancelReject(OrderCancelReject reject) { if (this.GZq4XSlmZH == null) { return; } this.GZq4XSlmZH((object)this, new OrderCancelRejectEventArgs(reject)); }
internal void EmitCancelReject(OrderCancelReject reject) { this.OrdStatus = reject.OrdStatus; this.rejects.Add(reject); if (this.CancelReject != null) { this.CancelReject(this, new OrderCancelRejectEventArgs(reject)); } }
/// <summary> /// OrderCancelReject message handler /// </summary> private void OnOrderCancelReject(OrderCancelReject message) { if (message.getRequestID() == _currentRequest) { Log.Trace("Order update or cancellation rejected: {0}", message.getFXCMErrorDetails().Replace("\n", "")); _isOrderUpdateOrCancelRejected = true; _mapRequestsToAutoResetEvents[_currentRequest].Set(); _mapRequestsToAutoResetEvents.Remove(_currentRequest); } }
private static void OnOrderCancelReject(object sender, OrderCancelRejectEventArgs e) { OrderCancelReject orderCancelReject = e.OrderCancelReject; SingleOrder order = OrderManager.orders.All[orderCancelReject.OrigClOrdID] as SingleOrder; if (orderCancelReject.OrdStatus == OrdStatus.Undefined) { orderCancelReject.OrdStatus = OrdStatus.New; ArrayList arrayList = new ArrayList((ICollection)order.Reports); arrayList.Reverse(); foreach (ExecutionReport executionReport in arrayList) { switch (executionReport.OrdStatus) { case OrdStatus.PendingCancel: case OrdStatus.PendingNew: case OrdStatus.PendingReplace: continue; default: orderCancelReject.OrdStatus = executionReport.OrdStatus; goto label_10; } } } label_10: OrdStatus ordStatus = order.OrdStatus; order.EmitCancelReject(orderCancelReject); if (OrderManager.OrderCancelReject != null) { OrderManager.OrderCancelReject(sender, new OrderCancelRejectEventArgs(order, orderCancelReject)); } if (order.IsDone) { if (!OrderManager.EnablePartialTransactions) { OrderManager.nf3XP7Xf3(order, orderCancelReject.TransactTime, order.AvgPx, order.CumQty); } OrderManager.YUArMfFNj(order); } else { if (ordStatus == order.OrdStatus) { return; } OrderManager.orders.Update(order); order.EmitStatusChanged(); OrderManager.EmitOrderStatusChanged(order); } }
public void SendOrderCancelRequest(FIXOrderCancelRequest request) { if (!this.isConnected) { this.EmitError(this.Id, -1, "The TDXTradeProvider is not connected."); } string origOuterOrderID = request.OrigClOrdID; OrderRecord orderRecord = this.orders.GetRecord(origOuterOrderID, 1); if (orderRecord == null) { string errorInfo = "要取消的订单没有记录。"; this.EmitError(this.Id, -1, errorInfo); OrderCancelReject report = new OrderCancelReject(); report.TransactTime = DateTime.Now; report.OrigClOrdID = request.OrigClOrdID; report.ClOrdID = request.ClOrdID; report.CxlRejReason = CxlRejReason.UnknownOrder; report.CxlRejResponseTo = CxlRejResponseTo.CancelRequest; report.Text = errorInfo; report.OrdStatus = OrdStatus.Rejected; if (OrderCancelReject != null) { OrderCancelReject(this, new OrderCancelRejectEventArgs(report)); } return; } string origInnerOrderID = orderRecord.InnerOrderID; ReportArgs rargs = this.trader.CancelOrder(origInnerOrderID); if (rargs.Succeeded) { Thread.Sleep(1000); this.updateOrders(); } else { this.EmitError(this.Id, -1, rargs.ErrorInfo); OrderCancelReject report = new OrderCancelReject(); report.TransactTime = DateTime.Now; report.OrigClOrdID = request.OrigClOrdID; report.ClOrdID = request.ClOrdID; report.CxlRejReason = CxlRejReason.BrokerOption; report.CxlRejResponseTo = CxlRejResponseTo.CancelRequest; report.Text = rargs.ErrorInfo; report.OrdStatus = OrdStatus.Rejected; if (OrderCancelReject != null) { OrderCancelReject(this, new OrderCancelRejectEventArgs(report)); } } }
private void EmitOrderCancelReject(OrderRecord record, OrdStatus ordStatus, CxlRejResponseTo responseTo, string text) { OrderCancelReject reject = new OrderCancelReject(); reject.TransactTime = Clock.Now; reject.ClOrdID = ((FIXNewOrderSingle)record.Order).ClOrdID; reject.OrigClOrdID = ((FIXNewOrderSingle)record.Order).ClOrdID; reject.OrdStatus = ordStatus; reject.CxlRejResponseTo = responseTo; reject.CxlRejReason = CxlRejReason.BrokerOption; reject.Text = text; this.EmitOrderCancelReject(reject); }
/// <summary> /// OrderCancelReject message handler /// </summary> private void OnOrderCancelReject(OrderCancelReject message) { if (message.getRequestID() == _currentRequest) { var messageText = message.getFXCMErrorDetails().Replace("\n", ""); Log.Trace("FxcmBrokerage.OnOrderCancelReject(): " + messageText); OnMessage(new BrokerageMessageEvent(BrokerageMessageType.Warning, "OrderUpdateOrCancelReject", messageText)); _isOrderUpdateOrCancelRejected = true; _mapRequestsToAutoResetEvents[_currentRequest].Set(); _mapRequestsToAutoResetEvents.Remove(_currentRequest); } }
/// <summary> /// /// </summary> /// <param name="message"></param> /// <param name="session"></param> public void OnMessage(OrderCancelReject message, SessionID session) { try { TODropCopyDB to = new TODropCopyDB(); to.MensagemQF = message; to.Sessao = session; to.TipoMsg = MsgType.ORDER_CANCEL_REJECT; this._addMessage(to); } catch (Exception ex) { logger.Error("Problemas no processamento da mensagem de OrderCancelReject: " + ex.Message, ex); } }
// OrderCancelReject message handler private void OnOrderCancelReject(OrderCancelReject orderCancelReject) { Console.WriteLine("OnOrderCancelReject()"); Console.WriteLine("\tRequestId = {0}", orderCancelReject.getRequestID()); Console.WriteLine("\tgetAccount() = " + orderCancelReject.getAccount()); Console.WriteLine("\tgetOrderID() = " + orderCancelReject.getOrderID()); Console.WriteLine("\tgetCxlRejReason() = " + orderCancelReject.getCxlRejReason()); Console.WriteLine("\tgetFXCMErrorDetails() = " + orderCancelReject.getFXCMErrorDetails()); Console.WriteLine(); if (orderCancelReject.getRequestID() == _currentRequest) { _requestOrderEvent.Set(); } }
protected void EmitCancelReject(SingleOrder order, OrdStatus status, string message) { OrderCancelReject reject = new OrderCancelReject { TransactTime = Clock.Now, ClOrdID = order.ClOrdID, OrigClOrdID = order.ClOrdID, OrderID = order.OrderID, CxlRejReason = CxlRejReason.BrokerOption, CxlRejResponseTo = CxlRejResponseTo.CancelRequest, OrdStatus = status }; EmitOrderCancelReject(reject); }
public static OrderCancelReject CreateOrderCancelReplaceReject(OrderCancelReplaceRequest msg, int rejectReason, string rejectReasonText) { var orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID"; var ocj = new OrderCancelReject( new OrderID(orderid), msg.ClOrdID, msg.OrigClOrdID, new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST)) { CxlRejReason = new CxlRejReason(rejectReason), Text = new Text(rejectReasonText) }; return ocj; }
public static OrderCancelReject CreateOrderCancelReplaceReject(OrderCancelReplaceRequest msg, int rejectReason, string rejectReasonText) { var orderid = (msg.IsSetOrderID()) ? msg.OrderID.Obj : "unknown orderID"; var ocj = new OrderCancelReject( new OrderID(orderid), msg.ClOrdID, msg.OrigClOrdID, new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REPLACE_REQUEST)) { CxlRejReason = new CxlRejReason(rejectReason), Text = new Text(rejectReasonText) }; return(ocj); }
internal void CanSerializeAndDeserialize_OrderCancelRejectEvents() { // Arrange var order = new StubOrderBuilder().BuildStopLimitOrder(); var cancelReject = new OrderCancelReject( AccountId.FromString("FXCM-02851908-DEMO"), order.Id, StubZonedDateTime.UnixEpoch(), "REJECT_RESPONSE?", "ORDER_NOT_FOUND", Guid.NewGuid(), StubZonedDateTime.UnixEpoch()); // Act var packed = this.serializer.Serialize(cancelReject); var unpacked = (OrderCancelReject)this.serializer.Deserialize(packed); // Assert Assert.Equal(cancelReject, unpacked); this.Output.WriteLine(Convert.ToBase64String(packed)); }
/// <summary> /// Manipulacao do dicionario em situacoes /// (Mensagens de Order Cancel Reject - OCR) /// </summary> /// <param name="ss"></param> /// <param name="dic"></param> /// <param name="strChave"></param> //public void VerifyOrderSituationOCR(SessionID ss, Dictionary<string, TOOrderSession> dic, string strChave) // OBS :strChave sempre ClOrdID até momento public void VerifyOrderSituationOCR(OrderCancelReject msg, SessionID ss, OrderSessionManager dic, string strChave, string strChaveExch) { try { if (null != ss) // Registry found { TOOrderSession aux = null; dic.GetOrder(strChave, out aux); if (null != aux && msg.IsSetField(Tags.OrderID) && msg.OrderID.getValue() != "NONE") { if (msg.IsSetField(Tags.Account)) { aux.ExchangeNumberID = msg.OrderID.getValue() + "-" + msg.Account.getValue() + "-" + msg.Symbol.getValue(); } } // Se houve rejeicao de cancelamento, entao somente excluir do dicionario lock (dic) { TOOrderSession toOS = null; int ret = dic.GetOrder(strChave, out toOS, strChaveExch); if (null != toOS) { if (ret == FindType.EXCHANGE_NUMBER) { dic.RemoveOrder(toOS.ChaveDicionario); } else { dic.RemoveOrder(strChave); } } toOS = null; } } } catch (Exception ex) { logger.Error("VerifyOrderSituationOCR(): " + ex.Message, ex); } }
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); } } }
/// <summary> /// Handles <see cref="OrderCancelReject"/> messages. /// </summary> /// <param name="message">The FIX message.</param> /// <param name="sessionId">The session identifier.</param> public void OnMessage(OrderCancelReject message, SessionID sessionId) { this.FixMessageHandler.OnMessage(message); }
private void OnMessage(OrderCancelReject @event) { this.SendToBus(@event); }
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); }
private void OnMessage(OrderCancelReject @event) { this.ReceivedObjects.Add(@event); }
public void ProcessOrderCancelReject(QuickFix.Message msg, string bolsa) { try { OrderCancelReject ocr = (OrderCancelReject)msg; // Buscar a ordem original a partir do OrigClOrdID string clordid = ocr.ClOrdID.getValue(); int account; if (bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase)) { string acc = ocr.IsSetAccount()? ocr.Account.getValue(): string.Empty; if (!string.IsNullOrEmpty(acc)) { acc = (acc.Remove(acc.Length - 1)); account = 0; } else { account = 0; } } else { account = ocr.IsSetAccount()? Convert.ToInt32(ocr.Account.getValue()): 0; } OrderDbInfo orderOrig = null; if (account != 0) { orderOrig = _db.BuscarOrdem(clordid, account, ocr.Symbol.getValue()); } else { orderOrig = _db.BuscarOrdemPorClOrdEOrigClOrd(clordid, ocr.OrigClOrdID.getValue(), ocr.Symbol.getValue()); } if (orderOrig.ClOrdID.Equals(string.Empty)) { logger.Info("Problema ao consultar informacoes da ordem original"); return; } // Preencher informacoes de tb_fix_order_detail (rejection) OrderDbDetalheInfo detail = new OrderDbDetalheInfo(); detail.OrderID = orderOrig.OrderID; //detail.OrderQty = orderOrig.OrderQty; //detail.OrderQtyRemaining = orderOrig.OrderQtyRemaining; //detail.Price = orderOrig.Price; detail.OrderStatusID = (int)FixOrderStatus.REJEITADA; detail.TransactTime = ocr.IsSetField(Tags.TransactTime)? ocr.TransactTime.getValue(): DateTime.MinValue; detail.Description = ocr.IsSetField(Tags.Text) ? ocr.Text.getValue() : string.Empty; detail.CxlRejResponseTo = ocr.IsSetField(Tags.CxlRejResponseTo) ? ocr.CxlRejResponseTo.getValue().ToString() : string.Empty; detail.CxlRejReason = ocr.IsSetField(Tags.CxlRejReason)? ocr.CxlRejReason.getValue(): 0; detail.FixMsgSeqNum = Convert.ToInt32(ocr.Header.GetField(Tags.MsgSeqNum)); if (!_db.InserirOrdemDetalhe(detail, clordid)) { logger.Info("Problemas na inserção da ordem detalhe"); return; } // Buscar as informacoes da tabela update, utilizando o OrigClOrdID da ordem original OrderDbUpdateInfo orderUpdate = _db.BuscarOrdemUpdate(orderOrig.OrigClOrdID); // Atribuir as informacoes do update no order original orderOrig.ClOrdID = orderUpdate.ClOrdID; orderOrig.OrdStatus = orderUpdate.OrdStatusID; orderOrig.Price = orderUpdate.Price; orderOrig.OrderQty = orderUpdate.Quantidade; orderOrig.OrderQtyApar = orderUpdate.Quantidade_Aparente; orderOrig.OrderQtyMin = orderUpdate.Quantidade_Minima; //orderOrig.OrderQtyRemaining = orderUpdate.Quantidade_Exec; orderOrig.ExpireDate = orderUpdate.Dt_Validade; orderOrig.OrigClOrdID = string.Empty; orderOrig.MsgFix = ocr.ToString().Replace('\x01', '|'); // Atualizar as informacoes do update na tabela da ordem original if (!_db.AtualizarOrdem(orderOrig)) { logger.Info("Problemas na atualizacao da ordem (mensagem ordercancelreject). ClOrdID: " + orderOrig.ClOrdID); return; } DropCopyCallbackManager.Instance.EnqueueCallback(orderOrig); } catch (Exception ex) { logger.Error("Problemas no processamento da mensagem OrderCancelReject: " + ex.Message, ex); } }
public MsgOrderCancelReject(OrderCancelReject orderCancelReject) : base(1102) { this.Data = orderCancelReject; }