public List <MACD> MACD(int fastPeriod = 12, int slowPeriod = 26, int signalPeriod = 9) { int startIndex, count; double[] macd = new double[Candles.Count]; double[] macdSignal = new double[Candles.Count]; double[] macdHistogram = new double[Candles.Count]; List <MACD> macdData = new List <MACD>(); TA.Core.Macd(0, Candles.Count - 1, Candles.Select(quote => (double)quote.Close).ToArray(), fastPeriod, slowPeriod, signalPeriod, out startIndex, out count, macd, macdSignal, macdHistogram); for (int index = 0; index < macd.Length; ++index) { macdData.Add(new MACD() { Value = (decimal)macd[index], Signal = (decimal)macdSignal[index], Histogram = (decimal)macdHistogram[index], }); } macdData = macdData.Take(count).ToList(); if (macdData.Count > 0) { } return(macdData); }
public List <decimal> WilliamR(int period) { int startIndex, count; double[] willR = new double[Candles.Count]; TA.Core.WillR(0, Candles.Count - 1, Candles.Select(quote => (double)quote.High).ToArray(), Candles.Select(quote => (double)quote.Low).ToArray(), Candles.Select(quote => (double)quote.Close).ToArray(), period, out startIndex, out count, willR); return(willR.Select(x => (decimal)x).ToList()); }
public decimal RSI(int period = 14) { int startIndex, count; double[] rsi = new double[Candles.Count]; TA.Core.Rsi(0, Candles.Count - 1, Candles.Select(quote => (double)quote.Close).ToArray(), period, out startIndex, out count, rsi); return(rsi.Select(x => (decimal)x).Where(x => x != 0).LastOrDefault()); }
public List <decimal> EMA(int period) { int startIndex, count; double[] ema = new double[Candles.Count]; TA.Core.Ema(0, Candles.Count - 1, Candles.Select(quote => (float)quote.Close).ToArray(), period, out startIndex, out count, ema); return(ema.Select(x => (decimal)x).Take(ema.Count() - period + 1).ToList()); }
public List <decimal> SMA(int period) { int startIndex, count; double[] sma = new double[Candles.Count]; TA.Core.Sma(0, Candles.Count - 1, Candles.Select(quote => quote.Close).Cast <float>().ToArray(), period, out startIndex, out count, sma); return(sma.Select(x => (decimal)x).ToList()); }
public CryptoTraderStats StartFromFile(string market) { _market = market; var prices = Candles.Select(c => CreateTicker(_market, c.Low, c.High, c.Timestamp)).ToList(); _trades.Add(CreateTrade(_market, prices[0], Strategy.Settings.TradingBudget)); foreach (var ticker in prices) { UpdateTicker(ticker); } GetStats(); return(_stats); }
public List <Stochastic> Stochastic(int periodK = 14, int periodD = 3, int periodDN = 3) { List <Stochastic> stochastic = new List <Stochastic>(); //var Candles = GetData().ToList(); int start, count; double[] slowK = new double[Candles.Count]; double[] slowD = new double[Candles.Count]; TA.Core.Stoch(0, Candles.Count - 1, Candles.Select(x => (double)x.High).ToArray(), Candles.Select(x => (double)x.Low).ToArray(), Candles.Select(x => (double)x.Close).ToArray(), periodK, periodD, TA.Core.MAType.Sma, periodDN, TA.Core.MAType.Sma, out start, out count, slowK, slowD); for (int i = 0; i < count; ++i) { stochastic.Add(new Stochastic() { Value = (decimal)slowD[i], Signal = (decimal)slowK[i] }); } return(stochastic.ToList()); }
public List <decimal> AveragePrice() { return(Candles.Select(candle => (candle.Open + candle.High + candle.Low + candle.Close) / 4).ToList()); }