blake_lejp 发表于 2017-8-1 14:15:03

KDJ算法

书上的KDJ算法是需要算RSV的,但是我看TB的公式,好像没有算RSV,直接把RSV值当K值了,有人碰到过这样的问题么?

下面是TB的算法:
Params
        Numeric Length(14);                       
        Numeric SlowLength(3);       
        Numeric SmoothLength(3);
Vars
        NumericSeries HighestValue;                               
        NumericSeries LowestValue;               
        NumericSeries KValue;
        Numeric SumHLValue;
        Numeric SumCLValue;
        Numeric DValue;
Begin
        HighestValue = HighestFC(High, Length);
        LowestValue = LowestFC(Low, Length);
        SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
        SumCLValue = SummationFC(Close - LowestValue,SlowLength);
        If(SumHLValue <> 0)
        {
                KValue = SumCLValue/SumHLValue*100;
        }Else
        {
                KValue = 0;
        }
        DValue = AverageFC(KValue,SmoothLength);

。。。。。。

下面是我认为的算法:



Vars
        //此处添加变量
        NumericSeries HighestValue;                               
        NumericSeries LowestValue;               
        NumericSeries KValue;
        NumericSeries DValue;
        NumericSeries JValue;
      NumericSeries RsvValue;        
       
        Numeric SumHLValue;
        Numeric SumCLValue;
       
        String LogPath( "c:\\tmp\\KDJ_S3.txt");
Begin
        HighestValue = HighestFC(High, Length);
        LowestValue = LowestFC(Low, Length);
        SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
        SumCLValue = SummationFC(Close - LowestValue,SlowLength);
        If(SumHLValue <> 0)
        {
                RsvValue = SumCLValue/SumHLValue*100;
        }Else
        {
                RsvValue = 0;
        }

     //当日K值=2/3×前一日K值+1/3×当日RSV

     //当日D值=2/3×前一日D值+1/3×当日K值
     KValue = 2.0/3.0*KValue + 1.0/3.0*RsvValue;
     DValue = 2.0/3.0*DValue + 1.0/3.0*KValue ;

。。。。。。

页: [1]
查看完整版本: KDJ算法