public async Task AllTogether() { var configRepo = new ConfigRepository(new List <IExchangeConfig> { new KrakenConfig() }.ToArray()); var config = await configRepo.Get(); config[AltName].GroupMinutes = 15; config[AltName].GroupForLongMacdMinutes = 60; _dt = DateTime.Now.AddHours(-26); var trades = (await _tradeRepository.LoadTrades(AltName, _dt)).ToList(); var grouped = trades.GroupAll(config[AltName].GroupMinutes, GroupBy.Minute).ToList(); var macd = grouped.Macd(config[AltName].MacdSlow, config[AltName].MacdFast, config[AltName].MacdSignal).ToList(); var rsi = grouped.RelativeStrengthIndex(config[AltName].RsiEmaPeriods); var grouped2 = trades.GroupAll(config[AltName].GroupForLongMacdMinutes, GroupBy.Minute).ToList(); var macd2 = grouped2.Macd(config[AltName].MacdSlow, config[AltName].MacdFast, config[AltName].MacdSignal).ToList(); var lines = (from m in macd join r in rsi on m.DateTime equals r.DateTime join g in grouped on m.DateTime equals g.DateTime join m2 in macd2 on m.DateTime equals m2.DateTime into gm2 from m2 in gm2.DefaultIfEmpty() select $"{m.DateTime},{r.Price},{m.Macd},{m.Signal},{g.Volume},{g.Price},{g.PriceMin},{g.PriceMax},{m2?.Macd},{m2?.Signal}").ToList(); lines.Insert(0, "Date,RSI,MACD,Signal,Volume,PriceAvg,PriceMin,PriceMax,MACD2,Signal2"); Write("macd_rsi", lines); }
public async Task LoadTradesTask() { var repo = new TradeRepository(); var result = await repo.LoadTrades("XBTUSD", new DateTime(2017, 11, 02, 11, 40, 00), new DateTime(2017, 11, 03, 11, 40, 00)); Assert.That(result.Any(), Is.True); }
private async Task <decimal> SetupTradeService(string pair, DateTime start, DateTime end) { var real = new TradeRepository(); var config = _container.Resolve <Config>(); trades = (await real.LoadTrades(pair, start.AddHours(-config.Pairs[pair].LoadHours), end)).ToList(); var repo = _container.Resolve <ITradeRepository>(); repo.LoadTrades(Arg.Any <string>(), Arg.Any <DateTime>(), Arg.Any <DateTime>()) .Returns(args => { var startDate = Convert.ToDateTime((object)args[1]).AddHours(-config.Pairs[pair].LoadHours); var endDate = Convert.ToDateTime((object)args[2]); return(trades.Where(x => x.DateTime > startDate && x.DateTime < endDate)); }); return(trades.Last().Price); }