Пример #1
0
        public void HandleOpenOrder(OpenOrderEventArgs e)
        {
            if (debug)
            {
                log.Debug("Broker Order: id " + e.Order.OrderId + " " + e.Contract.Symbol + " " + OrderToString(e.Order));
            }
            TickZoom.Api.OrderType type = TickZoom.Api.OrderType.BuyMarket;
            double price = 0;

            switch (e.Order.OrderType)
            {
            case Krs.Ats.IBNet.OrderType.Market:
                if (e.Order.Action == ActionSide.Buy)
                {
                    type = TickZoom.Api.OrderType.BuyMarket;
                }
                else
                {
                    type = TickZoom.Api.OrderType.SellMarket;
                }
                price = 0;
                break;

            case Krs.Ats.IBNet.OrderType.Limit:
                if (e.Order.Action == ActionSide.Buy)
                {
                    type = TickZoom.Api.OrderType.BuyLimit;
                }
                else
                {
                    type = TickZoom.Api.OrderType.SellLimit;
                }
                price = (double)e.Order.LimitPrice;
                break;

            case Krs.Ats.IBNet.OrderType.Stop:
                if (e.Order.Action == ActionSide.Buy)
                {
                    type = TickZoom.Api.OrderType.BuyStop;
                }
                else
                {
                    type = TickZoom.Api.OrderType.SellStop;
                }
                price = (double)e.Order.AuxPrice;
                break;

            default:
                log.Error("Unknown OrderType: " + e.Order.OrderType);
                break;
            }
            SymbolInfo    symbol = Factory.Symbol.LookupSymbol(e.Contract.Symbol);
            SymbolHandler handler;

            if (symbolHandlers.TryGetValue(symbol.BinaryIdentifier, out handler))
            {
                int logicalOrderId = GetLogicalOrderId(e.Order.OrderId);
                handler.LogicalOrderHandler.AddPhysicalOrder(type, price, e.Order.TotalQuantity, logicalOrderId, e.Order);
            }
        }
Пример #2
0
 private void eh_OpenOrder(object sender, OpenOrderEventArgs e)
 {
     System.Windows.Threading.Dispatcher.FromThread(OrderManager.UIThread).Invoke(() =>
     {
         DisplayedOrder dOrder = mainWin.Orders.FirstOrDefault <DisplayedOrder>(x => x.OrderId == e.OrderId);
         if (dOrder == null)
         {
             dOrder = new DisplayedOrder()
             {
                 OrderId   = e.Order.OrderId,
                 Action    = e.Order.Action,
                 Type      = e.Order.OrderType,
                 Symbol    = e.Contract.Symbol,
                 Currency  = e.Contract.Currency,
                 Status    = e.OrderState.Status,
                 Account   = e.Order.Account,
                 Tif       = e.Order.Tif,
                 GTD       = e.Order.GoodTillDate,
                 GAT       = e.Order.GoodAfterTime,
                 StopPrice = e.Order.TrailStopPrice,
                 LmtPrice  = e.Order.LmtPrice,
                 Quantity  = e.Order.TotalQuantity,
                 Exchange  = e.Contract.Exchange,
                 ParentId  = e.Order.ParentId,
                 OcaGroup  = e.Order.OcaGroup,
                 OcaType   = e.Order.OcaType,
                 Source    = DisplayName,
                 Time      = DateTime.Now
             };
             mainWin.Orders.Insert(0, dOrder);
         }
     });
 }
Пример #3
0
 private void client_OpenOrder(object sender, OpenOrderEventArgs e)
 {
     if (trace)
     {
         log.Trace("Open Order Id " + e.Order.OrderId + " " + e.Contract.Symbol + " " + OrderToString(e.Order));
     }
     openOrders[e.Order.OrderId] = e;
 }
Пример #4
0
        /// <inheritdoc/>
        public void openOrder(int orderId, Contract contract, Order order, OrderState orderState)
        {
            var eventArgs = new OpenOrderEventArgs(orderId, contract, order, orderState);

            this.OpenOrderEvent?.Invoke(this, eventArgs);
        }
