/// <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> /// override base order price as this is a trade price /// </summary> /// <param name="FIXMsg"></param> public override void SetPrice(VDMIFIXMessage FIXMsg) { double dPrice = 0; if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPrice)) { m_dTradePrice = dPrice; m_dTotalFilledPrice = dPrice * m_nExecQty; } m_dPrice = null; }
/// <summary> /// Set the order price /// </summary> /// <param name="FIXMsg"></param> public virtual void SetPrice(VDMIFIXMessage FIXMsg) { double dPrice = 0; if (FIXMsg.GetDouble(out dPrice, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPrice)) m_dPrice = dPrice; }