看出来了吧?SMA(X,N+1,2)=EMA(X,N);
A:SMA(C,N+1,2);
B:EMA(C,N);{N:5,2,99。主图叠加}
两条线输出一样。在SMA的参数中,N必须大于M,否则没有输出。
SMA中,数组每天所占的权重,是较为复杂的。总的来说,日子越近,所占的权重越大,当天所占的权重是M/N,前一天所占的权重是M*(N-M)/(N*N);日子越远,所占的权重就越小,上市第一天的K线数据中,在目前还有权重的体现,不过已经非常非常小了。
SMA看似解决了MA的两大缺点:1、只有N天内的数据占有权重;2、N天内数据所占权重比重一样。有所得必有所失,SMA自己的缺点体现在光滑有余,敏感不足。
有一项检测系统得出的结论称:“简单移动平均值方法既胜过线性加权平均值法,也胜过指数加权平均值法。”(<期货市场技术分析>P231),当然他们不是检测中国股市。有兴趣的朋友,可以用这些移动平均函数,做出交易系统,然后进行检测。 六、
函数: DMA(X,A)
参数: X为数组,A为计算周期
返回: 返回数组
说明: 求X的动态移动平均。
算法: 若Y=DMA(X,A) 则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。
示例: DMA(CLOSE,VOL/CAPITAL)
表示求以换手率作平滑因子的平均价
呵呵,均线函数还有。
DMA中的D,是中文的拼音:DONG。也可能是DYNAMIC。
这个函数,与SMA是一家的,看:
Y=M/N*X+(N-M)/N*Y';
Y=A*X+(1-A)*Y';
前者说,N必须大于M,后者说,A必须小于1。然后两者就一样了:A=M/N。
说“A为计算周期”似乎不妥,A明明要取小数才行。DMA在第一根K线就开始起算,SMA要到第二根K线开始起算。 七、
函数: HHV(X,N)
参数: X为数组,N为计算周期
返回: 返回数组
说明: 求N周期内X最高值,N=0则从第一个有效值开始。
示例: HHV(HIGH,30)
表示求30日最高价
函数: HHVBARS(X,N)
返回: X为数组,N为计算周期
参数: 返回数组
说明: 求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
示例: HHVBARS(HIGH,0)
求得历史新高到到当前的周期数
这两个函数一起用,可以找到当前N天中的最高点。
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N个周期内的最高点位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;{主图叠加。N:30,1,9999} 八、
函数: LLV(X,N)
参数: X为数组,N为计算周期
返回: 返回数组
说明: 求N周期内X最低值,N=0则从第一个有效值开始。
示例: LLV(LOW,0)
表示求历史最低价
函数: LLVBARS(X,N)
参数: X为数组,N为计算周期
返回: 返回数组
说明: 求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计
示例: LLVBARS(HIGH,20)
求得20日最低点到当前的周期数
当前N天之内的最高点和最低点就一目了然了:
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N个周期内的最高点位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N个周期内的最低点位置}
REF(L,BARSLAST(B2));
DRAWICON(B2,L,2),ALIGN1;{主图叠加。N:30,1,9999}
A:=BACKSET(ISLASTPERIOD,HHVBARS(H,N)+1);
B:=COUNT(A,N)=1;{取得前N个周期内的最高点位置}
REF(H,BARSLAST(B));
DRAWICON(B,H,1),ALIGN2;
A2:=BACKSET(ISLASTPERIOD,LLVBARS(L,N)+1);
B2:=COUNT(A2,N)=1;{取得前N个周期内的最低点位置}
REF(L,BARSLAST(B2));
DRAWICON(B2,L,2),ALIGN1;{主图叠加。N:30,1,9999}
这个公式求前期高低点,在600036等次新股上试调整参数就露马脚了,并不完善。
问题出在HHVBARS起算点等原因上。
南客刚发表了一个公式,就顺手牵羊牵过来吧。这个公式可以说是完美解决方案:
HH:HHV(H,N),LINETHICK2;