void ISimulationDataProvider.OnNewItem(IInputDataWithTime item)
        {
            ArbitrageStatisticsItem st   = (ArbitrageStatisticsItem)item;
            TickerCollection        coll = Listener.ArbitrageList.FirstOrDefault(c => c.BaseCurrency == st.BaseCurrency && c.MarketCurrency == st.MarketCurrency);

            if (coll == null)
            {
                return;
            }

            coll.Arbitrage.LowestAskHost     = st.LowestAskHost;
            coll.Arbitrage.HighestBidHost    = st.HighestBidHost;
            coll.Arbitrage.Time              = st.Time;
            coll.Arbitrage.LowestAskEnabled  = st.LowestAskEnabled;
            coll.Arbitrage.HighestBidEnabled = st.HighestBidEnabled;
            coll.Arbitrage.LowestAsk         = st.LowestAsk;
            coll.Arbitrage.HighestBid        = st.HighestBid;
            coll.Arbitrage.Spread            = st.Spread;
            coll.Arbitrage.Amount            = st.Amount;
            coll.Arbitrage.MaxProfit         = st.MaxProfit;
            coll.Arbitrage.MaxProfitUSD      = st.MaxProfitUSD;
            if (coll.Arbitrage.UsdTicker != null)
            {
                coll.Arbitrage.UsdTicker.Last = st.RateInUSD;
            }

            coll.Arbitrage.History.Add(st);

            OnArbitrageChanged(Listener, new ArbitrageChangedEventArgs()
            {
                Arbitrage = coll.Arbitrage, TickersInfo = coll
            });
        }
        public IInputDataWithTime NextSimulationItem()
        {
            if (SimulationDataItemIndex >= SimulationData.Count)
            {
                return(null);
            }
            IInputDataWithTime res = SimulationData[SimulationDataItemIndex];

            SimulationDataItemIndex++;
            return(res);
        }