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 = n.Price;
ClOrdID clOrdID = n.ClOrdID;
if (ordType.getValue() != OrdType.LIMIT)
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.Message);
}
catch (Exception ex)
{
Console.WriteLine("==unknown exception==");
Console.WriteLine(ex.ToString());
Console.WriteLine(ex.StackTrace);
}
}