public bool Calculate()
 {
     if (Exchange == null)
     {
         LogManager.Default.Error("Exchange not specified");
         return(false);
     }
     if (!Exchange.Connect())
     {
         LogManager.Default.Error("Exchange not connected");
         return(false);
     }
     foreach (string baseCurr in BaseCurrencies)
     {
         List <Ticker> tickers = Exchange.Tickers.Where(t => t.BaseCurrency == baseCurr && (MarketCurrencies == null || MarketCurrencies.Contains(t.MarketCurrency))).ToList();
         foreach (Ticker ticker in tickers)
         {
             TickerTradeHistoryInfo tradeInfo = DownloadItem(ticker);
             if (tradeInfo == null)
             {
                 continue;
             }
             Result.Add(tradeInfo);
             Items.Add(tradeInfo);
             RaiseTickerAdded(tradeInfo);
         }
     }
     return(true);
 }
 protected void RaiseTickerAdded(TickerTradeHistoryInfo info)
 {
     if (TickerAdded != null)
     {
         TickerAdded(this, new TickerTradeHistoryInfoEventArgs()
         {
             Info = info
         });
     }
 }
        public TickerTradeHistoryInfo DownloadItem(Ticker ticker)
        {
            SimulationStrategyDataProvider provider = new SimulationStrategyDataProvider();

            provider.DownloadProgressChanged += DownloadProgressChanged;
            TickerInputInfo info = new TickerInputInfo()
            {
                Exchange = ticker.Exchange.Type, KlineIntervalMin = 5, Ticker = ticker, TickerName = ticker.Name
            };
            ResizeableArray <CandleStickData> kline = provider.DownloadCandleStickData(info);

            if (kline == null)
            {
                LogManager.Default.Error("Cannot download candlesticks for " + ticker.Name);
                return(null);
            }

            LogManager.Default.Success("Downloaded candlesticks for " + ticker.Name);
            ticker.CandleStickData.AddRange(kline);

            ResizeableArray <TradeInfoItem> trades = provider.DownloadTradeHistory(info, ticker.CandleStickData.First().Time);

            if (trades == null)
            {
                LogManager.Default.Error("Cannot download trade history for " + ticker.Name);
                return(null);
            }
            LogManager.Default.Success("Downloaded trade history for " + ticker.Name);
            ticker.TradeHistory.AddRange(trades);

            TickerTradeHistoryInfo tradeInfo = new TickerTradeHistoryInfo()
            {
                Ticker = ticker
            };

            tradeInfo.HistogrammIntervalSec = HistogrammIntervalSec;
            return(tradeInfo);
        }