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);
        }
Ejemplo n.º 8
0
        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++;
            }
        }
Ejemplo n.º 9
0
        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);
        }