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(); }
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); } }