- 精华
- 0
- 在线时间
- 12 小时
- UID
- 213474
- 积分
- 17
- 帖子
- 11
- 阅读权限
- 10
- 注册时间
- 2015-7-11
- 最后登录
- 2019-8-25
- 精华
- 0
- UID
- 213474
- 积分
- 17
- 帖子
- 11
- 主题
- 6
- 阅读权限
- 10
- 注册时间
- 2015-7-11
- 最后登录
- 2019-8-25
|
书上的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] + 1.0/3.0*RsvValue;
DValue = 2.0/3.0*DValue[1] + 1.0/3.0*KValue ;
。。。。。。
|
|