Example #1
0
        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);
            }
        }
Example #3
0
 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)));
     }
 }
Example #4
0
        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);
        }
Example #5
0
        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);
     }
 }
Example #7
0
 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);
 }
Example #8
0
 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);
     }
 }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #12
0
        /// <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);
        }
Example #13
0
 public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request)
 {
     SendOrderCancelReplaceRequest(request as FIXOrderCancelReplaceRequest);
 }
Example #14
0
 public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID)
 {
     _fix44MessageHandler.OnMessage(msg, sessionID);
 }
Example #15
0
        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);
        }
Example #16
0
        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;
            }
        }
Example #17
0
 public void ProcessOrderCancelReplaceRequest(NewOrderSingle nos,
                                              OrderCancelReplaceRequest msg)
 {
 }
Example #18
0
        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");
                }
            }
        }
Example #19
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);
        }
Example #20
0
 /// <inheritdoc />
 public async Task <ExecutionReport> ReplaceOrderAsync(
     OrderCancelReplaceRequest command,
     CancellationToken cancellationToken = default)
 {
     return(await PostAsync <ExecutionReport>(ReplaceOrderPath, command, cancellationToken).ConfigureAwait(false));
 }
Example #21
0
 public void ProcessOrderCancelReplaceRequest(NewOrderSingle nos,
                                              OrderCancelReplaceRequest msg)
 {
 }
Example #22
0
 public virtual void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request)
 {
 }
Example #23
0
 public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID)
 {
     MessageDisplay(msg, sessionID, MessageDisplayer.Sender);
 }
Example #24
0
 /// <inheritdoc />
 public async Task CancelReplaceOrderAsync(OrderCancelReplaceRequest request)
 {
     await SendCommandAsync(request).ConfigureAwait(false);
 }
Example #25
0
 public virtual void onMessage(OrderCancelReplaceRequest message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
Example #26
0
        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();
        }
Example #27
0
        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);
        }
Example #28
0
 public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionId)
 {
 }
Example #29
0
        public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request)
        {
            IOrder iorder = ((InstrumentOrderListTable)OrderManager.Orders).All[request.OrigClOrdID];

            this.provider.CallReplace(Map.FQ_OQ_Order[(object)iorder] as Order);
        }
Example #30
0
        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);
            }
        }
Example #31
0
		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);
		}
 public void SendOrderCancelReplaceRequest(OrderCancelReplaceRequest request)
 {
     SendOrderCancelReplaceRequest(request as FIXOrderCancelReplaceRequest);
 }
Example #33
0
 public void OnMessage(OrderCancelReplaceRequest msg, SessionID sessionID)
 {
     _fix44MessageHandler.OnMessage(msg, sessionID);
 }