Esempio n. 1
0
        protected void DoCleanOldSecurities()
        {
            while (true)
            {
                Thread.Sleep(_SECURITIES_REMOVEL_PERIOD);//Once every hour

                lock (tLock)
                {
                    try
                    {
                        List <int> keysToRemove = new List <int>();
                        foreach (int key in ContractsTimeStamps.Keys)
                        {
                            DateTime timeStamp = ContractsTimeStamps[key];

                            if ((DateTime.Now - timeStamp).Hours >= _MAX_ELAPSED_HOURS_FOR_MARKET_DATA)
                            {
                                keysToRemove.Add(key);
                            }
                        }

                        foreach (int keyToRemove in keysToRemove)
                        {
                            ContractsTimeStamps.Remove(keyToRemove);
                            ActiveSecuritiesQuotes.Remove(keyToRemove);
                        }
                    }
                    catch (Exception ex)
                    {
                        DoLog(string.Format("@{1}: There was an error cleaning old securities from market data flow error={0} ", ex.Message, GetConfig().Name),
                              Main.Common.Util.Constants.MessageType.Error);
                    }
                }
            }
        }
Esempio n. 2
0
        protected void RemoveSymbol(string symbol)
        {
            List <int> keysToRemove = new List <int>();

            foreach (int key in ActiveSecuritiesQuotes.Keys)
            {
                Security sec = ActiveSecuritiesQuotes[key];

                if (sec.Symbol == symbol)
                {
                    keysToRemove.Add(key);
                }
            }

            foreach (int keyToRemove in keysToRemove)
            {
                ContractsTimeStamps.Remove(keyToRemove);
                ActiveSecuritiesQuotes.Remove(keyToRemove);
            }
        }
Esempio n. 3
0
        protected CMState ProcessMarketDataRequestQuotes(Wrapper wrapper)
        {
            string symbol  = (string)wrapper.GetField(MarketDataRequestField.Symbol);
            int    mdReqId = (int)wrapper.GetField(MarketDataRequestField.MDReqId);

            Security sec = new Security()
            {
                Symbol = symbol
            };

            lock (ActiveSecuritiesQuotes)
            {
                ActiveSecuritiesQuotes.Add(mdReqId, sec);
            }


            Thread RequestMarketDataThread = new Thread(DoRequestMarketDataQuotes);

            RequestMarketDataThread.Start(symbol);

            return(CMState.BuildSuccess());
        }