/// <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;
 }