LL:LLV(L,N),LINETHICK2;{主图叠加,参数N:30,1,9999} <%
VH=FFL.VARDATA(\
VL=FFL.VARDATA(\
VN=FFL.VARDATA(\
LAST=UBOUND(VH)
IF VN>LAST THEN VN=LAST+1
FOR I=LAST TO LAST-VN+1 STEP-1
VH(I)=VH(LAST)
VL(I)=VL(LAST) NEXT
FFL.VARDATA(\
FFL.VARDATA(\
FFL.VARSTARTINDEX(\
FFL.VARSTARTINDEX(\ %>
当N个周期之内,有两个最高价,即有等高的情况出现,HHVBARS会返回哪个最高价到当前的周期数呢?
用副图公式观察一下,N取10:
HHVBARS(H,N);
如图,我们可以得出结论,返回的是前一个最高价到当前的周期数。
同样,当在N个周期之内,有两个等低的最低价出现时,LLVBARS会返回前一个最低价到当前的周期数。 九、
函数: SUMBARS(X,A)
参数: X为数组
返回: 返回数组
说明: 将X向前累加直到大于等于A,返回这个区间的周期数
示例: SUMBARS(VOL,CAPITAL)
求完全换手到现在的周期数
这个函数好用,在于它不但能精确地得到统计结果,而且能得到“模糊”的结果。
就以SUMBARS(VOL,CAPITAL)为例:
日期数:SUMBARS(VOL,CAPITAL);{返回成交量累加到流通盘的日期数}
验证:SUM(V,日期数)/CAPITAL;{把返回的日期数之内的成交量累计,再除以流通盘}
运行的结果中,我们可以看到,“验证”的输出,除了SUMBARS起算点附近之外,从来没有小于1的。可见SUMBARS只往多算,不往少算,非常“精明”。 十、
函数: BARSCOUNT(X)
参数: X为数组
返回: 返回数组
说明: 第一个有效数据到当前的天数
示例: BARSCOUNT(CLOSE)
对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数
BARS是什么?我们看到,关于取得相隔时间周期的函数中,多数以BARS开头。
查字典,BAR的意思有很多,有条、条形、酒巴、巴等。后来才恍然大悟:相隔时间周期,不就是中间相隔几根条形K线么?
BARSCOUNT(X)是第一个有效数据到当前的天数。那么什么是有效数据?
A:BACKSET(ISLASTPERIOD,10);
零:BARSCOUNT(A);
很小:BARSCOUNT(C/10000000000000);
负数:BARSCOUNT(-C);
不存在:BARSCOUNT(MA(C,10));
可见,有效数据并不是全是大于等于1的数据,只要有输出的数据,不管是零,还是负数,均为有效数据。
而MA(C,10)是从第十根K线开始起算的,所以一直要到第十根K线,BARSCOUNT(MA(C,10))才输出1。
这样找一些指标的起算点时间位置,用BARSCOUNT函数就很管用了。
一般找第一根K线的位置,就可以写为BARSCOUNT(C)=1;
十一、
函数: BARSSINCE(X)
参数: X为数组
返回: 返回数组
说明: 第一次X不为0到现在的天数
示例: BARSSINCE(HIGH>20)
表示股价第一次超过20元时到当前的周期数
SINCE,自...以后。BARSSINCE和BARSCOUNT很象,不过它找的是非零信号。
A:BACKSET(ISLASTPERIOD,10);
零:BARSsince(A);
很小:BARSsince(C/10000000000000);
负数:BARSsince(-C);
不存在:BARSsince(MA(C,10));
可见,零和无效数据,均不被计数。一般BARSSINCE是针对逻辑运算的结果的,因为逻辑运算的结果输出,不是0,就是1。
十二、
函数: BARSLAST(X)
参数: X为数组
返回: 返回数组
说明: 上一次X不为0到现在的天数
示例: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)
表示上一个涨停板到当前的周期数
条件满足的当前周期,BARSLAST返回0。
是“不为0”到现在的天数么?运行这个公式试试:
A:=C>O;