public void IndicatorsCalculatorChangeIndicatorTest() { List <double> changeInd = IndicatorsCalculator.CalcChangeIndicator(smallTestData); Assert.AreEqual(smallTestData.Count, changeInd.Count); double delta = 0.0001d; Assert.AreEqual(double.NaN, changeInd[0]); Assert.AreEqual(1.0d, changeInd[1], delta); // 100% change (1.0 -> 2.0) Assert.AreEqual(0.5d, changeInd[2], delta); // 50% change (2.0 -> 3.0) }
public void IndicatorsCalculatorCalculateWilliamsAccumulationDistributionIndicator() { List <double> willamsAccDistInd = IndicatorsCalculator.CalcWilliamsAccumulationDistributionIndicator(high, low, close); double delta = 0.0001; Assert.AreEqual(5, willamsAccDistInd.Count); Assert.AreEqual(0.0d, willamsAccDistInd[0], delta); Assert.AreEqual(0.2d, willamsAccDistInd[1], delta); Assert.AreEqual(0.5d, willamsAccDistInd[2], delta); Assert.AreEqual(1.4d, willamsAccDistInd[3], delta); Assert.AreEqual(0.8d, willamsAccDistInd[4], delta); }
public void IndicatorsCalculatorMovingMeanTest() { List <double> movingMeanInd = IndicatorsCalculator.CalcMovingMean(smallTestData, 3); Assert.AreEqual(smallTestData.Count, movingMeanInd.Count); double delta = 0.0001d; Assert.AreEqual(double.NaN, movingMeanInd[0]); Assert.AreEqual(double.NaN, movingMeanInd[1]); Assert.AreEqual(2.0d, movingMeanInd[2], delta); // (1+2+3)/3 = 2; Assert.AreEqual(3.0d, movingMeanInd[3], delta); // (2+3+4)/3 = 2; }
public void IndicatorsCalcChaikinsVolatilityIndex() { List <double> ChalkinsVolatility = IndicatorsCalculator.CalcChaikinsVolatilityIndex(high, low, 2); Assert.AreEqual(ChalkinsVolatility.Count, high.Count); double delta = 0.0001; Assert.AreEqual(double.NaN, ChalkinsVolatility[0]); Assert.AreEqual(double.NaN, ChalkinsVolatility[1]); Assert.AreEqual(-0.325d, ChalkinsVolatility[2], delta); Assert.AreEqual(0.10294d, ChalkinsVolatility[3], delta); Assert.AreEqual(0.36111d, ChalkinsVolatility[4], delta); }
public void IndicatorsCalculatorCalcAMinusB() { List <double> c = IndicatorsCalculator.CalcAMinusB(high, low); Assert.AreEqual(high.Count, c.Count); double delta = 0.0001; Assert.AreEqual(1.0d, c[0], delta); Assert.AreEqual(0.7d, c[1], delta); Assert.AreEqual(0.5d, c[2], delta); Assert.AreEqual(1.2d, c[3], delta); Assert.AreEqual(0.9d, c[4], delta); }
public void IndicatorsCalculatorCalcaulatePercentRIndicator() { int n = 5; List <double> percRInd = IndicatorsCalculator.CalcPercentRIndicator(high, low, close, n); Assert.AreEqual(high.Count, percRInd.Count); for (int i = 0; i < n - 1; i++) { Assert.AreEqual(double.NaN, percRInd[i]); } // %R = (MAX(H,n) - C)/(MAX(H,n) - MIN(L,n)) Assert.AreEqual((4.4d - 3.8d) / (4.4d - 3.0d), percRInd[4]); }
public void IndicatorsCalculatorCalcExponentalMovingAverageModified() { List <double> EMA = IndicatorsCalculator.CalcExponentalMovingAverageModified(smallTestData, 2); Assert.AreEqual(smallTestData.Count, EMA.Count); double delta = 0.0001; Assert.AreEqual(1.0d, EMA[0], delta); Assert.AreEqual(1.5d, EMA[1], delta); Assert.AreEqual(2.25d, EMA[2], delta); Assert.AreEqual(3.125d, EMA[3], delta); Assert.AreEqual(4.0625d, EMA[4], delta); Assert.AreEqual(5.03125d, EMA[5], delta); }
static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("Usage: turtles-buy symbols.txt"); return; } var headers = new string[] { "Valor", "Riesgo", "Precio de compra", "ATR", "Precio de salida", "# de acciones", "Cash necesario" }; Console.WriteLine(string.Join("\t", headers)); var symbols = File.ReadAllLines(args[0]).Where(line => !string.IsNullOrEmpty(line)).Select(line => line.Trim()); var i = 2; foreach (var symbol in symbols) { var dataProvider = new YahooFinanceProvider(); var indicators = new IndicatorsCalculator(dataProvider); var max = indicators.MaxLast10YearsAsync(symbol); Thread.Sleep(1000); var atr = indicators.CalculateAtrAsync(symbol); Thread.Sleep(1000); var tr = indicators.CalculateTrAsync(symbol); Thread.Sleep(1000); var maxRounded = Math.Round(max.Result, 2); var atrRounded = Math.Round(atr.Result.Last(), 2); var maxWithCommas = maxRounded.ToString().Replace('.', ','); var atrWithCommas = atrRounded.ToString().Replace('.', ','); Console.Write(symbol); Console.Write("\t"); Console.Write(200); Console.Write("\t"); Console.Write(maxWithCommas); Console.Write("\t"); Console.Write(atrWithCommas); Console.Write("\t"); Console.Write($"=C{i}-D{i}"); Console.Write("\t"); Console.Write($"=FLOOR(B{i}/D{i})"); Console.Write("\t"); Console.Write($"=C{i}*F{i}"); Console.WriteLine(""); i++; } }
static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("Usage: turtles-add symbol1"); return; } var symbol = args[0]; var dataProvider = new YahooFinanceProvider(); var indicators = new IndicatorsCalculator(dataProvider); var min = indicators.MinLast20DaysAsync(symbol).Result; Console.WriteLine($"The minimum for the last 4 weeks for {symbol} is {min}"); }
public void IndicatorsCalculatorCalcaulatePercentRIndicatorModified() { int n = 5; List <double> percRIndMod = IndicatorsCalculator.CalcPercentRIndicatorModified(high, low, close, n); Assert.AreEqual(high.Count, percRIndMod.Count); for (int i = 0; i < n - 1; i++) { Assert.AreEqual(double.NaN, percRIndMod[i]); } double delta = 0.0001; // %R = (C - MIN(L,n))/(MAX(H,n) - MIN(L,n)) Assert.AreEqual((3.8d - 3.0d) / (4.4d - 3.0d), percRIndMod[4], delta); }