private QuickFix.FIX40.NewOrderSingle QueryNewOrderSingle40() { QuickFix.Fields.OrdType ordType = null; QuickFix.FIX40.NewOrderSingle newOrderSingle = new QuickFix.FIX40.NewOrderSingle( QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), QueryOrderQty(), ordType = QueryOrdType()); newOrderSingle.Set(QueryTimeInForce()); if (ordType.getValue() == OrdType.LIMIT || ordType.getValue() == OrdType.STOP_LIMIT) { newOrderSingle.Set(QueryPrice()); } if (ordType.getValue() == OrdType.STOP || ordType.getValue() == OrdType.STOP_LIMIT) { newOrderSingle.Set(QueryStopPx()); } QueryHeader(newOrderSingle.Header); return(newOrderSingle); }
public void OnMessage(QuickFix.FIX40.NewOrderSingle n, SessionID s) { Symbol symbol = n.Symbol; Side side = n.Side; OrdType ordType = n.OrdType; OrderQty orderQty = n.OrderQty; Price price = new Price(DEFAULT_MARKET_PRICE); ClOrdID clOrdID = n.ClOrdID; switch (ordType.getValue()) { case OrdType.LIMIT: price = n.Price; if (price.Obj == 0) { throw new IncorrectTagValue(price.Tag); } break; case OrdType.MARKET: break; default: throw new IncorrectTagValue(ordType.Tag); } QuickFix.FIX40.ExecutionReport exReport = new QuickFix.FIX40.ExecutionReport( new OrderID(GenOrderID()), new ExecID(GenExecID()), new ExecTransType(ExecTransType.NEW), new OrdStatus(OrdStatus.FILLED), symbol, side, orderQty, new LastShares(orderQty.getValue()), new LastPx(price.getValue()), new CumQty(orderQty.getValue()), new AvgPx(price.getValue())); exReport.Set(clOrdID); if (n.IsSetAccount()) { exReport.SetField(n.Account); } try { Session.SendToTarget(exReport, s); } catch (SessionNotFound ex) { Console.WriteLine("==session not found exception!=="); Console.WriteLine(ex.ToString()); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public void OnMessage(QuickFix.FIX40.NewOrderSingle nos, SessionID sessionID) { ProcessNOS(nos, sessionID); }
private QuickFix.FIX40.NewOrderSingle QueryNewOrderSingle40() { QuickFix.Fields.OrdType ordType = null; QuickFix.FIX40.NewOrderSingle newOrderSingle = new QuickFix.FIX40.NewOrderSingle( QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), QueryOrderQty(), ordType = QueryOrdType()); newOrderSingle.Set(QueryTimeInForce()); if (ordType.getValue() == OrdType.LIMIT || ordType.getValue() == OrdType.STOP_LIMIT) newOrderSingle.Set(QueryPrice()); if (ordType.getValue() == OrdType.STOP || ordType.getValue() == OrdType.STOP_LIMIT) newOrderSingle.Set(QueryStopPx()); QueryHeader(newOrderSingle.Header); return newOrderSingle; }