//------------------------------------------------------------------------
// 簡稱: KDJ
// 名稱: 快速隨機指數
// 類別: 公式應用
// 類型: 內建應用
//------------------------------------------------------------------------
Params
?? ?Numeric Length(14);?? ??? ??? ?
?? ?Numeric SlowLength(3);?? ?
?? ?Numeric SmoothLength(3);
Vars
?? ?Series<Numeric> HighestValue;?? ??? ??? ??? ?
?? ?Series<Numeric> LowestValue;?? ??? ?
?? ?Series<Numeric> KValue;
?? ?Numeric SumHLValue;
?? ?Numeric SumCLValue;
?? ?Numeric DValue;
Events
?? ?OnBar(ArrayRef<Integer> indexs)
?? ?{
?? ??? ?Range[0:DataSourceSize() - 1]
?? ??? ?{
?? ??? ??? ?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);
?? ??? ??? ?PlotNumeric("K",KValue);
?? ??? ??? ?PlotNumeric("D",DValue);
?? ??? ??? ?PlotNumeric("J",3*KValue - 2*DValue);
?? ??? ??? ?PlotNumeric("Ref1",20);
?? ??? ??? ?PlotNumeric("Ref2",80);
?? ??? ?}
?? ?}?? ?
//------------------------------------------------------------------------
// 編譯版本?? ?GS2010.12.08
// 版權所有?? ?TradeBlazer Software 2003-2025
// 更改聲明?? ?TradeBlazer Software保留對TradeBlazer平
//?? ??? ??? ?臺每一版本的TradeBlazer公式修改和重寫的權利
//------------------------------------------------------------------------
?
我理解的KDJ意思是,先求出最高值,再求出最低值,就可以計算RSV(t)=100*(C(t)-L(t))/(H(t)-L(t))。
K(t)=(RSV(t)*SlowLength+RSV(t-1)(1-SlowLength))/SlowLength,也就是用了SMA,
但公式里為何有求和的計算?公式如下
SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
SumCLValue = SummationFC(Close - LowestValue,SlowLength);
意思是求出最近SlowLength天的C-L,H-L,然后分別求和,再相除得到的K?不理解公式里的含義。
?
函數 策略?
?來源:CXH99.COM
TB的KDJ公式和其他軟件有點不一樣,但總體結果相差不大。如果您覺得其他軟件的計算公式更好,可以照著TB KDJ的樣子改寫一個。