件)成立。其余时间,指标的数值为0,可理解为信号(条件)不成立。
2、巧用BACKSET()函数:
1BACDSET(X,N)注释:向前赋值,若X非0则把当前周期及前N-1周期的数值设置为1;
2示例:把信号向前移。
TJ1:=ISLASTBAR;{最后一天的条件}
TJ2:BACKSET(TJ1,6);
观察TJ2指标线图,发现最后6天的TJ2信号都是1,即一个高度为1的矩形。公式中,还无法判断哪天是倒数第6天。
3、显然倒数第6天,是上面矩形的前沿,如何在公式中,表达这个矩形的前沿? 容易想到的办法:
1倒数第6天的当天,TJ2为1,更早的1天TJ2=0,因此可以编出如下代码:
TJ1:=ISLASTBAR;{最后一天的条件}
TJ2:=BACKSET(TJ1,6); TJ3:TJ2 AND REF(TJ2,1)=0;
2倒数第6天的当天,TJ2为1,更早的1天TJ2=0,即当天TJ2比早一天的TJ2更大,
因此可以编出如下代码:
TJ1:=ISLASTBAR;{最后一天的条件} TJ2:=BACKSET(TJ1,6); TJ3:TJ2>REF(TJ2,1);
3倒数第6天的当天,TJ2为1,更早的1天TJ2=0,可以想像为TJ2指标线上穿了一条高度为0.5的水平线,因此可以编出如下代码:
TJ1:=ISLASTBAR;{最后一天的条件} TJ2:=BACKSET(TJ1,6); TJ3:CROSS(TJ2,0.5);
4巧用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);
------------------------------------------------------------------------------- 0007--MACD金死叉间最大、最小值
A1:=CROSS(\ A2:=BARSLAST(A1);
A3:=HHVBARS(\
A4:=BACKSET(REF(A3>=1,1) AND \A5:=BACKSET(REF(A4=0,1) AND A4=1,2); 高值:IF(FILTER(A5,2),\DRAWICON(高值>0,高值,4);
B1:=CROSS(0,\ B2:=BARSLAST(B1);
B3:=LLVBARS(\
B4:=BACKSET(REF(B3>=1,1) AND \B5:=BACKSET(REF(B4=0,1) AND B4=1,2); 低值:IF(FILTER(B5,2),\
DRAWICON(低值<0,低值,5);
------------------------------------------------------------------------------- 0008--曲线在N天内的平均变化率
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N);B:=MA(C,M);R:=C/REF(C,1)-1;等等}
FA:=(A/REF(A,N)-1)/N; FB:=(B/REF(B,N)-1)/N;
FR:=(R/REF(R,N)-1)/N;
------------------------------------------------------------------------------- 0009--变动角
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
FA:=(A/REF(A,N)-1)/N; FB:=(B/REF(B,N)-1)/N; FR:=(R/REF(R,N)-1)/N;
∮A:=ATAN(FA); ∮B:=ATAN(FB); ∮R:=ATAN(FR);
------------------------------------------------------------------------------- 0010--曲线上相距N天的两点的连线的斜率
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
KA:=(A-REF(A,N))/N; KB:=(B-REF(B,N))/N; KR:=(R-REF(R,N))/N;
------------------------------------------------------------------------------- 0011--倾角
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
KA:=(A-REF(A,N))/N;
KB:=(B-REF(B,N))/N; KR:=(R-REF(R,N))/N;
∠A:=ATAN(KA);
∠B:=ATAN(KB); ∠R:=ATAN(KR);
------------------------------------------------------------------------------- 0012--交叉点
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
CAB:=CROSS(A,B);{交叉}
JAB:=LONGCROSS(A,B,N);{维持-交叉} JYA:=BETWEEN(A,N,M);{介于} FWA:=RANGE(A,N,M);{范围}
------------------------------------------------------------------------------- 0013--下拐点(由下向上转)
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
KA:=(A-REF(A,N))/N;
∠A:=ATAN(KA);
XD1:=LLVBARS(A,N)=M;{以N日最低点}
XD2:=REF(COUNT(A-REF(A,1)<=0,N)=N,M) AND COUNT(A-REF(A,1)>0,M)=M;{以M日变化量的正负}
XD3:=REF(COUNT(∠A-REF(∠A,1)<=0,N)=N,M) AND ∠A>0;{以当日变化角的正负} ------------------------------------------------------------------------------- 0014--上拐点(由上向下转)
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
KA:=(A-REF(A,N))/N; ∠A:=ATAN(KA);
SD1:=HHVBARS(A,N)=M;{以N日最低点}
SD2:=REF(COUNT(A-REF(A,1)>=0,N)=N,M) AND COUNT(A-REF(A,1)<0,M)=M;{以当日变化量的正负}
SD3:=REF(COUNT(∠A-REF(∠A,1)>=0,N)=N,M) AND ∠A<0;{以当日变化角的正负}
------------------------------------------------------------------------------- 0015--位置(求得交叉点/拐点到当前的周期)
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
CAB:=CROSS(A,B);{交叉}
WZ1:=BARSLAST(CAB);{第一(交叉)点的位置}
WZ2:=REF(WZ1,WZ1+1)+WZ1+2;{第二(交叉)点的位置} WZ3:=REF(WZ1,WZ2+1)+WZ2+2;{第三(交叉)点的位置} WZ4:=REF(WZ1,WZ3+1)+WZ3+2;{第四(交叉)点的位置} WZ5:=REF(WZ1,WZ4+1)+WZ4+2;{第五(交叉)点的位置} {WZN:=REF(WZ1,WZ(N-1)+1)+WZ(N-1)+2;}
------------------------------------------------------------------------------- 0016--曲线A叠加曲线B
{设A,B,R为三条曲线;N,M等为参数。如:A:MA(C,N) ; B:=MA(C,M); R:=C/REF(C,1)-1;等等}
F:=A/REF(A,1)-1;{A的变化率}
JS:=REF(B,BARSCOUNT(C));{叠加位置(初始)} DJ:(SUM(F,0)+1)*JS;{叠加曲线(初始位置)}
JD:=REF(B,BARSLAST(条件));{叠加位置(定点)} DJ:=(SUM(F,0)+1)*JD;{叠加曲线(预定位置)}
------------------------------------------------------------------------------- 0017--任意两条指标线在某数以下(或以上)两次金叉的通式
JM:=CROSS(\指标名称.指标线1\指标名称.指标线2\
JMCOUNT:=COUNT(JM,BARSLAST(\指标名称.指标线1(或指标线2)\大于或小于某数));
JMTJ:40*(\指标名称.指标线1(或指标线2)\小于或大于某数)); DRAWTEXT (JMTJ,40,'????二次金叉');
条件选股:60*(JMTJ AND ????),COLORGREEN;
例一:
MACD在0轴线以下二次金叉
JM:=CROSS(\
JMCOUNT:=COUNT(JM,BARSLAST(\
JMTJ:40*(\DRAWTEXT (JMTJ,40,'MACD在0轴线以下二次金叉');
条件选股:60*(JMTJ AND SLOPE(MA(C,5),2)>0),COLORGREEN;
DRAWTEXT (条件选股,50,'5日3%成功率:44.71%');
例二:
KD在60轴线以下二次金叉
JM:=CROSS(\
JMCOUNT:=COUNT(JM,BARSLAST(\
JMTJ:40*(\DRAWTEXT (JMTJ,\在60轴线以下二次金叉');
条件选股:60*(JMTJ AND SLOPE(MA(C,20),3)>0),COLORGREEN;
DRAWTEXT (条件选股,50,'5日3%成功率:50.3%');
例三:
SLOWKD在30轴线以下二次金叉
JM:=CROSS(\
JMCOUNT:=COUNT(JM,BARSLAST(\ JMTJ:28*(\ DRAWTEXT (JMTJ,28,'SLOWKD在30轴线以下二次金叉');
条件选股:50*(JMTJ AND SLOPE(MA(C,20),2)>0),COLORGREEN; -------------------------------------------------------------------------------