public QuickFix.Text getText() { QuickFix.Text value = new QuickFix.Text(); getField(value); return value; }
/// <summary> /// Handle an incomming execution report /// </summary> /// <param name="myMsg"></param> public void HandleExecReport(KaiTrade.Interfaces.Message myMsg) { try { if (m_Log.IsInfoEnabled) { m_Log.Info("OrderService:HandleExecReport:" + myMsg.Data); } if (m_ORLog.IsInfoEnabled) { m_ORLog.Info("OrderService:HandleExecReport:" + myMsg.Data); } // Get order manager KaiTrade.Interfaces.OrderManager myOM = KTAFacade.Instance().Factory.GetOrderManager(); //Create a quickfix message object QuickFix.Message myFixMsg = new QuickFix.Message(myMsg.Data); QuickFix.ExecID myExecID = new QuickFix.ExecID(); myFixMsg.getField(myExecID); // check if we have already processed this report if (!myOM.RecordExecutionReport(myExecID.getValue(), myFixMsg)) { // we have processed this already m_Log.Warn("HandleExecReport: Duplicate Exec Report:" + myMsg.Data); return; } // these fields must be present QuickFix.OrderID myOrderID = new QuickFix.OrderID(); myFixMsg.getField(myOrderID); QuickFix.ExecType myExecType = new QuickFix.ExecType(); myFixMsg.getField(myExecType); QuickFix.OrdStatus myOrdStatus = new QuickFix.OrdStatus(); myFixMsg.getField(myOrdStatus); // we need the clordid to update an existing order - if // it is not present or unknow we create a synthetic order QuickFix.ClOrdID myClOrdID = new QuickFix.ClOrdID(); KaiTrade.Interfaces.Order myOrder = null; if (myFixMsg.isSetField(myClOrdID)) { myFixMsg.getField(myClOrdID); myOrder = myOM.GetOrderWithClOrdIDID(myClOrdID.getValue()); } if (myOrder == null) { myOrder = CreateSyntheticOrder(myFixMsg); } // add the ExecRep to the Order KaiTrade.Interfaces.Fill myFill = new K2DataObjects.FillData(); myFill.OrderID = myOrder.Identity; myFill.SetUpFromFixExecReport(myFixMsg.ToString()); myOrder.FillsList.Add(myFill); // update mandatory fields myOrder.OrderID = myOrderID; myOrder.OrdStatus = myOrdStatus; QuickFix.Text myText = new QuickFix.Text(); if (myFixMsg.isSetField(myText)) { myFixMsg.getField(myText); myOrder.Text = myText.getValue(); } QuickFix.Account myAccount = new QuickFix.Account(); if (myFixMsg.isSetField(myAccount)) { myFixMsg.getField(myAccount); myOrder.Account = myAccount; } // process the execution depanding on type of ExecReport switch (myExecType.getValue()) { case QuickFix.ExecType.NEW: processGeneralExecRep(ref myOrder, myFixMsg); /* if (order.LastOrderCommand == KaiTrade.Interfaces.LastOrderCommand.neworder) { order.LastOrderCommand = KaiTrade.Interfaces.LastOrderCommand.none; } else { m_Log.Error("HandleExecReport:OrderStatus new not expected"); } * */ break; case QuickFix.ExecType.FILL: if (order.LastOrderCommand == KaiTrade.Interfaces.LastOrderCommand.neworder) { order.LastOrderCommand = KaiTrade.Interfaces.LastOrderCommand.none; } processFill(ref myOrder, myFixMsg); break; case QuickFix.ExecType.PARTIAL_FILL: if (order.LastOrderCommand == KaiTrade.Interfaces.LastOrderCommand.neworder) { order.LastOrderCommand = KaiTrade.Interfaces.LastOrderCommand.none; } processFill(ref myOrder, myFixMsg); break; case QuickFix.ExecType.ORDER_STATUS: processGeneralExecRep(ref myOrder, myFixMsg); break; default: processGeneralExecRep(ref myOrder, myFixMsg); break; } myOM.SetChanged(myOrder.Identity); // Check if the order is part of a strategy if (myOrder.ParentIdentity != null) { // get the strategy concerned KaiTrade.Interfaces.IStrategy myStrat = KTAFacade.Instance().Factory.GetStrategyManager().GetStrategy(myOrder.ParentIdentity); if (myStrat != null) { myStrat.HandleExecReport(myFixMsg, myOrder); } else { m_Log.Error("Strategy not found for:" + myOrder.ParentIdentity); } } if (myOrder.OCAGroupName.Length > 0) { KTAFacade.Instance().Factory.GetOCOManager().OnOrderTraded(myOrder); } if (m_ORLog.IsInfoEnabled) { m_ORLog.Info("OrderService:HandleExecRep:Exit:" + myOrder.ToString()); } } catch (Exception myE) { m_Log.Error("HandleExecReport", myE); } }
public QuickFix.Text getText() { QuickFix.Text value = new QuickFix.Text(); getField(value); return(value); }
public QuickFix.Text get(QuickFix.Text value) { getField(value); return(value); }
public void set(QuickFix.Text value) { setField(value); }
public bool isSet(QuickFix.Text field) { return(isSetField(field)); }