public ExecutionReport( QuickFix.OrderID aOrderID, QuickFix.ExecID aExecID, QuickFix.ExecTransType aExecTransType, QuickFix.ExecType aExecType, QuickFix.OrdStatus aOrdStatus, QuickFix.Symbol aSymbol, QuickFix.Side aSide, QuickFix.OrderQty aOrderQty, QuickFix.LastShares aLastShares, QuickFix.LastPx aLastPx, QuickFix.LeavesQty aLeavesQty, QuickFix.CumQty aCumQty, QuickFix.AvgPx aAvgPx) : base(MsgType()) { set(aOrderID); set(aExecID); set(aExecTransType); set(aExecType); set(aOrdStatus); set(aSymbol); set(aSide); set(aOrderQty); set(aLastShares); set(aLastPx); set(aLeavesQty); set(aCumQty); set(aAvgPx); }
public OrderCancelReject( QuickFix.OrderID aOrderID, QuickFix.ClOrdID aClOrdID) : base(MsgType()) { set(aOrderID); set(aClOrdID); }
public OrderCancelReject( QuickFix.OrderID aOrderID, QuickFix.ClOrdID aClOrdID, QuickFix.OrdStatus aOrdStatus, QuickFix.CxlRejResponseTo aCxlRejResponseTo) : base(MsgType()) { set(aOrderID); set(aClOrdID); set(aOrdStatus); set(aCxlRejResponseTo); }
public DontKnowTrade( QuickFix.OrderID aOrderID, QuickFix.ExecID aExecID, QuickFix.DKReason aDKReason, QuickFix.Side aSide) : base(MsgType()) { set(aOrderID); set(aExecID); set(aDKReason); set(aSide); }
public QuickFix.OrderID getOrderID() { QuickFix.OrderID value = new QuickFix.OrderID(); getField(value); return value; }
public bool isSet(QuickFix.OrderID field) { return(isSetField(field)); }
public QuickFix.OrderID getOrderID() { QuickFix.OrderID value = new QuickFix.OrderID(); getField(value); return(value); }
public QuickFix.OrderID get(QuickFix.OrderID value) { getField(value); return(value); }
public void set(QuickFix.OrderID value) { setField(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); } }
/// <summary> /// Create a synthetic order /// </summary> /// <param name="myMsg"></param> /// <returns>n order</returns> public KaiTrade.Interfaces.Order CreateSyntheticOrder(QuickFix.Message myFixMsg) { KaiTrade.Interfaces.Order myOrder = null; try { if (m_Log.IsInfoEnabled) { m_Log.Info("exec report recd:" + myFixMsg.ToString()); } // Get order manager KaiTrade.Interfaces.OrderManager myOM = KTAFacade.Instance().Factory.GetOrderManager(); // these fields must be present QuickFix.OrderID myOrderID = new QuickFix.OrderID(); myFixMsg.getField(myOrderID); QuickFix.ExecType myExecType = new QuickFix.ExecType(); myFixMsg.getField(myExecType); QuickFix.ExecID myExecID = new QuickFix.ExecID(); myFixMsg.getField(myExecID); QuickFix.OrdStatus myOrdStatus = new QuickFix.OrdStatus(); myFixMsg.getField(myOrdStatus); // Create the order myOrder = myOM.CreateOrder(); // 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(); if (myFixMsg.isSetField(myClOrdID)) { myOrder.ClOrdID = myClOrdID; } } catch (Exception myE) { m_Log.Error("CreateSyntheticOrder", myE); } return myOrder; }