public static List <decimal?> MinusDi(this IEnumerable <ICandle> candles, int?period)
        {
            period = period ?? 14;

            IIndicatorOptions options = new MinusDiOptions(period.Value);
            MinusDi           minusDi = new MinusDi();

            return(minusDi.Get(candles, options));
        }
Exemple #2
0
        public override dynamic Get(IEnumerable <ICandle> source, IIndicatorOptions options = null)
        {
            MinusDiOptions config = options != null ? (MinusDiOptions)options.Options : new MinusDiOptions(14);

            double[] diValues = new double[source.Count()];
            double[] highs    = source.Select(x => Convert.ToDouble(x.High)).ToArray();
            double[] lows     = source.Select(x => Convert.ToDouble(x.Low)).ToArray();
            double[] closes   = source.Select(x => Convert.ToDouble(x.Close)).ToArray();

            TicTacTec.TA.Library.Core.RetCode minusDi = TicTacTec.TA.Library.Core.MinusDI(0, source.Count() - 1, highs, lows, closes, config.Period, out int outBegIdx, out int outNbElement, diValues);

            if (minusDi == TicTacTec.TA.Library.Core.RetCode.Success)
            {
                return(FixIndicatorOrdering(diValues.ToList(), outBegIdx, outNbElement));
            }

            throw new Exception("Could not calculate EMA");
        }