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); } }
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); } }); }
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; }
/// <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); }
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()"); }
void ibclient_OpenOrder(object sender, OpenOrderEventArgs e) { try { ibclient_OpenOrder2(sender, e); } catch (Exception ex) { error("ibclient_OpenOrder2: " + ex.Message); return; } }