Пример #5
0
        void ibclient_OpenOrder2(object sender0, OpenOrderEventArgs e)
        {
            SrBrokerOrder oqorder;
            tStart("ibclient_OpenOrder");
            logger.AddLog(LoggerLevel.Information,
                "ibclient_OpenOrder(): "
                + "Order from TWS: id: " + e.OrderId
                + ", " + e.Contract.Symbol
                + ", Status: " + e.OrderState.Status.ToString()
                + ", Shares: " + e.Order.TotalQuantity.ToString());

            // TODO: if order already there, just update status, qty, etc

            oqorder = new SrBrokerOrder();
            oqorder.Symbol = e.Contract.Symbol;
            oqorder.Currency = e.Contract.Currency;
            oqorder.Exchange = e.Contract.Exchange;
            if (!Helpers.SecurityTypeToInstrumentType(e.Contract.SecurityType, out oqorder.InstrumentType))
            {
                error("unknown security type in Order " + oqorder.Symbol);
                return;
            }
            oqorder.OrderId = e.OrderId.ToString();
            oqorder.Price = (double) e.Order.LimitPrice;
            oqorder.Qty = e.Order.TotalQuantity;
            if (!Helpers.ActionSideToOrderSide(e.Order.Action, out oqorder.Side))
            {
                error("unknown action side in Order " + oqorder.Symbol);
            }
            if (!Helpers.OrderStateToOrderStatus(e.OrderState.Status, out oqorder.Status))
            {
                error("unknown status in Order " + oqorder.Symbol);
                return;
            }
            oqorder.StopPrice = (double)e.Order.AuxPrice; // stop order only

            if (!Helpers.OrderTypeToOrderType(e.Order.OrderType, out oqorder.Type))
            {
                error("bad order type in Order " + oqorder.Symbol);
            }
            oqorder.OrderId = e.OrderId.ToString();
            // Fields
            oqorder.AddCustomField("ContractId", e.Contract.ContractId.ToString());
            oqorder.AddCustomField("Multiplier", e.Contract.Multiplier);
            oqorder.AddCustomField("Account", e.Order.Account);
            oqorder.AddCustomField("ClientId", e.Order.ClientId.ToString());
            oqorder.AddCustomField("DiscretionaryAmt", e.Order.DiscretionaryAmt.ToString());
            oqorder.AddCustomField("DisplaySize", e.Order.DisplaySize.ToString());
            oqorder.AddCustomField("ETradeOnly", e.Order.ETradeOnly.ToString());
            oqorder.AddCustomField("GoodAfterTime", e.Order.GoodAfterTime);
            oqorder.AddCustomField("GoodTillDate", e.Order.GoodTillDate);
            oqorder.AddCustomField("Hidden", e.Order.Hidden.ToString());
            oqorder.AddCustomField("NbboPriceCap", e.Order.NbboPriceCap.ToString());
            if (!string.IsNullOrWhiteSpace(e.Order.OcaGroup))
            {
                oqorder.AddCustomField("OcaGroup", e.Order.OcaGroup);
                oqorder.AddCustomField("OcaType", e.Order.OcaType.ToString());
            }
            oqorder.AddCustomField("OrderRef", e.Order.OrderRef);
            oqorder.AddCustomField("Origin", e.Order.Origin.ToString());
            oqorder.AddCustomField("OutsideRth", e.Order.OutsideRth.ToString());
            oqorder.AddCustomField("OverridePercentageConstraints", e.Order.OverridePercentageConstraints.ToString());
            oqorder.AddCustomField("ParentId", e.Order.ParentId.ToString());
            oqorder.AddCustomField("PercentOffset", e.Order.PercentOffset.ToString());
            oqorder.AddCustomField("PermId", e.Order.PermId.ToString());
            oqorder.AddCustomField("ReferencePriceType", e.Order.ReferencePriceType.ToString());
            oqorder.AddCustomField("Rule80A", e.Order.Rule80A.ToString());
            //oqorder.AddCustomField("ScaleInitLevelSize", e.Order.ScaleInitLevelSize.ToString());
            //oqorder.AddCustomField("ScalePriceIncrement", e.Order.ScalePriceIncrement.ToString());
            //oqorder.AddCustomField("ScaleSubsLevelSize", e.Order.ScaleSubsLevelSize.ToString());
            oqorder.AddCustomField("SettlingFirm", e.Order.SettlingFirm);
            oqorder.AddCustomField("StartingPrice", e.Order.StartingPrice.ToString());
            oqorder.AddCustomField("StockRangeLower", e.Order.StockRangeLower.ToString());
            oqorder.AddCustomField("StockRangeUpper", e.Order.StockRangeUpper.ToString());
            oqorder.AddCustomField("StockRefPrice", e.Order.StockRefPrice.ToString());
            oqorder.AddCustomField("SweepToFill", e.Order.SweepToFill.ToString());
            oqorder.AddCustomField("Tif", e.Order.Tif.ToString());
            oqorder.AddCustomField("TrailStopPrice", e.Order.TrailStopPrice.ToString());
            oqorder.AddCustomField("TriggerMethod", e.Order.TriggerMethod.ToString());
            oqorder.AddCustomField("WhatIf", e.Order.WhatIf.ToString());

            string key = oqorder.OrderId;
            lock (private_lock)
            {
                pendingOrders[key] = oqorder;
            }
            tEnd("ibclient_OpenOrder()");
        }
Пример #6
0
 void ibclient_OpenOrder(object sender, OpenOrderEventArgs e)
 {
     try
     {
         ibclient_OpenOrder2(sender, e);
     }
     catch (Exception ex)
     {
         error("ibclient_OpenOrder2: " + ex.Message);
         return;
     }
 }