关于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);
}
对比效果图



浙公网安备 33010602011771号