根据斜率的定义,直线对x轴的倾斜角的正切值tanθ为该直线的斜率。如果我们知道了正切值tanθ,通过反正切函数ATAN就可以求得θ的角度。θ角度的取值范围在(-90°,90°)度之间。
但是在交易软件上,x轴是周期,y轴是价格,x、y值单位不同,没有可比性。我们通过下面两张图,可以发现问题所在。对于同样一段行情,当这一段行情放大的时候,我们一眼看上去,均线角度可能是45°。如果把这一段行情缩小,均线的角度发生了明细的变化,显然大于45°。这样均线的角度就没有意义,因为会随着K线图的放大缩小而产生变化。
MA5:=MA(C,5);
ZF:=(MA5/REF(MA5,1)-1)*100;
JD:ATAN(ZF)*180/3.14115926;
使用通达信编程语言编写均线的角度,常见的做法是用均线的涨跌幅来近似替代正切值tan,
ZF:=(MA5/REF(MA5,1)-1)*100;,当均线涨幅为1%,ZF等于1,这时候求得的角度JD就是45度。但是每天的涨幅是有极限的,以主板涨停10%为例,即使连续涨停,ZF的最大值也就是10,计算得到JD最大值84.289。
把指标加载到副图进行验证,可以看到JD的最大值基本上在80多,确实如我们所料。
这样,均线角度大于45度的公式就可以写出来了。
MA5:=MA(C,5);
ZF:=(MA5/REF(MA5,1)-1)*100;
JD:=ATAN(ZF)*180/3.14115926;
XG:JD>45;
二、SLOPE函数
除了用ATAN来计算角度、斜率,还有另外一个函数SLOPE。
使用方法:SLOPE(X,N) 获得线性回归斜率
MA5:=MA(C,5);
XL:SLOPE(MA5,5);
线性回归斜率,可以简单理解为根据模型拟合出一条直线,计算这条直线的斜率。SLOPE(MA5,5)就是取最近5日的MA5值,然后拟合出直线,计算斜率。因为取的最近5日,所有反应会相对迟钝,5日均线刚刚向上拐头的时候,计算的斜率可能还是负的。
这个SLOPE函数感觉有问题,计算出的斜率竟然和股价有关系,股价高计算出的斜率数值比较大,股价低计算出的斜率数值比较小,这样没有统一的比较基准,使用起来很不方便。如果用来表示均线是向上还是向下还可以用用,但是如果用来计算均线的角度,那就用不了了。
当然我可能对这个函数有误解,欢迎提出问题,交流探讨。