/// <summary> /// This function sets up the OrderProfile and submits /// the order using the InstrumentTradeSubscription SendOrder method. /// </summary> /// <param name="buySell">The side of the market to place the order on.</param> private void SendOrder(TTOrder tto, ZOrder o) { ZOrderSide orderSide = o.Side; string qtyStr = o.Qty.ToString(); string priceStr = GetPriceString(o); ZOrderType orderType = o.Type; string stopPriceStr = o.StopPrice.ToString(); // TODO: WE NEED TO DEAL WITH STOP ORDERS!!! TTInstrument ttinstr = _instruments[o.Iid]; cout("TengineTT::SendOrder: {0}", o.ToString()); try { //OrderProfile op = new OrderProfile(ttinstr.DefaultOrderFeed, ttinstr.Instrument, this.DefaultCustomer); OrderProfile op = tto.Profile; op.BuySell = TranslateSide(orderSide); // Set for Buy or Sell. op.QuantityToWork = Quantity.FromString(ttinstr.Instrument, qtyStr); // Set the quantity. if (orderType == ZOrderType.Market) // Market Order { op.OrderType = OrderType.Market; } else if (orderType == ZOrderType.Limit) // Limit Order { // Set the limit order price. op.LimitPrice = Price.FromString(ttinstr.Instrument, priceStr); } else if (orderType == ZOrderType.StopMarket) // Stop Market Order { op.OrderType = OrderType.Market; // Set the order type to "Market" for a market order. op.Modifiers = OrderModifiers.Stop; // Set the order modifiers to "Stop" for a stop order. op.StopPrice = Price.FromString(ttinstr.Instrument, stopPriceStr); // Set the stop price. } else if (orderType == ZOrderType.StopLimit) // Stop Limit Order { op.OrderType = OrderType.Limit; // Set the order type to "Limit" for a limit order. op.Modifiers = OrderModifiers.Stop; // Set the order modifiers to "Stop" for a stop order. op.LimitPrice = Price.FromString(ttinstr.Instrument, priceStr); // Set the limit order price. op.StopPrice = Price.FromString(ttinstr.Instrument, stopPriceStr); // Set the stop price. } //_orders[op.SiteOrderKey] m_dtrd[ttinstr.InstrumentKey].SendOrder(op); // Send the order. cout("TengineTT::SendOrder: TT Order Send {0} {1}|{2}@{3}", op.SiteOrderKey, op.BuySell.ToString(), op.QuantityToWork.ToString(), LimitOrMarketPrice(op)); /*// Update the GUI. * txtOrderBook.Text += String.Format("Send {0} {1}|{2}@{3}{4}", * orderProfile.SiteOrderKey, * orderProfile.BuySell.ToString(), * orderProfile.QuantityToWork.ToString(), * orderProfile.OrderType == OrderType.Limit ? orderProfile.LimitPrice.ToString() : "Market Price", * System.Environment.NewLine);*/ } catch (Exception err) { ErrorMessage(err.Message); } }
public override uint CreateOrder(uint iid, ZOrderSide side, int price, uint qty, ZOrderType type, ZOrderTimeInForce tif) { uint oid = GenerateOrderId(); var o = new ZOrder(oid, iid, side, price, qty, type, tif); orders[oid] = o; //_orders[o.Oid] = new OME.EquityOrder(_instruments[o.Iid], OME.Order.OrderTypes.GoodUntilCancelled, GetSide(o), o.Price, o.Qty); return(oid); }
// Given a ZeroSumAPI order side // Return a BuySell order side public static BuySell TranslateSide(ZOrderSide side) { if (side == ZOrderSide.Buy) { return(BuySell.Buy); } else if (side == ZOrderSide.Sell) { return(BuySell.Sell); } else { return(BuySell.Unknown); } }
public ZOrder(uint oid, uint iid, ZOrderSide side, int price, uint qty, ZOrderType type, ZOrderTimeInForce timeInForce, int?stopPrice = null) { this.Oid = oid; this.Iid = iid; this.Side = side; this.Price = price; this.Qty = qty; this.Type = type; this.TimeInForce = timeInForce; this.State = ZOrderState.New; this.StopPrice = stopPrice; //Id = Interlocked.Increment(ref GlobalOrderId); //CreationTime = DateTime.Now; }
public override uint CreateOrder(uint iid, ZOrderSide side, int price, uint qty, ZOrderType type, ZOrderTimeInForce tif) { uint oid = GenerateOrderId(); var o = new ZOrder(oid, iid, side, price, qty, type, tif); orders[oid] = o; // Add this to the OrderMap which will allow us to convert to/from TTAPI orders var ttinstr = _instruments[iid]; OrderProfile op = new OrderProfile(ttinstr.DefaultOrderFeed, ttinstr.Instrument, this.DefaultCustomer); var tto = new TTOrder(op); _orders.Add(tto.Key, tto, oid); return(oid); }
public abstract uint CreateOrder(uint iid, ZOrderSide side, int price, uint qty, ZOrderType type = ZOrderType.Limit, ZOrderTimeInForce tif = ZOrderTimeInForce.GoodTilDate);