Пример #1
0
 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 + ")";
 }
Пример #2
0
 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();
 }
Пример #3
0
            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);
            }
Пример #4
0
            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);
            }
Пример #5
0
        public static KDJ create(BarSeries series, int length, BarData barData)
        {
            K_Fast rsv = new K_Fast(series, length);

            return(new KDJ(series, rsv, length));
        }