コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <summary>
        /// handle component status events 
        /// </summary>
        /// <param name="FIXMsg"></param>
        void UpdateComponentStatus(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            string sModule = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentModule);
            int nModule = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentChannel);
            string sCategory = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentCategory);

            if (sModule != RouterModule && nModule != RouterChannel)
            {
                SecurityExchange exchange = m_InstrumentManager.GetSecurityExchange(sModule);

                if (exchange != null)
                {
                    string strExchangeDesc = exchange.ExchangeDesc;

                    if ((sCategory == MESSAGEFIX3Lib.FIXComponentCategoryConstants.esFIXComponentCategoryOrders) ||
                        (sCategory == MESSAGEFIX3Lib.FIXComponentCategoryConstants.esFIXComponentCategoryPricesDepth) ||
                        (sCategory == MESSAGEFIX3Lib.FIXComponentCategoryConstants.esFIXComponentCategoryPricesBest) ||
                        (sCategory == MESSAGEFIX3Lib.FIXComponentCategoryConstants.esFIXComponentCategoryStructure))
                    {
                        int nTotalActive = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentTotalActive);
                        int nTotalWaiting = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentTotalActive);
                        int nTotalInactive = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentTotalWaiting);
                        int nTotalStale = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESComponentTotalStale);

                        ComponentStatusArgs args = new ComponentStatusArgs(sCategory,sModule,exchange.ExchangeDesc);
                        args.SetStatus(nTotalActive, nTotalWaiting, nTotalInactive);

                        if(RecvExchangeStatusMsgEvent!=null)
                        {
                            RecvExchangeStatusMsgEvent(this, args);
                        }
                    }
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// handle structre data
        /// </summary>
        /// <param name="FIXMsg"></param>
        void m_Router_RecvStructureMsg(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            string sType = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityResponseType);

            if (sType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeReturnESExchanges)
            {
                ESExchange esexchange = m_InstrumentManager.HandleESExchangeUpdate(FIXMsg);
                string sExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityExchange);
                string sESExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESExchange);
                System.Diagnostics.Debug.WriteLine("SEC DEF V EXCHANGE = " + sExchange + " ESEXCHANGE = " + sESExchange);
                if (RecvStructuredMsgEvent != null && esexchange != null)
                    RecvStructuredMsgEvent(this, esexchange);

                if (esexchange != null)
                {
                    if (m_bEnableAutoSubcription)
                    {
                        if (esexchange.Subscribed == false)
                        {
                            RequestStructure(sExchange, sESExchange);
                            m_subscriptionMap.Add(sExchange + sESExchange, null);
                            esexchange.Subscribed = true;
                        }
                    }
                }

            }
            else if (sType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeReturnSecurityExchanges)
            {
                //Security
                SecurityExchange exchange = m_InstrumentManager.HandleSecurityUpdate(FIXMsg);
                //string sExchange = FIXMsg.get_AsString(FIXTagConstants.esFIXTagSecurityExchange);
                //string sExchangeDesc = FIXMsg.get_AsString(FIXTagConstants.esFIXTagESSecurityExchangeDesc);
                //System.Diagnostics.Debug.WriteLine("SEC DEF U MESSAGE EXCHANGE = " + sExchange + " DESCRIPTION = " + sExchangeDesc);
                if (RecvStructuredMsgEvent != null && exchange != null)
                    RecvStructuredMsgEvent(this, exchange);
                return;
            }
            else if (sType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeEndOfSecurityResponses)
            {
                //Completion
                m_InstrumentManager.HandleCompletionUpdate(FIXMsg);
                if (RecvStructuredMsgEvent != null)
                    RecvStructuredMsgEvent(this, new StructureDataEventArg(StructureDataType.EndOfResponses));

                //string sExchange = FIXMsg.get_AsString(FIXTagConstants.esFIXTagSecurityExchange);
                //System.Diagnostics.Debug.WriteLine("SEC DEF X MESSAGE COMPLETION EXCHANGE = " + sExchange);

                return;
            }
            else if (sType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeReturnSymbols)
            {
                CommoditySymbol commodity = m_InstrumentManager.HandleCommodityUpdate(FIXMsg);
                //string sExchange = FIXMsg.get_AsString(FIXTagConstants.esFIXTagSecurityExchange);
                //string sESExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESExchange);
                //string sSymbol = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSymbol);
                //string sSecurityType = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityType);

                //System.Diagnostics.Debug.WriteLine("SEC DEF W MESSAGE COMPLETION EXCHANGE = " + sExchange + " Es Exchange = " + sESExchange  + " Symbol = " + sSymbol);
                if (RecvStructuredMsgEvent != null && commodity != null)
                    RecvStructuredMsgEvent(this, commodity);

                //hack for OPT
                //if (commodity.CommodityObj.CommodityCode == "OPT")
                if (m_bEnableAutoSubcription)
                {
                    if (commodity != null)
                    {
                        string sKey = commodity.ToString();//sExchange + sESExchange + sSymbol + sSecurityType;

                        if (commodity.Subscribed != true)
                        {
                            //RequestStructure(sExchange, sESExchange, sSymbol, sSecurityType);
                            RequestStructure(commodity.Exchange, commodity.ESExchange, commodity.CommoditySymbolCode, commodity.CommodityObj.CommodityCode);
                            commodity.Subscribed = true;
                        }
                    }
                }
            }
            else if (sType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeReturnSecurities)
            {
                TEInstrument instrument = m_InstrumentManager.HandleTEInstrumentUpdate(FIXMsg);
                if (instrument != null)
                {
                    if (RecvStructuredMsgEvent != null)
                        RecvStructuredMsgEvent(this, instrument);
                    //Get price
                    if (instrument.SubscribedAdditional == false)
                        instrument.RequestStructure(this);
                    //request price
                    if(m_bEnableAutoPriceSubcription == true)
                        m_Router.SendMarketDataRequest(instrument.SecurityExchange, instrument.ESTickerMnemonic, EFIXValueSubscriptionRequestType.eSubscriptionSubscribe, SubscribeAll);
                }
            }

            string sTicker = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESTickerMnemonic);
            if (sTicker != null)
            {
                if (sTicker.Length > 0)
                {
                    System.Diagnostics.Debug.WriteLine("SEC DEF MESSAGE TE = " + sTicker);
                    string sSecurityType = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityResponseType);
                    if (sSecurityType != null)
                    {
                        if (sSecurityType == MESSAGEFIX3Lib.FIXSecurityResponseTypeConstants.esFIXSecurityResponseTypeRelationshipUpdate)
                        {
                            //update
                            System.Diagnostics.Debug.WriteLine("SEC DEF MESSAGE TE = " + sTicker);
                            string sESTickerMnemonic = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESTickerMnemonic);

                            TEInstrument instrument = m_InstrumentManager.GetDirectTE(sESTickerMnemonic);
                            if (instrument != null)
                            {
                                instrument.ReceiveStructureUpdate(FIXMsg);
                            }
                        }
                    }
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Recieves Account Message
        /// </summary>
        /// <param name="FIXMsg"></param>
        void m_Router_RecvOrderMsg(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            EASYROUTERCOMCLIENTLib.FIXMsgConstants type = FIXMsg.MsgType;

            switch (type)
            {
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESAccount:
                    //System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESAccount.ToString());
                    //m_ERUser.ProcessAccount(FIXMsg);
                    m_AccountManagement.DecodeFIX((MESSAGEFIX3Lib.IFIXMessage)FIXMsg);

                    break;
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgOrderCancelReject:
                    {
                        //System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgOrderCancelReject.ToString());
                        OrderInfo order = m_OrderManagement.ProcessOrderCancelReject(FIXMsg);

                        if (order != null && RecvOrderMsgEvent != null)
                            RecvOrderMsgEvent(this, order);

                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgExecutionReport:
                    {
                        //System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgExecutionReport.ToString());
                        OrderInfo order = m_OrderManagement.ProcessExecutionReport(FIXMsg);

                        if (order != null && RecvOrderMsgEvent != null)
                            RecvOrderMsgEvent(this, order);

                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESRiskAccount:
                    {
                        //System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESRiskAccount.ToString());
                        m_AccountManagement.DecodeFIX((MESSAGEFIX3Lib.IFIXMessage)FIXMsg);
                        if (RecvRiskMsgEvent != null)
                        {
                            foreach (KeyValuePair<long, Account> kvp in m_AccountManagement)
                            {
                                Account theAccount = kvp.Value;
                                if (theAccount.IsDirty)
                                {
                                    RecvRiskMsgEvent(this, theAccount);
                                    theAccount.IsDirty = false;
                                }
                                foreach (KeyValuePair<string, Position> kvp2 in theAccount.Positions)
                                {
                                    Position thePosition = kvp2.Value;
                                    if (thePosition.IsDirty)
                                    {
                                        RecvRiskMsgEvent(this, thePosition);
                                        theAccount.IsDirty = false;
                                    }
                                }
                            }
                        }
                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESPosition:
                    {
                        //System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESPosition.ToString());
                        m_AccountManagement.DecodeFIX((MESSAGEFIX3Lib.IFIXMessage)FIXMsg);
                        if (RecvRiskMsgEvent != null)
                        {
                            foreach (KeyValuePair<long, Account> kvp  in m_AccountManagement)
                            {
                                Account theAccount = kvp.Value;
                                if (theAccount.IsDirty)
                                {
                                    RecvRiskMsgEvent(this, theAccount);
                                    theAccount.IsDirty = false;
                                }
                                foreach (KeyValuePair<string, Position> kvp2 in theAccount.Positions)
                                {
                                    Position thePosition = kvp2.Value;
                                    if (thePosition.IsDirty)
                                    {
                                        RecvRiskMsgEvent(this, thePosition);
                                        theAccount.IsDirty = false;
                                    }
                                }
                            }
                        }
                        break;
                    }
                default:
                    System.Diagnostics.Debug.WriteLine(EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESAccount.ToString());
                    break;
            }
        }
コード例 #6
0
        /// <summary>
        /// recieve market update
        /// </summary>
        /// <param name="FIXMsg"></param>
        void m_Router_RecvMarketDataMsg(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            EASYROUTERCOMCLIENTLib.FIXMsgConstants type = FIXMsg.MsgType;

            switch(type)
            {
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgMarketDataSnapFull:
                    {
                        TradeData data = m_PriceManagement.ProcessPrice(FIXMsg, true);
                        if (RecvPriceMsgEvent != null)
                            RecvPriceMsgEvent(this, data);
                        data = null;
                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgMarketDataSnapInc:
                    {
                        TradeData data = m_PriceManagement.ProcessPrice(FIXMsg, true);
                        if (RecvPriceMsgEvent != null)
                            RecvPriceMsgEvent(this, data);
                        data = null;
                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgSecuritySts:
                    {
                        SecurityStatus data = new SecurityStatus();

                        if (data.DecodeFIX(FIXMsg))
                        {
                            TEInstrument instrument = m_InstrumentManager.GetDirectTE(data.Symbol);
                            if(instrument != null)
                            {
                                instrument.SecurityStatus = null;
                                instrument.SecurityStatus = data;
                            }

                            if (RecvPriceMsgEvent != null)
                            {
                                RecvPriceMsgEvent(this, data);
                            }
                        }
                        data = null;
                    }
                    break;
                default:
                    break;
            }
        }
コード例 #7
0
        /// <summary>
        /// Recieve account and logon message
        /// </summary>
        /// <param name="FIXMsg"></param>
        void m_Router_RecvGeneralMsg(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            EASYROUTERCOMCLIENTLib.FIXMsgConstants type = FIXMsg.MsgType;

            switch (type)
            {
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESAccount:
                    System.Diagnostics.Debug.WriteLine(type.ToString());
                    break;
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgLogon:
                    {
                        Logon logon = new Logon();
                        if(FIXMsg.HasGroup(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagText))
                        {
                            string sMessage = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagText);
                            string[] split = sMessage.Split('|');
                            if (split.Length > 0)
                                logon.Error = split[0];
                            else
                                logon.Error = "Logon Error Undefined";
                            logon.ErrorCode = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESLogonFailureCode);
                            logon.LoggedOn = false;
                        }
                        else
                        {
                            System.Diagnostics.Trace.WriteLine(type.ToString());
                            RequestStructure("0");
                            logon.LoggedOn = true;
                            LoadSystemSettings();
                        }
                        logon.ConnectionType = (Logon.ConnectionTypes)FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESEasyRouterType);
                        logon.ConnectionDescription = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESEasyRouterDesc);

                        if (RecvGeneralMsgEvent != null)
                            RecvGeneralMsgEvent(this, logon);
                        break;
                    }
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgEHControl:
                    break;
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgESComponentStatus:
                    UpdateComponentStatus(FIXMsg);
                    break;
                case EASYROUTERCOMCLIENTLib.FIXMsgConstants.esFIXMsgLogout:
                    {
                        Logon logoff = new Logon();
                        logoff.Error = "Successfully Logged Out";
                        logoff.LoggedOn = false;
                        logoff.LoggedOff = true;
                        if (RecvGeneralMsgEvent != null)
                            RecvGeneralMsgEvent(this, logoff);
                        break;
                    }
                default:
                    System.Diagnostics.Debug.WriteLine(type.ToString());
                    break;
            }
        }
コード例 #8
0
        //TODO: [15/04/07] YKC - Renable when decide what to do with completions
        //int m_nSecurityCompletion = 0;
        //int m_nESExchangeCompletion = 0;
        //int m_nTEInstrumentCompletion = 0;
        //int m_nCommodityCompletion = 0;
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public bool HandleCompletionUpdate(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            //TODO: [15/04/07] YKC - Renable when decide what to do with completions

            //m_nSecurityCompletion = 0;
            //m_nESExchangeCompletion = 0;
            //m_nTEInstrumentCompletion = 0;
            //m_nCommodityCompletion = 0;

            string sExchange = string.Empty;
            if (FIXMsg.GetString(out sExchange,FIXTagConstants.esFIXTagSecurityExchange))
            {
                //has security
                string sESExchange = string.Empty;
                if (FIXMsg.GetString(out sESExchange,FIXTagConstants.esFIXTagESExchange))
                {
                    //has esexchange
                    string sSecurityType = string.Empty;
                    if(FIXMsg.GetString(out sSecurityType,FIXTagConstants.esFIXTagSecurityType))
                    {
                        string sSymbol = string.Empty;
                        if (FIXMsg.GetString(out sSymbol, FIXTagConstants.esFIXTagSymbol))
                        {
                            string sESTickerMnemonic = string.Empty;
                            if (FIXMsg.GetString(out sESTickerMnemonic, FIXTagConstants.esFIXTagESTickerMnemonic))
                            {
                                System.Diagnostics.Debug.WriteLine(string.Format("COMPLETION [{0}][{1}][{2}][{3}][{4}]", sExchange, sESExchange, sSecurityType, sSymbol, sESTickerMnemonic));
                            }
                            else
                            {
                                System.Diagnostics.Debug.WriteLine(string.Format("COMPLETION [{0}][{1}][{2}][{3}]", sExchange, sESExchange, sSecurityType,sSymbol ));
                            }
                        }
                        else
                        {
                            System.Diagnostics.Debug.WriteLine(string.Format("COMPLETION [{0}][{1}][{2}]", sExchange, sESExchange, sSecurityType));
                        }
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine(string.Format("COMPLETION [{0}][{1}]",sExchange,sESExchange));
                    }
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("COMPLETION [{0}]",sExchange));
                }
            }
            else
            {
                //Completion
                System.Diagnostics.Debug.WriteLine("COMPLETION [Unknown]");
            }

            return true;
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        /// <summary>
        /// Parse msg for instrument data
        /// </summary>
        /// <param name="FIXMsg"></param>
        /// <returns></returns>
        public bool ParseFIX(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            try
            {
                //exchaange
                string sExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityExchange);
                //Esexchange
                string sESExchange = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESExchange);
                //type of instrument
                string sSecurityType = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityType);
                //commodity symbol
                string sSymbol = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSymbol);
                //easyscreen TE symbol
                string sESTickerMnemonic = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESTickerMnemonic);

                string sESTickerDesc = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESTickerDesc);
                //exchange code
                string sTickerSymbol = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESTickerSymbol);
                int nESOrderType = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESSupportPriceType);
                int nESTimeType = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESSupportTimeType);
                bool bESSupportEdit = FIXMsg.get_AsBoolean(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESSupportEdit);
                int lESPriceFormatCode = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESPriceFormatCode);

                m_sSymbol = sSymbol;
                m_sESTickerMnemonic = sESTickerMnemonic;
                m_sESTickerDesc = sESTickerDesc;
                m_sESTickerSymbol = sTickerSymbol;
                m_eOrderType = (OrderType)nESOrderType;
                m_eTimeType = (TimeInForce)nESTimeType;
                m_bESSupportEdit = bESSupportEdit;
                m_lESPriceFormatCode = lESPriceFormatCode;

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

                m_sCFICode = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagCFICode);

                m_sCurrency = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagCurrency);
                m_dUnitTickValue = FIXMsg.get_AsDouble(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESUnitTickValue);
                m_dCompositeDelta = FIXMsg.get_AsDouble(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESCompositeDelta);
                m_dESShortOptAdjust = FIXMsg.get_AsDouble(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESShortOptAdjust);
                m_nESDecimalPlaces = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESDecimalPlaces);

                AdditonalUpdates(FIXMsg);
            }
            catch(Exception)
            {
                return false;
            }
            return true;
        }
コード例 #11
0
        /// <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;

            }
        }
コード例 #12
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);
                }
            }
        }
コード例 #13
0
 /// <summary>
 /// Add Ticker defaults for this account
 /// </summary>
 /// <param name="sExchange"></param>
 /// <param name="group"></param>
 public void AddTicker(string sExchange, EASYROUTERCOMCLIENTLib.IFIXGroup group)
 {
     if(!m_TickerMap.ContainsKey(sExchange))
     {
         TickerDefaults temp = new TickerDefaults(sExchange);
         temp.AddDefaults(group);
         m_TickerMap.Add(sExchange,temp);
     }
 }