关于TB交易开拓者的KDJ指标与经典KDJ指标计算方法不同的分析

龙哥微信:Long622889  
代写技术指标_选股公式: 通达信,同花顺,东方财富,大智慧,文华,博易,KT交易师
代写期货量化策略:TB交易开拓者,文华8,金字塔量化

 

我之前在群里咨询的问题, 

TB官方的技术大佬,给出详细的分析

原链接:https://www.kdocs.cn/l/cgF3sA7ypa99

 在这,我只复制最核心的内容,如果需要深入研究, 请联系我,或者看原文链接

KDJ公式代码差异总结

(1)RSV窗口观察期在TBQuant从9周期扩大到14周期

龙哥的截图中显示系统KDJ参数为(9,3,3),是他手动修改了,TBQ系统默认参数为(14,3,3)。

(2)KDJ的K值计算方法不同

【经典KDJ的算法】近3个周期的RSV的简单移动平均值,或者说是近3个周期的RSV的等权重加权移动平均值。

【TB的KDJ算法(这里先下结论,后面证明)】近3个周期的RSV的不等权重加权移动平均值。在对3根Bar(K线)对应的RSV值进行平均化处理得出KDJ的K值过程中,每根K线上的RSV值的贡献程度的权重比例是不一样的,权重系数ω其实就是每根K线在观察观察窗口期内计算得到的振幅(HighestValue-LowestValue)。

 

更新一下文章

TB的kdj源码有缺陷, 遇到涨停跌停的,kdj就没数值了, 也不画线了, 而且写法也不方便复制, 

另外,我更喜欢用序列变量, 少用局部变量,全局变量, 

我的TBquant的kdj源码是

params      
    numeric n1(9); 
    numeric n2(3); 
    numeric n3(3); 
vars
    series<numeric> chahl1;
    series<numeric> chahl2;
    series<numeric> chahl3;
    series<numeric> rsv;
    series<numeric> k;
    series<numeric> dd;
    series<numeric> j;
events
    onbar(arrayref<integer> indexs)
    {
        chahl1 = highest(high, n1) - lowest(low, n1);
        chahl2 = valuewhen1(chahl1<>0, chahl1);
        chahl3 = close - lowest(low, n1);
        rsv = iif(chahl3==0 and chahl1==0 and k[1]>99,100,iif(chahl3==0 and chahl1==0 and k[1]<1,0,chahl3/ chahl2 * 100));
        
        commentary("chahl2: "+text(chahl2));
        commentary("chahl3: "+text(chahl3));
        commentary("rsv: "+text(rsv));
        k = sma(rsv, n2, 1);
        dd = sma(k, n3, 1);
        j = 3 * k - 2 * dd;
        
        plotauto("k",k, k,white,enum_line,enum_solid,enum_1pix);
        plotauto("d",dd, dd,yellow,enum_line,enum_solid,enum_1pix);
        plotauto("j",j, j,magenta,enum_line,enum_solid,enum_1pix);
        plotnumeric("上",80);
        plotnumeric("下",20);
    }    

对比效果图

image

image

posted @ 2024-01-24 15:37  龙哥量化  阅读(492)  评论(0)    收藏  举报