public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { IOrder key = OrderManager.Orders.All[request.OrigClOrdID]; Order order = Map.SQ_OQ_Order[key] as Order; this.provider.CallReplace(order); }
private void M9IPlabLYo(OrderCancelReplaceRequest request) { zo21q6cy3fImtUHATQ zo21q6cy3fImtUhatq = this.MyIPdEI7fi[request.OrigClOrdID] as zo21q6cy3fImtUHATQ; if (zo21q6cy3fImtUhatq == null) { return; } if (request.OrderQty > 0.0) { zo21q6cy3fImtUhatq.CfcFBQBLXe((FIXOrderCancelReplaceRequest)request); } else { OrderCancelReject orderCancelReject = new OrderCancelReject(); orderCancelReject.OrigClOrdID = request.OrigClOrdID; orderCancelReject.ClOrdID = request.ClOrdID; orderCancelReject.CxlRejResponseTo = CxlRejResponseTo.CancelReplaceRequest; orderCancelReject.CxlRejReason = CxlRejReason.BrokerOption; orderCancelReject.Text = ""; orderCancelReject.OrdStatus = zo21q6cy3fImtUhatq.x6qFCwTWN2().OrdStatus; orderCancelReject.TransactTime = Clock.Now; this.FxSP7oxcnT(orderCancelReject); } }
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))); } }
public static OrderCancelReplaceRequest ToOrderCancelReplaceRequest(this ExecutionReport er, string clOrdId) { var request = new OrderCancelReplaceRequest { MsgType = MsgTypes.OrderCancelReplaceRequest, ClOrdId = clOrdId, OrigClOrdId = er.OrigClOrdId, OrderId = er.OrderId, Symbol = er.Symbol, Side = er.Side, Account = er.Account, OrderQty = er.OrderQty, Price = er.Price, StopPx = er.StopPx, CapPrice = er.CapPrice, PegPriceType = er.PegPriceType, PegOffsetType = er.PegOffsetType, PegOffsetValue = er.PegOffsetValue, TransactTime = Functions.NowUnixNano(), }; request.ExecInst.AddRange(er.ExecInst); request.SLTP.AddRange(er.SLTP); return(request); }
public void OnMessage(OrderCancelReplaceRequest msg, SessionID s) { var ocj = CreateFix42Message.CreateOrderCancelReplaceReject( msg, CxlRejReason.OTHER, "Server currently does not support order cancel/replaces"); _fixFacade.SendToTarget(ocj, s); }
public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { if (this.Latency == 0) { this.M9IPlabLYo(request); } else { Clock.AddReminder(new ReminderEventHandler(this.gFqPLKYI6J), DateTime.Now.AddMilliseconds(this.Latency), request); } }
public override void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { if (!request.ContainsField(1) && !string.IsNullOrWhiteSpace(this.DefaultAccount)) { request.Account = this.DefaultAccount.Trim(); } if (!request.ContainsField(109) && !string.IsNullOrWhiteSpace(this.DefaultClientID)) { request.SetStringValue(109, this.DefaultClientID.Trim()); } base.SendOrderCancelReplaceRequest(request); }
public void OnMessage(OrderCancelReplaceRequest ocrr, SessionID s) { try { TODropCopyDB to = new TODropCopyDB(); to.MensagemQF = ocrr; to.Sessao = s; to.TipoMsg = MsgType.ORDER_CANCEL_REPLACE_REQUEST; this._addMessage(to); } catch (Exception ex) { logger.Error("Problemas no processamento da mensagem de OrderCancelReplaceRequest: " + ex.Message, ex); } }
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; }
/// <summary> /// Creates and returns a new <see cref="OrderCancelReplaceRequest"/> FIX message. /// </summary> /// <param name="order">The order.</param> /// <param name="modifiedQuantity">The quantity to modify the order to.</param> /// <param name="modifiedPrice">The price to modify the order to.</param> /// <param name="transactionTime">The transaction time.</param> /// <returns>The FIX message.</returns> public static OrderCancelReplaceRequest Create( Order order, decimal modifiedQuantity, decimal modifiedPrice, ZonedDateTime transactionTime) { Debug.NotDefault(transactionTime, nameof(transactionTime)); var message = new OrderCancelReplaceRequest(); message.SetField(new OrigClOrdID(order.Id.Value)); message.SetField(new OrderID(order.IdBroker?.Value)); message.SetField(new ClOrdID(order.Id.Value)); message.SetField(new Symbol(order.Symbol.Code)); message.SetField(new Quantity(modifiedQuantity)); message.SetField(FxcmMessageHelper.GetFixOrderSide(order.OrderSide)); message.SetField(new TransactTime(transactionTime.ToDateTimeUtc())); message.SetField(FxcmMessageHelper.GetFixOrderType(order.OrderType)); // Set the order price depending on order type. switch (order.OrderType) { case OrderType.Limit: message.SetField(new Price(modifiedPrice)); break; case OrderType.StopLimit: message.SetField(new StopPx(modifiedPrice)); break; case OrderType.Stop: message.SetField(new StopPx(modifiedPrice)); break; case OrderType.Market: case OrderType.Undefined: goto default; default: throw ExceptionFactory.InvalidSwitchArgument(order.OrderType, nameof(order.OrderType)); } return(message); }
/// <summary> /// Обработать транзакцию <see cref="ModifyOrderTransaction"/> /// </summary> /// <param name="transaction"> /// Транзакция для обработки /// </param> void ITransactionVisitor.Visit(ModifyOrderTransaction transaction) { if (!_orders.GetOrderParams(transaction.OrderExchangeId, out var _, out var symbol, out var _, out var side)) { SendMessage(TransactionReply.Rejected(transaction, $"Unknown order: {transaction.OrderExchangeId}")); return; } var msg = new OrderCancelReplaceRequest(); msg.OrderID = new OrderID(transaction.OrderExchangeId); msg.Price = new Price(transaction.Price); msg.OrderQty = new OrderQty(transaction.Quantity); msg.Symbol = new Symbol(symbol); msg.TransactTime = new TransactTime(DateTime.UtcNow); msg.Side = new Side(side); var clOrderId = _modifyOrderTransactions.Add(transaction); msg.ClOrdID = new ClOrdID(clOrderId); SendFixMessage(msg); }
public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { SendOrderCancelReplaceRequest(request as FIXOrderCancelReplaceRequest); }
public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID) { _fix44MessageHandler.OnMessage(msg, sessionID); }
internal static void ReplaceOrder(SingleOrder order) { if (order.Provider == null) { throw new ApplicationException("null"); } OrderCancelReplaceRequest request = new OrderCancelReplaceRequest(); request.ClOrdID = OrderManager.GetOrdId(); request.OrigClOrdID = order.ClOrdID; if (order.ContainsField(37)) { request.OrderID = order.OrderID; } request.Side = order.Side; request.OrdType = !order.ReplaceOrder.ContainsField(40) ? order.OrdType : order.ReplaceOrder.OrdType; request.TimeInForce = !order.ReplaceOrder.ContainsField(59) ? order.TimeInForce : order.ReplaceOrder.TimeInForce; if (order.ReplaceOrder.ContainsField(126)) { request.ExpireTime = order.ReplaceOrder.ExpireTime; } if (order.ReplaceOrder.ContainsField(44)) { request.Price = order.ReplaceOrder.Price; } else { request.Price = order.Price; } if (order.ReplaceOrder.ContainsField(99)) { request.StopPx = order.ReplaceOrder.StopPx; } else { request.StopPx = order.StopPx; } if (order.ReplaceOrder.ContainsField(10701)) { request.TrailingAmt = order.ReplaceOrder.TrailingAmt; } else { request.TrailingAmt = order.TrailingAmt; } if (order.ReplaceOrder.ContainsField(38)) { request.OrderQty = order.ReplaceOrder.OrderQty; } else { request.OrderQty = order.OrderQty; } request.TransactTime = Clock.Now; request.Account = order.Account; request.HandlInst = order.HandlInst; request.Symbol = order.Symbol; request.SecurityType = order.SecurityType; request.SecurityExchange = order.SecurityExchange; request.SecurityID = order.SecurityID; request.Currency = order.Currency; request.SetStringValue(109, order.GetStringValue(109)); order.Provider.SendOrderCancelReplaceRequest(request); }
private void SendSelectedRequest() { switch (DataContainer.Data[_listBoxSelectedIndexNo].MsgType) { case "U1000": MsgAIR requestData = (MsgAIR)DataContainer.Data[_listBoxSelectedIndexNo]; AccountInfoRequest request = new AccountInfoRequest(); request.Set(new Account(Properties.Settings.Default.Account)); request.Set(new AccReqID(requestData.AccReqID)); //testforJack //request.Set(new SubscriptionRequestType('1')); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "D": MsgNOSR requestData1 = (MsgNOSR)DataContainer.Data[_listBoxSelectedIndexNo]; NewOrderSingle request1 = new NewOrderSingle(); request1.Set(new Account(Properties.Settings.Default.Account)); request1.Set(new ClOrdID(requestData1.ClOrdID)); request1.Set(new OrderQty(decimal.Parse(requestData1.OrderQty))); request1.Set(new OrdType(char.Parse(requestData1.OrdType))); request1.Set(new Side(char.Parse(requestData1.Side))); request1.Set(new Symbol(requestData1.Symbol)); request1.Set(new TransactTime(DateTime.Now)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request1, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "H": MsgOSR requestData2 = (MsgOSR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderStatusRequest request2 = new OrderStatusRequest(); request2.Set(new Account(Properties.Settings.Default.Account)); request2.Set(new ClOrdID(requestData2.ClOrdID)); request2.Set(new Side(char.Parse(requestData2.Side))); request2.Set(new Symbol(requestData2.Symbol)); request2.Set(new OrderID(requestData2.OrderID)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request2, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "AF2": MsgBOIR requestData3 = (MsgBOIR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderMassStatusRequest request3 = new OrderMassStatusRequest(); request3.Set(new Account(Properties.Settings.Default.Account)); request3.Set(new Symbol(requestData3.Symbol)); request3.Set(new MassStatusReqID(requestData3.MassStatusReqID)); //request3.Set(new NoStatuses(int.Parse(requestData3.GroupNums))); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request3, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "G": MsgOCRR requestData4 = (MsgOCRR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderCancelReplaceRequest request4 = new OrderCancelReplaceRequest(); request4.Set(new Account(Properties.Settings.Default.Account)); request4.Set(new ClOrdID(requestData4.ClOrdID)); request4.Set(new OrderQty(decimal.Parse(requestData4.OrderQty))); request4.Set(new OrderID(requestData4.OrderID)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request4, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; case "F": MsgOCR requestData5 = (MsgOCR)DataContainer.Data[_listBoxSelectedIndexNo]; OrderCancelRequest request5 = new OrderCancelRequest(); request5.Set(new Account(Properties.Settings.Default.Account)); request5.Set(new ClOrdID(requestData5.ClOrdID)); request5.Set(new OrderID(requestData5.OrderID)); request5.Set(new Symbol(requestData5.Symbol)); request5.Set(new TransactTime(DateTime.Now)); if (!initiator.IsStopped) { bool ret = Session.SendToTarget(request5, conn.m_sessionID); } else { MessageBox.Show(@"Connection is not established!!", @"Warning", MessageBoxButtons.OK); } break; default: break; } }
public void ProcessOrderCancelReplaceRequest(NewOrderSingle nos, OrderCancelReplaceRequest msg) { }
public static void ConsistirAlteracaoOrdem(OrderCancelReplaceRequest occr, string exchange) { // Basic order identification if (string.IsNullOrEmpty(occr.Account.ToString())) { throw new ArgumentException("Account field must be provided"); } if (string.IsNullOrEmpty(occr.OrigClOrdID.ToString())) { //if (ordem.OrigClOrdID == null || ordem.OrigClOrdID.Length <= 0) throw new ArgumentException("OrigClOrdID field must be provided"); } if (string.IsNullOrEmpty(occr.ClOrdID.ToString())) { throw new ArgumentException("ClOrdID field must be provided"); } // Instrument Identification Block if (string.IsNullOrEmpty(occr.Symbol.ToString())) { throw new ArgumentException("Symbol must be provided"); } // "obrigatorio" somente para bmf (nao obrigatorio na mensageria, mas dah erro se enviar // sem este campo para bmf) //if (exchange.Equals(ExchangePrefixes.BMF, StringComparison.InvariantCultureIgnoreCase)) //{ // if (string.IsNullOrEmpty(occr.SecurityID.ToString())) // throw new ArgumentException("SecurityID field must be provided"); //} if (string.IsNullOrEmpty(occr.OrderQty.ToString())) { throw new ArgumentException("OrderQty must be > 0 "); } if (occr.IsSetField(Tags.NoPartyIDs)) { try { Group partyIDs = occr.GetGroup(1, Tags.NoPartyIDs); if (string.IsNullOrEmpty(partyIDs.GetField(Tags.PartyID))) { throw new ArgumentException("ExecBroker must be provided"); } } catch { throw new ArgumentException("ExecBroker must be provided"); } } // Valido somente se estiver atribuido, campo nao obrigatorio if (occr.IsSetField(Tags.TimeInForce)) { TimeInForce tif = occr.TimeInForce; if (tif == null) { throw new ArgumentException("TimeInForce is invalid"); } if (tif.ToString().Equals(TimeInForce.GOOD_TILL_DATE.ToString())) { if (!string.IsNullOrEmpty(occr.ExpireDate.ToString())) { DateTime dtExpireDate = DateTime.ParseExact(occr.ExpireDate.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture); if (dtExpireDate.Date < DateTime.Now.Date) { throw new ArgumentException("ExpireDate is invalid"); } } else { throw new ArgumentException("ExpireDate is invalid"); } } } OrdType ordType = occr.OrdType; if (ordType == null) { throw new ArgumentException("OrdType is invalid"); } // Verifica envio do preco switch (ordType.ToString()[0]) { case OrdType.LIMIT: // OrdemTipoEnum.Limitada: case OrdType.MARKET_WITH_LEFTOVER_AS_LIMIT: // OrdemTipoEnum.MarketWithLeftOverLimit: if (occr.Price.getValue() <= new Decimal(0.0)) { throw new ArgumentException("Price must be > 0"); } break; case OrdType.STOP_LIMIT: // OrdemTipoEnum.StopLimitada: //case OrdemTipoEnum.StopStart: if (occr.Price.getValue() <= new Decimal(0.0)) { throw new ArgumentException("Price must be > 0"); } if (occr.StopPx.getValue() <= new Decimal(0.0)) { throw new ArgumentException("StopPrice must be > 0"); } break; case OrdType.MARKET: // OrdemTipoEnum.Mercado: case OrdType.ON_CLOSE: //OrdemTipoEnum.OnClose: break; default: if (occr.Price.getValue() <= new Decimal(0.0)) { throw new ArgumentException("Price must be > 0"); } break; } if (occr.IsSetMaxFloor()) { if (occr.MaxFloor.getValue() < new Decimal(0)) { throw new ArgumentException("MaxFloor must be >= 0"); } } if (occr.IsSetMinQty()) { if (occr.MinQty.getValue() < new Decimal(0)) { throw new ArgumentException("MinQty must be >= 0"); } } }
public void SendOrderReplaceCancelRequest(string symbol, int quantity, decimal? price, decimal? stop, decimal? gain, string account, SessionID session) { origClOrdID = clOrdId; clOrdId = DateTime.Now.Ticks.ToString(); var replace = new OrderCancelReplaceRequest(new OrigClOrdID(origClOrdID), new ClOrdID(clOrdId), new Symbol(lastSymbol), new Side(Side.BUY), new TransactTime(DateTime.Now), new OrdType(gain.HasValue ? 'X' : stop.HasValue ? OrdType.STOP : price.HasValue ? OrdType.LIMIT : OrdType.MARKET)) { Account = new Account(lastAccount.ToString()), OrderQty = new OrderQty(quantity), }; if (stop.HasValue) replace.StopPx = new StopPx(stop.Value); if (price.HasValue) replace.Price = new Price(price.Value); if (gain.HasValue) replace.SetField(new DecimalField(6001, gain.Value)); Session.SendToTarget(replace, session); }
/// <inheritdoc /> public async Task <ExecutionReport> ReplaceOrderAsync( OrderCancelReplaceRequest command, CancellationToken cancellationToken = default) { return(await PostAsync <ExecutionReport>(ReplaceOrderPath, command, cancellationToken).ConfigureAwait(false)); }
public virtual void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { }
public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID) { MessageDisplay(msg, sessionID, MessageDisplayer.Sender); }
/// <inheritdoc /> public async Task CancelReplaceOrderAsync(OrderCancelReplaceRequest request) { await SendCommandAsync(request).ConfigureAwait(false); }
public virtual void onMessage(OrderCancelReplaceRequest message, QuickFix.SessionID session) { throw new QuickFix.UnsupportedMessageType(); }
static void Main(string[] args) { TestFixApp testFixApp = new TestFixApp(args.FirstOrDefault()); testFixApp.Start(); Account account = new Account("54b97c9e-202b-11b2-be90-529049f1f1bb"); ClOrdID clOrdId = new ClOrdID(Guid.NewGuid().ToString()); Symbol symbol = new Symbol("BTC/USD"); Side side = new Side(Side.BUY); #region SecurityListRequest SecurityListRequest securityListRequest = new SecurityListRequest( new SecurityReqID(Guid.NewGuid().ToString()), new SecurityListRequestType(SecurityListRequestType.SYMBOL) ) { Symbol = symbol }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(securityListRequest); testFixApp.WaitResponces(1); #endregion SecurityListRequest #region MarketDataRequest MarketDataRequest marketDataRequest = new MarketDataRequest( new MDReqID(Guid.NewGuid().ToString()), new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT), new MarketDepth(5)) { MDUpdateType = new MDUpdateType(MDUpdateType.FULL_REFRESH), }; var bid = new MarketDataRequest.NoMDEntryTypesGroup() { MDEntryType = new MDEntryType(MDEntryType.BID) }; var ask = new MarketDataRequest.NoMDEntryTypesGroup() { MDEntryType = new MDEntryType(MDEntryType.OFFER) }; var symGroup = new MarketDataRequest.NoRelatedSymGroup { Symbol = symbol }; marketDataRequest.AddGroup(bid); marketDataRequest.AddGroup(ask); marketDataRequest.AddGroup(symGroup); Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(marketDataRequest); testFixApp.WaitResponces(1); #endregion MarketDataRequest #region NewOrderSingle NewOrderSingle newOrderSingle = new NewOrderSingle( clOrdId, symbol, side, new TransactTime(DateTime.Now), new OrdType(OrdType.LIMIT)) { OrderQty = new OrderQty(0.1m), Price = new Price(1m), Account = account, AcctIDSource = new AcctIDSource(AcctIDSource.OTHER) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(newOrderSingle); testFixApp.WaitResponces(2); #endregion NewOrderSingle #region OrderCancelReplaceRequest OrderCancelReplaceRequest orderCancelReplaceRequest = new OrderCancelReplaceRequest( new OrigClOrdID(clOrdId.ToString()), clOrdId = new ClOrdID(Guid.NewGuid().ToString()), symbol, side, new TransactTime(DateTime.Now), new OrdType(OrdType.LIMIT)) { Price = new Price(2m), OrderQty = new OrderQty(0.2m) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderCancelReplaceRequest); testFixApp.WaitResponces(2); #endregion OrderCancelReplaceRequest #region OrderStatusRequest OrderStatusRequest orderStatusRequest = new OrderStatusRequest( clOrdId, symbol, side ); Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderStatusRequest); testFixApp.WaitResponces(1); #endregion OrderStatusRequest #region OrderCancelRequest OrderCancelRequest orderCancelRequest = new OrderCancelRequest( new OrigClOrdID(clOrdId.ToString()), new ClOrdID(Guid.NewGuid().ToString()), symbol, side, new TransactTime(DateTime.Now) ) { OrderQty = new OrderQty(0.1m) }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderCancelRequest); testFixApp.WaitResponces(3); #endregion region OrderCancelRequest #region OrderMassStatusRequest OrderMassStatusRequest orderMassStatusRequest = new OrderMassStatusRequest( new MassStatusReqID(Guid.NewGuid().ToString()), new MassStatusReqType(MassStatusReqType.STATUS_FOR_ALL_ORDERS)) { Side = side, Symbol = symbol }; Console.WriteLine("Press enter to next comand"); Console.ReadLine(); testFixApp.Send(orderMassStatusRequest); #endregion OrderMassStatusRequest Console.WriteLine("Press enter to exit"); Console.ReadLine(); testFixApp.Stop(); }
public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID) { var ocj = CreateFix44Message.CreateOrderCancelReplaceReject( msg, CxlRejReason.OTHER, "Server currently does not support order cancel/replaces"); _fixFacade.SendToTarget(ocj, sessionID); }
public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionId) { }
public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request) { IOrder iorder = ((InstrumentOrderListTable)OrderManager.Orders).All[request.OrigClOrdID]; this.provider.CallReplace(Map.FQ_OQ_Order[(object)iorder] as Order); }
public void ProcessOrderCancelReplaceRequest(QuickFix.Message msg, string bolsa) { try { OrderCancelReplaceRequest ocrr = (OrderCancelReplaceRequest)msg; string origclordid = ocrr.OrigClOrdID.getValue(); int account; if (bolsa.Equals(ExchangePrefixes.BOVESPA, StringComparison.InvariantCultureIgnoreCase)) { string acc = ocrr.Account.getValue(); acc = (acc.Remove(acc.Length - 1)); account = Convert.ToInt32(acc); } else { account = Convert.ToInt32(ocrr.Account.getValue()); } // Buscar ordem original OrderDbInfo orderOrig = _db.BuscarOrdem(origclordid, account, ocrr.Symbol.getValue()); // Adicionar as informacoes da ordem original na tabela de upodate if (orderOrig.OrderID == 0) { logger.Info("OCRR - Nao achou a ordem em questao!!!: " + origclordid); return; } // Adicionar informacoes originais na tabela update OrderDbUpdateInfo updt = new OrderDbUpdateInfo(); updt.Account = orderOrig.Account; updt.Instrumento = orderOrig.Symbol; updt.OrderID = orderOrig.OrderID; updt.ClOrdID = orderOrig.ClOrdID; updt.OrdStatusID = orderOrig.OrdStatus; updt.Price = orderOrig.Price; updt.Quantidade = orderOrig.OrderQty; updt.Quantidade_Exec = orderOrig.CumQty; updt.Quantidade_Aparente = Convert.ToInt32(orderOrig.OrderQtyApar); updt.Quantidade_Minima = Convert.ToInt32(orderOrig.OrderQtyMin); updt.Dt_Validade = orderOrig.ExpireDate; updt.Dt_Atualizacao = orderOrig.TransactTime; updt.TimeInForce = orderOrig.TimeInForce; if (!_db.InserirOrdermUpdate(updt)) { logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update"); return; } // Adicionar as novas informacoes pertinentes na tabela detail OrderDbDetalheInfo detail = new OrderDbDetalheInfo(); detail.OrderID = orderOrig.OrderID; detail.TransactID = ""; detail.OrderQty = Convert.ToInt32(ocrr.OrderQty.getValue()); detail.Price = ocrr.IsSetField(Tags.Price)? ocrr.Price.getValue(): Decimal.Zero; detail.OrderStatusID = (int)FixOrderStatus.SUBSTITUICAO_SOLICITADA; detail.TransactTime = ocrr.TransactTime.getValue(); detail.Description = DescMsg.OCRR_PENDING_MODIFICATION; detail.FixMsgSeqNum = Convert.ToInt32(ocrr.Header.GetField(Tags.MsgSeqNum)); if (!_db.InserirOrdemDetalhe(detail, orderOrig.ClOrdID)) { logger.Error("Erro ao inserir o registro na tabela tb_fix_order_update - msg de modificacao"); return; } // Atualizar a informacao original na tabela tb_fix_order // Atualiza os campos gravados na tabela tb_fix_order_update // Ordem original já se encontra em orderOrig orderOrig.OrigClOrdID = ocrr.OrigClOrdID.getValue(); orderOrig.ClOrdID = ocrr.ClOrdID.getValue(); orderOrig.OrdStatus = (int)FixOrderStatus.SUBSTITUICAO_SOLICITADA; orderOrig.TransactTime = ocrr.TransactTime.getValue(); if (ocrr.IsSetField(Tags.ExpireDate)) { orderOrig.ExpireDate = DateTime.ParseExact(ocrr.ExpireDate.getValue() + "235959", "yyyyMMddHHmmss", CultureInfo.InvariantCulture); } else { orderOrig.ExpireDate = DateTime.MinValue; } orderOrig.TimeInForce = ocrr.IsSetField(Tags.TimeInForce) ? ocrr.TimeInForce.getValue().ToString() : "0"; orderOrig.OrderQty = Convert.ToInt32(ocrr.OrderQty.getValue()); orderOrig.OrderQtyMin = ocrr.IsSetField(Tags.MinQty) ? ocrr.MinQty.getValue() : 0; orderOrig.OrderQtyApar = ocrr.IsSetField(Tags.MaxFloor) ? ocrr.MaxFloor.getValue() : 0; orderOrig.Price = ocrr.IsSetField(Tags.Price)? ocrr.Price.getValue(): Decimal.Zero; orderOrig.Memo = ocrr.IsSetField(Tags.Memo) ? ocrr.GetField(Tags.Memo): string.Empty; orderOrig.FixMsgSeqNum = Convert.ToInt32(ocrr.Header.GetField(Tags.MsgSeqNum)); orderOrig.MsgFix = ocrr.ToString().Replace('\x01', '|'); orderOrig.HandlInst = ocrr.IsSetField(Tags.HandlInst) ? ocrr.HandlInst.getValue().ToString() : string.Empty; if (!_db.AtualizarOrdem(orderOrig)) { logger.Info("Problemas na atualizacao da ordem (mensagem de modificacao). ClOrdID: " + orderOrig.ClOrdID); return; } DropCopyCallbackManager.Instance.EnqueueCallback(orderOrig); } catch (Exception ex) { logger.Error("Problemas no processamento da mensagem OrderCancelReplaceRequest: " + ex.Message, ex); } }