/// <summary>
        /// Retrieve ticker information from FIX message
        /// </summary>
        /// <param name="group"></param>
        public void AddDefaults(EASYROUTERCOMCLIENTLib.IFIXGroup group)
        {
            EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = group.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoDefaultFields, null);

            int nDefaultCount = defaultGroup.get_NumberOfGroups(null);

            for (int j = 0; j < nDefaultCount; j++)
            {
                EASYROUTERCOMCLIENTLib.IFIXGroup singleDefaultGroup = defaultGroup.GetGroupByIndex(j);
                //get the defaults
                //ESDefaultFieldFIXTag=1
                //ESDefaultFieldName=Account
                //ESDefaultFieldValue=xxx
                //ESDefaultFieldEdit=Y
                //ESDefaultFieldDisplay=Account Code
                //ESDefaultFieldInputStyle=String
                string sTag = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESDefaultFieldFIXTag);
                int nTag = int.Parse(sTag);
                string sValue = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESDefaultFieldValue);
                Add(nTag, sValue);
                System.Diagnostics.Debug.Print("TICKER DEFAULTS [{0}] = [{1}] [{2}]", m_sExchange, nTag, sValue);
            }
        }
        /// <summary>
        /// Get Market mode from FIX Message
        /// </summary>
        /// <param name="FIXMsg"></param>
        /// <returns></returns>
        public bool DecodeFIX(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            bool bRetVal = false;

            m_sSymbol = FIXMsg.get_AsString(VDMFIXTagConstants.esFIXTagESTickerMnemonic);

            EASYROUTERCOMCLIENTLib.IFIXGroup group = FIXMsg.GetGroupByTag(VDMFIXTagConstants.esFIXTagESNoTradingStatus, null);

            if (group != null)
            {
                int nCount = group.get_NumberOfGroups(null);

                for (int i = 0; i < nCount; i++)
                {
                    EASYROUTERCOMCLIENTLib.IFIXGroup singleGroup = group.GetGroupByIndex(i);
                    int nStatus = singleGroup.get_AsNumber(VDMFIXTagConstants.esFIXTagSecurityTradingStatus);
                    VDMFIXSecurityTradingStatusConstants constant = (VDMFIXSecurityTradingStatusConstants)nStatus;
                    m_status.Add(constant);
                }
                if(m_status.Count > 0)
                    bRetVal = true;
            }
            return bRetVal;
        }
        /// <summary>
        /// Additional instrument data
        /// </summary>
        /// <param name="FIXMsg"></param>
        public void AdditonalUpdates(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagNoRelatedSym, null);

            string sSecurityID = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityID);
            if (sSecurityID != string.Empty)
                m_sSecurityID = sSecurityID;

            string sIDSource = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagIDSource);
            if (sSecurityID != string.Empty)
                m_sSecurityID = sSecurityID;

            string sMDExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESMarketDataSecurityExchange);
            if (sMDExchange != string.Empty)
                m_sMDExchange = sMDExchange;

            if (defaultGroup != null)
            {
                int nDefaultCount = defaultGroup.get_NumberOfGroups(null);

                int nEarliestYearMonth = 0;
                string sUnderlyingMnemonic = string.Empty;
                string sUnderlyingCFICode = string.Empty;
                string sUnderlyingSymbol = string.Empty;
                string sUnderlyingCurrency = string.Empty;
                string sUnderlyingOppCurrency = string.Empty;
                double dUnderlyingUnitTickValue = 0.0;
                int nYearMonth = 0;
                int nOptionType = -1;

                for (int j = 0; j < nDefaultCount; j++)
                {
                    EASYROUTERCOMCLIENTLib.IFIXGroup singleDefaultGroup = defaultGroup.GetGroupByIndex(j);

                    if (singleDefaultGroup.HasGroup(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingExpiryYearMonth))
                    {
                        string sYearMonth = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingExpiryYearMonth);
                        nYearMonth = int.Parse(sYearMonth);

                        if ((nEarliestYearMonth == 0) || (nYearMonth < nEarliestYearMonth))
                        {
                            nEarliestYearMonth = nYearMonth;
                            sUnderlyingMnemonic = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingLegTickerMnemonic);
                            sUnderlyingCFICode = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagCFICode);
                            sUnderlyingSymbol = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagUnderlyingSymbol);
                            sUnderlyingCurrency = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagUnderlyingCurrency);
                            sUnderlyingOppCurrency = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnderlyingOppCurrency);
                            dUnderlyingUnitTickValue = singleDefaultGroup.get_AsDouble(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnitTickValue);
                            nOptionType = singleDefaultGroup.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagUnderlyingPutOrCall);

                            //Get Month
                            m_nMonth = int.Parse(sYearMonth.Substring(4,2));
                            //Get Year
                            m_nYear = int.Parse(sYearMonth.Substring(0,4));
                        }
                    }
                }

                //if(sUnderlyingMnemonic != string.Empty)
                if (sUnderlyingCFICode != string.Empty)
                    m_sCFICode = sUnderlyingCFICode;
                //if(sUnderlyingSymbol != string.Empty)
                if (sUnderlyingCurrency != string.Empty)
                    m_sCurrency = sUnderlyingCurrency;
                //if(sUnderlyingOppCurrency != string.Empty)
                if (dUnderlyingUnitTickValue != 0.0)
                    m_dUnitTickValue = dUnderlyingUnitTickValue;

                if (nOptionType != -1)
                    m_nOptionType = nOptionType;

            }
        }
        /// <summary>
        /// handle structure update
        /// </summary>
        /// <param name="FIXMsg"></param>
        public void ReceiveStructureUpdate(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            m_bSubscribedAdditionalInfo = true;

            int nNumber = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESDecimalPlaces);

            int nPrefRiskValue = 0;
            if (FIXMsg.GetNumber(out nPrefRiskValue, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESPreferredRiskArrayType))
                m_nFIXTagESPreferredRiskArrayType = nPrefRiskValue;

            if(nNumber != 0)
                m_nESDecimalPlaces = nNumber;

            double dPriceMovement = 0.0;
            if (FIXMsg.GetDouble(out dPriceMovement, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESPriceMovement ))
                m_nFIXTagESPreferredRiskArrayType = nPrefRiskValue;

            if (dPriceMovement != 0)
                m_dPriceMovement = dPriceMovement;

            string sStrategyCode = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESStrategyCode);
            if (sStrategyCode != string.Empty)
                m_sStrategyCode = sStrategyCode;

            string sSecurityID = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityID);
            if (sSecurityID != string.Empty)
                m_sSecurityID = sSecurityID;

            string sIDSource = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagIDSource);
            if (sIDSource != string.Empty)
                m_sIDSource = sIDSource;

            string sCombinedCommodityCode = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESCombinedCommodityCode);
            if (sCombinedCommodityCode != string.Empty)
                m_sCombinedCommodityCode = sCombinedCommodityCode;

            string sClearingHouse = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESClearingHouse);
            if (sClearingHouse != string.Empty)
            {
                m_sClearingHouse = sClearingHouse;

                System.Diagnostics.Debug.WriteLine(this.ESTickerMnemonic + " " + m_sClearingHouse);
            }

            int nOptionType = 0;
            if (FIXMsg.GetNumber(out nOptionType, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPutOrCall))
            {
                //defaults to 1 - call if never here
                m_nOptionType = nOptionType;
            }

            //RISK ARRAYS
            string sRiskArray = string.Empty;
            int nRiskArrayType = 0;

            if (FIXMsg.HasGroup(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoRiskArrays))
            {
                EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoRiskArrays, null);

                if (defaultGroup != null)
                {
                    int nDefaultCount = defaultGroup.get_NumberOfGroups(null);

                    for (int j = 0; j < nDefaultCount; j++)
                    {
                        EASYROUTERCOMCLIENTLib.IFIXGroup singleDefaultGroup = defaultGroup.GetGroupByIndex(j);

                        int nValue = singleDefaultGroup.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESRiskArrayType);
                        if (nValue != nRiskArrayType)
                        {
                            CreateRiskArray(nValue, sRiskArray);
                            nRiskArrayType = nValue;
                        }
                        string sValue = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESRiskArrayValue);

                        if (sValue != null)
                        {
                            sRiskArray = sRiskArray + sValue + "\\";
                        }
                    }
                }
            }
            CreateRiskArray(nRiskArrayType, sRiskArray);
        }
Esempio n. 5
0
        /// <summary>
        /// Get Process Account Details from FIX message
        /// </summary>
        /// <param name="FIXMsg"></param>
        public void ProcessAccount(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            //repeats ESNoSecurityExchanges=2
            m_nAccountID = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESAccountID);
            m_sAccountName = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESAccountName);

            bool bHasGroup = FIXMsg.HasGroup(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoSecurityExchanges);

            //note pass null
            EASYROUTERCOMCLIENTLib.IFIXGroup group = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoSecurityExchanges, null);

            if (group != null)
            {
                int nCount = group.get_NumberOfGroups(null);

                for(int i = 0; i < nCount; i++)
                {
                    EASYROUTERCOMCLIENTLib.IFIXGroup singleGroup = group.GetGroupByIndex(i);

                    string sExchange = singleGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityExchange);

                    AddTicker(sExchange, singleGroup);
                }
            }
        }