|
backset()函数的高级用法: 一、问题:如何在最后一根K线的前第6天,作上标记? 1、先建立一个名为backset-test的公式,代码如下: islastbar{该周期是否最后一个周期。最后一个周期返回值为1,其余为0}
观察指标线的图形,正如注释所述,最后一天显示为1,这个1我们可理解为信号(条件)成立。其余时间,指标的数值为0,可理解为信号(条件)不成立。
2、巧用backset()函数: ①bacdset(x,n)注释:向前赋值,若X非0则把当前周期及前N-1周期的数值设置为1; ②示例:把信号向前移。 tj1:=islastbar;{最后一天的条件} tj2:backset(tj1,6); 观察tj2指标线图,发现最后6天的tj2信号都是1,即一个高度为1的矩形。公式中,还无法判断哪天是倒数第6天。
3、显然倒数第6天,是上面矩形的前沿,如何在公式中,表达这个矩形的前沿? 容易想到的办法: ①倒数第6天的当天,tj2为1,更早的1天tj2=0,因此可以编出如下代码: tj1:=islastbar;{最后一天的条件} tj2:=backset(tj1,6); tj3:tj2 and ref(tj2,1)=0;
②倒数第6天的当天,tj2为1,更早的1天tj2=0,即当天tj2比早一天的tj2更大,因此可以编出如下代码: tj1:=islastbar;{最后一天的条件} tj2:=backset(tj1,6); tj3:tj2>ref(tj2,1);
③倒数第6天的当天,tj2为1,更早的1天tj2=0,可以想象为tj2指标线上穿了一条高度为0.5的水平线,因此可以编出如下代码: tj1:=islastbar;{最后一天的条件} tj2:=backset(tj1,6); tj3:cross(tj2,0.5);
④巧用filter()过滤函数,filter(x,N),若X非0,可以让X保持当天的值不变,且过滤其后N个周期使之数值为0。 tj1:=islastbar;{最后一天的条件} tj2:=backset(tj1,6); tj3:filter(tj2,5);{第1次的tj2保持为1不变,其后的5个周期过滤为0}
这样就初步找到了4种方法,可以标记倒数第6天,若想用图标来标记的话,代码例举如下: tj1:=islastbar;{最后一天的条件} tj2:=backset(tj1,6); tj3:=tj2>ref(tj2,1); drawicon(tj3,L,1);
二、精彩公式代码欣赏: 1、清扬兄的波浪公式{大量应用了backset()函数技巧,使用了Dll,需要的可以到巫山论坛,向清扬兄要文件}: HD:="jgb.HD"(N);LD:="jgb.LD"(N); DRAWLINE(LD,L,HD,H,0),COLORFF9900;DRAWLINE(HD,H,LD,L,0),COLORFF9900;
(阅读次数:)
共3页: 上一页 1 [2] [3] 下一页
|