/// <summary>
        /// Apply order details
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public bool ApplyOrderDetails(FIXMessage message)
        {
            bool bRetVal = true;

            //add details

            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESTickerMnemonic,m_sESTickerMnemonic);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESTickerSymbol,m_sESTickerSymbol);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESExchange, ESExchange);
            message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESPriceFormatCode,m_lESPriceFormatCode);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityExchange, SecurityExchange);
            message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagPutOrCall, m_nOptionType);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityType, CommodityType);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSymbol,m_sSymbol);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESStrategyCode,m_sStrategyCode);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagSecurityID,m_sSecurityID);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagIDSource,m_sIDSource);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagCFICode,m_sCFICode);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagCurrency,m_sCurrency);
            message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESDecimalPlaces,m_nESDecimalPlaces);
            message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESUnitTickValue,m_dUnitTickValue);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESCombinedCommodityCode, m_sCombinedCommodityCode);
            message.set_AsString(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESClearingHouse, m_sClearingHouse);
            message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESCompositeDelta, m_dCompositeDelta);
            message.set_AsDouble(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESShortOptAdjust, m_dESShortOptAdjust);

            ApplyRiskArray(message);

            return bRetVal;
        }
        //to do
        /// <summary>
        /// Basic defaults that are hard coded and not required
        /// </summary>
        /// <param name="message"></param>
        private void AddConstants(FIXMessage message)
        {
            //cannot be arsed as eurex does not care for this fields :) - TO DO
            message.set_AsString(FIXTagConstants.esFIXTagOpenClose, MESSAGEFIX3Lib.FIXOpenCloseConstants.esFIXOpen);
            message.set_AsNumber(FIXTagConstants.esFIXTagStopPx, 0);
            //Confusion in eat
            message.set_AsString(FIXTagConstants.esFIXTagTradingSessionID, MESSAGEFIX3Lib.FIXSessionConstants.esFIXSessionNormal);

            if(m_nPrimaryBOID != 0)
            {
                message.set_AsNumber(FIXTagConstants.esFIXTagESBOIDPrimary,m_nPrimaryBOID);
            }
        }
 /// <summary>
 /// Apply ticker defaults
 /// </summary>
 /// <param name="sExchange"></param>
 /// <param name="message"></param>
 public void ApplyDefaults(string sExchange, FIXMessage message)
 {
     int iClientID;
     if (!message.GetNumber(out iClientID, MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESAccountID) && m_nAccountID.HasValue)
         message.set_AsNumber(MESSAGEFIX3Lib.FIXTagConstants.esFIXTagESAccountID, (int)m_nAccountID.Value);
     TickerDefaults tickerDefaults = GetTickerDefaults(sExchange);
     if (tickerDefaults != null)
     {
         tickerDefaults.ApplyTickerDefaults(message);
     }
 }
        //TODO: [16/04/07] YKC - Hack as i donot care about order types etc
        /// <summary>
        /// Generate a fix message
        /// </summary>
        /// <param name="MsgType"></param>
        /// <returns></returns>
        public FIXMessage CreateFixMessage(MESSAGEFIX3Lib.FIXMsgConstants MsgType)
        {
            FIXMessage message = new FIXMessage();
            if (Instrument != null)
            {
                message.MsgType = MsgType;
                Instrument.ApplyOrderDetails(message);

                AddConstants(message);
                //Add order details
                if (m_dPrice.HasValue)
                    message.set_AsDouble(FIXTagConstants.esFIXTagPrice, m_dPrice.Value);
                message.set_AsNumber(FIXTagConstants.esFIXTagOrderQty, (int)m_nOrderQty);

                message.set_AsString(FIXTagConstants.esFIXTagSide, m_sSide);
                message.set_AsString(FIXTagConstants.esFIXTagTimeInForce, GetFIXTimeInForce());
                message.set_AsString(FIXTagConstants.esFIXTagOrdType, GetFIXOrderType());
                if (m_iAccountID.HasValue)
                    message.set_AsNumber(FIXTagConstants.esFIXTagESAccountID, (int)m_iAccountID.Value);

                return message;
            }
            return null;
        }