protected KDJ(BarSeries series, K_Fast rsv, int length) : base(series) { this.length = length; this.rsv = rsv; this.K = new TimeSeries("K"); this.D = new TimeSeries("D"); this.Name = "KDJ(" + length + ")"; }
protected override void Init() { base.name = "K"; base.description = "KDJ.K"; base.Clear(); base.calculate = true; base.Detach(); if (this.k_fast != null) { this.k_fast.Detach(); } this.k_fast = new K_Fast(base.input, this.length); base.Attach(); }
public static double Value(ISeries input, int index, int length) { int i = index - length + 1; if (i < 0) { return(double.NaN); } double num = 50; for (int j = length - 1; j <= index; ++j) { num = (2 * num + K_Fast.Value(input, j, length)) / 3.0; } return(num); }
public override void Calculate(int index) { int i = index - length + 1; if (i < 0) { return; } double num = 50; if (i == 0) { num = (2 * num + K_Fast.Value(input, index, length)) / 3.0; } else { num = (2 * this[i - 1] + K_Fast.Value(input, index, length)) / 3.0; } base.Add(base.input.GetDateTime(index), num); }
public static KDJ create(BarSeries series, int length, BarData barData) { K_Fast rsv = new K_Fast(series, length); return(new KDJ(series, rsv, length)); }