コード例 #1
0
        public Indicator AnalyzeData(DataState state)
        {
            double[] highPrices  = _analyseRepo.LoadHighPriceBySymbol(state.Symbol, true).ToArray();
            double[] lowPrices   = _analyseRepo.LoadLowPriceBySymbol(state.Symbol, true).ToArray();
            double[] closePrices = _analyseRepo.LoadClosePriceBySymbol(state.Symbol, true).ToArray();
            double[] adxValues   = ADXCalculator.CalculateADX(ADXCalculator.Period, highPrices, lowPrices, closePrices);
            if (adxValues.Length == 0)
            {
                return(null);
            }

            ADX value = new ADX();

            value.Symbol = state.Symbol;
            value.Date   = state.Last.Value;
            value.ADX14  = AlgorithmHelper.GetLast(adxValues);
            return(value.ToIndicator());
        }
コード例 #2
0
        public void CanCalculateADX()
        {
            var high = new double[] {
                21.84, 22.55, 22.1, 21.28, 20.94, 20.66, 20.89, 21.64, 21.89, 21.99,
                22.1, 22.07, 22.05, 22.05, 21.6, 23.88, 22.94, 22.7, 22.53, 22.59,
                22.02, 21.97, 21.45, 21.85, 21.74, 21.78, 21.76, 22.03, 21.79, 21.75,
                21.68, 21.8, 21.67, 21.55, 21.52, 21.95, 22.25, 22.24, 22.23, 22.37,
                22.67, 22.65, 22.58, 22.66, 22.61, 22.47, 22.7, 22.7, 22.58, 22.25,
                20.84, 20.18, 19.83, 19.74, 19.29, 19.17, 19.34, 18.82, 18.31, 17.75,
                18.2, 18.24, 18.61, 18.56, 18.88, 18.72, 17.52, 16.94, 17.96, 18.2,
                17.8, 17.93, 17.93, 18.29, 18.23, 18.64, 20, 20, 20.94, 21.51, 22.31,
                22.85, 23.14, 23.5, 23.45, 23.3, 23.65, 24.09, 24.14, 23.57, 23.45,
                23.04, 22.99, 23.1, 23.41, 23.18, 23.49, 23.44, 23.41, 23.15, 23.26,
                23.25, 23.19, 23.78, 23.99, 24.45, 24.18, 24.35, 23.94, 23.93, 24.1,
                23.53, 23.62, 23.53, 23.41, 21.64, 21.94, 21.94, 21.88, 21.8, 22.1,
                22.08, 21.69, 21.66, 21.74, 22.42, 22.45, 22.56, 22.46, 22.57, 22.5,
                22.37, 22.32, 22.22, 22.55, 23.04, 22.72, 22.47, 22.92, 22.96, 22.75,
                23.3, 23.39, 23.68, 23.83, 31.81, 30.75, 31.13, 32.16, 32.98, 33.69,
                33.6, 33.96, 33.55, 34.34, 33.88, 33.4, 34.57, 34.93, 34.47, 35.52,
                35.31, 34.4, 34.82, 34.31, 35.42, 35.31, 35.4, 36.84, 37.39, 36.95,
                36.46, 35.8, 35.79, 36.9, 36.85, 36.44, 35.84, 35.58, 35.52, 36.19,
                40.65, 39.94, 41.54, 42.23, 41.08, 43.03, 42.62, 43.88, 44.22, 43.93,
                43.15, 42.9, 42.19, 41.8, 42.93, 42.54, 43.47, 43.09, 43.3,
            };
            var low = new double[] {
                21.41, 21.81, 20.96, 20.54, 20.18, 20.06, 20.1, 20.63, 21.29, 21.48,
                21.38, 21.67, 21.63, 21.58, 20.94, 22.06, 22.14, 22.19, 22.29, 21.97,
                21.59, 21.33, 20.77, 21.08, 21.51, 21.4, 21.44, 21.42, 21.38, 21.2,
                21.37, 21.38, 21.34, 21.26, 21.18, 21.31, 21.66, 21.88, 21.62, 21.64,
                22.17, 22.18, 22.17, 22.24, 22.35, 22.18, 22.02, 22.13, 22.06, 20.67,
                19.74, 19.6, 19.52, 19.07, 18.94, 18.79, 18.65, 17.97, 17.49, 17.12,
                17.32, 17.77, 17.99, 18.05, 18, 17.18, 16.31, 15.76, 16.61, 17.35,
                17.4, 17.58, 17.69, 17.85, 17.9, 17.92, 18.51, 19.27, 19.14, 20.96,
                21.12, 22.26, 22.69, 22.84, 22.58, 22.65, 22.96, 23, 23.13, 23.01,
                22.83, 22.68, 22.32, 22.43, 22.61, 22.76, 23.08, 22.8, 22.75, 22.46,
                22.82, 22.64, 22.47, 22.69, 23.44, 23.15, 23.33, 23.37, 22.75, 22.9,
                23.08, 22.9, 23.4, 22.92, 21.26, 21.12, 21.34, 21.63, 21.56, 21.14,
                21.6, 21.25, 21.27, 21.29, 21.29, 21.66, 22.01, 22.1, 21.91, 21.82,
                21.91, 21.92, 21.72, 21.53, 21.61, 22.45, 22.18, 21.96, 22.07, 21.95,
                22.34, 22.37, 22.85, 22.87, 23.47, 27.66, 28.76, 29.65, 30.82, 31.76,
                32.58, 32.81, 32.8, 33.18, 33.09, 33.06, 31.82, 32.24, 33.36, 33.9,
                34.3, 33.79, 33.22, 33.92, 33.59, 34, 33.62, 33.55, 35.32, 35.73,
                35.73, 35.26, 34.65, 35.13, 35.54, 35.11, 35.31, 33.42, 32.38, 34.02,
                35.02, 35.5, 37.57, 38.5, 40.12, 40.35, 40.79, 41.2, 42.52, 42.56,
                42.01, 42.3, 41.38, 40.58, 41, 41.2, 41.42, 41.84, 42.27, 40.22,
            };
            var close = new double[] {
                21.7, 21.95, 20.96, 20.57, 20.25, 20.51, 20.64, 21.6, 21.87, 21.73,
                22.08, 21.93, 21.9, 21.62, 21.07, 22.6, 22.55, 22.67, 22.45, 22.15,
                21.77, 21.47, 20.9, 21.7, 21.64, 21.5, 21.7, 21.82, 21.53, 21.68,
                21.46, 21.61, 21.4, 21.42, 21.37, 21.92, 22.07, 22.06, 22.12, 22.35,
                22.65, 22.25, 22.46, 22.57, 22.46, 22.3, 22.56, 22.17, 22.29, 20.81,
                20.23, 19.62, 19.7, 19.16, 19.05, 19.09, 18.68, 17.98, 17.49, 17.19,
                18.05, 17.93, 18.57, 18.09, 18.47, 17.21, 16.33, 16.91, 17.93, 17.4,
                17.74, 17.88, 17.79, 18.1, 18.07, 18.54, 19.88, 19.73, 20.86, 21.08,
                22.26, 22.73, 22.93, 23.48, 22.66, 22.96, 23.51, 24.02, 23.36, 23.17,
                22.86, 22.73, 22.72, 22.93, 22.74, 23.09, 23.27, 23.17, 22.75, 22.95,
                23.04, 23.08, 22.68, 23.51, 23.53, 24.12, 23.36, 23.42, 23.66, 23.34,
                23.35, 23.23, 23.53, 23, 21.46, 21.25, 21.62, 21.79, 21.69, 21.78,
                21.62, 21.58, 21.52, 21.34, 21.54, 22.27, 22.13, 22.2, 22.13, 22.44,
                22.07, 22.36, 21.92, 21.94, 22.5, 22.77, 22.51, 22.22, 22.47, 22.87,
                22.43, 23.19, 23.2, 23.51, 23.53, 30.01, 29.48, 31.08, 31.64, 32.87,
                32.96, 33.27, 33.64, 33.35, 33.56, 33.4, 32.33, 33.97, 34.4, 34.25,
                34.82, 33.95, 33.97, 34.4, 33.77, 35.32, 33.73, 35.06, 36.77, 35.98,
                36.01, 35.81, 35.35, 35.65, 36.69, 35.46, 35.81, 33.53, 34.71, 34.93,
                35.59, 39.63, 38.72, 40.61, 40.93, 40.69, 42.51, 42.28, 43.21, 42.95,
                42.75, 42.45, 41.73, 40.98, 41.48, 42.72, 42.07, 42.6, 42.97, 40.77,
            };

            Assert.IsTrue(high.Length == 200);
            Assert.IsTrue(low.Length == 200);
            Assert.IsTrue(close.Length == 200);
            var adx = ADXCalculator.CalculateADX(14, high, low, close);
        }