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); }