Example #1
0
 public PriceChannel(ISeries input, int length, CalcType calcType, IncludeLast includeLast, BarData barData = BarData.Close)
     : base(input)
 {
     this.length      = length;
     this.barData     = barData;
     this.calcType    = calcType;
     this.includeLast = includeLast;
     this.Init();
 }
Example #2
0
        public static double Value(ISeries input, int index, int length, CalcType calcType, IncludeLast includeLast, BarData barData = BarData.Close)
        {
            int _index = index - length + 1;

            if (_index < 0)
            {
                return(double.NaN);
            }

            if (calcType == CalcType.Max)
            {
                double max = double.MinValue;
                for (int i = _index; i < index; ++i)
                {
                    max = Math.Max(max, input[i, barData]);
                }
                if (IncludeLast.Yes == includeLast)
                {
                    max = Math.Max(max, input[index, barData]);
                }
                if (max == double.MinValue)
                {
                    return(double.NaN);
                }
                return(max);
            }
            else
            {
                double min = double.MaxValue;
                for (int i = _index; i < index; ++i)
                {
                    min = Math.Min(min, input[i, barData]);
                }
                if (IncludeLast.Yes == includeLast)
                {
                    min = Math.Min(min, input[index, barData]);
                }
                if (min == double.MaxValue)
                {
                    return(double.NaN);
                }
                return(min);
            }
        }