Exemple #1
0
        /// <summary>
        /// Create thread that will save Ticks
        /// </summary>
        /// <param name="listTicks">List with source ticks</param>
        /// <param name="saveIntervalMs">Interval in miliseconds to save the ticks</param>
        /// <param name="historicalTicksConnString">connection string to DB</param>
        public SaveTicks(BlockingCollection <MessageTick> listTicks, int saveIntervalMs, string historicalTicksConnString)
        {
            ticksRepository = new HistoricalTicksDBRepository(historicalTicksConnString);

            saveIntervalInMs = saveIntervalMs;
            thread           = new Thread(() => ExecuteMethod(listTicks, this));
            thread.Start();
        }
        internal SymbolsTickManager()
        {
            mainConfig            = ConfigurationsManager.ConfigurationsManager.GetConfigurations();
            config                = mainConfig.ConvRatesServiceConfiguration;
            ticksRepository       = new HistoricalTicksDBRepository(mainConfig.HistoricalTicksConfiguration.HistoricalTicksConnString);
            instrumentsRepository = new TradingInstrumentsDBRepository(mainConfig.BackOfficeConfiguration.TradingInstrumentsManagementConnectionString);

            long instrumentsRefreshTimerPeriodMsec = Convert.ToInt64(config.SupportedSymbolsRefreshPeriodMin) * 60000;

            instrumentsRefreshTimer.Change(0, instrumentsRefreshTimerPeriodMsec);

            registerLatestSymbolsProviders();
        }
Exemple #3
0
        static void SaveAndSendTicks(ITicksContainer containerTicks, IHistoricalTicksRepository repository)
        {
            long start = DateTime.Now.Ticks;
            //ITicksContainer _containerTicks = containerTicks;

            Dictionary <string, LatestSymbolTick> dictToSend = new Dictionary <string, LatestSymbolTick>();

            ITicksContainer containerLatestTicks = new TicksDataTableContainer();

            foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheBid)
            {
                containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider);

                LatestSymbolTick latestSymbolTick = new LatestSymbolTick {
                    Symbol = tick.Value.Symbol, BidValue = tick.Value.DecimalValue, Timestamp = tick.Value.DateTime
                };
                dictToSend.Add(latestSymbolTick.Symbol, latestSymbolTick);
            }

            foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheAsc)
            {
                containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider);
            }

            symbolsCacheBid.Clear();
            symbolsCacheAsc.Clear();

            double msPrepare = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds;

            start = DateTime.Now.Ticks;

            Int32 totalTickCount = containerTicks.Count();

            repository.TicksInsert(containerLatestTicks, containerTicks);
            double msInsert = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds;

            containerLatestTicks = null;

            if (HSTickWriter.provider != null)
            {
                HSTickWriter.provider.ProvideLatestSymbols(dictToSend);
            }

            Console.WriteLine("Saved in " + DateTime.Now.Date.ToShortDateString() + ", " + DateTime.Now.ToLongTimeString() + "; prepare: " + msPrepare.ToString() + "; ïnsert:" + msInsert.ToString() + "; count: " + totalTickCount.ToString());
        }