/// <summary> /// set order status - exec type /// </summary> /// <param name="FIXMsg"></param> public virtual void SetStatus(VDMIFIXMessage FIXMsg) { string sStatus; if (FIXMsg.GetString(out sStatus, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagExecType)) m_sExecutionReportStatus = (Status)sStatus[0]; else if (FIXMsg.MsgType == EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgOrderCancelReject) m_sExecutionReportStatus = Status.Rejected; }
/// <summary> /// Parse FIX msg to obtain trade information /// </summary> /// <param name="FIXMsg"></param> /// <returns></returns> public override bool ParseFix(VDMIFIXMessage FIXMsg) { bool bSuccess = true; string sExecID = string.Empty; if (FIXMsg.GetString(out sExecID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagExecID)) m_sExecID = sExecID; int nExecQty = 0; if (FIXMsg.GetNumber(out nExecQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagLastShares)) m_nExecQty = nExecQty; EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoUnderlyingFills, null); if (defaultGroup != null) { int nDefaultCount = defaultGroup.get_NumberOfGroups(null); if (nDefaultCount == 1) { //outright //do nothing } else { for (int j = 0; j < nDefaultCount; j++) { TradeLegs leg = new TradeLegs(); string sESUnderlyingTickerMnemonic = string.Empty; if (FIXMsg.GetString(out sESUnderlyingTickerMnemonic, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingTickerMnemonic)) leg.UnderlyingTickerMnemonic = sESUnderlyingTickerMnemonic; string sUnderlyingExecID = string.Empty; if (FIXMsg.GetString(out sUnderlyingExecID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingExecID)) leg.ExecID = sExecID; int nUnderlyingExecQty = 0; if (FIXMsg.GetNumber(out nUnderlyingExecQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLastShares)) leg.ExecQty = nUnderlyingExecQty; int nLegNumber = 0; if (FIXMsg.GetNumber(out nLegNumber, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLegNumber)) leg.LegNumber = nLegNumber; double dPrice = 0; if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLastPx)) m_dTradePrice = dPrice; string sSide = string.Empty; if (FIXMsg.GetString(out sSide, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingSide)) leg.Side = sExecID; m_Legs.Add(leg); } } } bSuccess = base.ParseFix(FIXMsg); return bSuccess; }
/// <summary> /// Parse the FIX message for order details /// </summary> /// <param name="FIXMsg"></param> /// <returns></returns> public virtual bool ParseFix(VDMIFIXMessage FIXMsg) { bool bSuccess = true; try { SetPrice(FIXMsg); int nOrderQty = 0; if (FIXMsg.GetNumber(out nOrderQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrderQty)) m_nOrderQty = nOrderQty; DateTime TransactTime; if (FIXMsg.GetTime(out TransactTime, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagTransactTime)) m_TransactTime = TransactTime; string sClOrdID = string.Empty; if (FIXMsg.GetString(out sClOrdID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagClOrdID)) m_sClOrdID = sClOrdID; string sOrdID = string.Empty; if (FIXMsg.GetString(out sOrdID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrderID)) m_sOrdID = sOrdID; int nPrimaryBOID = 0; if (FIXMsg.GetNumber(out nPrimaryBOID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESBOIDPrimary)) m_nPrimaryBOID = nPrimaryBOID; #if DEBUG //if (nPrimaryBOID != 366) // return false; #endif int nSecondBOID = 0; if (FIXMsg.GetNumber(out nSecondBOID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESBOIDSecondary)) m_nSecondBOID = nSecondBOID; int nLeavesQty = 0; if (FIXMsg.GetNumber(out nLeavesQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagLeavesQty)) m_nLeavesQty = nLeavesQty; int nCumQty = 0; if (FIXMsg.GetNumber(out nCumQty, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagCumQty)) m_nCumQty = nCumQty; int AccountID = 0; if (FIXMsg.GetNumber(out AccountID, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESAccountID)) m_iAccountID = AccountID; string sSide = string.Empty; if (FIXMsg.GetString(out sSide, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSide)) m_sSide = sSide; string sTimeInForce = String.Empty; if (FIXMsg.GetString(out sTimeInForce, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagTimeInForce)) SetFIXTimeInForce(sTimeInForce); string sOrderType = String.Empty; if (FIXMsg.GetString(out sOrderType, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagOrdType)) SetFIXOrderType(sOrderType); SetStatus(FIXMsg); } catch (Exception) { bSuccess = false; } return bSuccess; }