public void OnMessage(QuickFix.FIX43.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.FIX43.ExecutionReport exReport = new QuickFix.FIX43.ExecutionReport( new OrderID(GenOrderID()), new ExecID(GenExecID()), new ExecType(ExecType.FILL), new OrdStatus(OrdStatus.FILLED), symbol, // Shouldn't be here? side, new LeavesQty(0), new CumQty(orderQty.getValue()), new AvgPx(price.getValue())); exReport.Set(clOrdID); exReport.Set(symbol); exReport.Set(orderQty); exReport.Set(new LastQty(orderQty.getValue())); exReport.Set(new LastPx(price.getValue())); 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()); } }
private QuickFix.FIX43.NewOrderSingle QueryNewOrderSingle43() { QuickFix.Fields.OrdType ordType = null; QuickFix.FIX43.NewOrderSingle newOrderSingle = new QuickFix.FIX43.NewOrderSingle( QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), ordType = QueryOrdType()); newOrderSingle.Set(QueryOrderQty()); 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.FIX43.NewOrderSingle nos, SessionID sessionID) { ProcessNOS(nos, sessionID); }
private QuickFix.FIX43.NewOrderSingle QueryNewOrderSingle43() { QuickFix.Fields.OrdType ordType = null; QuickFix.FIX43.NewOrderSingle newOrderSingle = new QuickFix.FIX43.NewOrderSingle( QueryClOrdID(), new HandlInst('1'), QuerySymbol(), QuerySide(), new TransactTime(DateTime.Now), ordType = QueryOrdType()); newOrderSingle.Set(QueryOrderQty()); 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; }