有没有类似文华策略 LOOP2函数的功能
比如
LSETUP:=LOOP(BARPOS=1||BULLSETUP,0,REF(LSETUP,1)+1);//LOOP2为循环条件函数 意思是若从第一根K线开始并且BULLSETUP条件成立,则返回0,否则返回REF(LSETUP,1)+1
但是这个函数的效果似乎可以用VALUEWHEN来替代吧。
这个是有做循环的,在循环中,满足条件a,返回x,否则返回y
VALUEWHEN 是满足a,返回x,并不会返回y
variable:a=0;
temp:=ref(a,1)+1;
if c>o then a:=0;
if not(c>o) then a:=temp;
b:a;
老师,我主要是文华的策略要改成金字塔的,数值计算大部分都是兼容,就剩这个循环,可以麻烦您看看如何改写吗?红色字标注
//定义MOMVALUE:等于收盘价减去五日前的收盘价
MOMVALUE:=C-REF(C,5);
//定义成交量加权为VWM:等于当日成交量*MOMVALUE的20日加权平均
VWM:=EMA(VOL*MOMVALUE,20);
//定义TRUEHIGH1:等于如果最高价大于上一根收盘,TRUEHIGH1等于最高价,否则等于上一根收盘价
TRUEHIGH1:=IF(HIGH>REF(C,1),HIGH,REF(C,1));
//定义TRUELOW1:等于如果最低价小于上一根收盘,TRUELOW1等于最低价,否则等于上一根收盘价
TRUELOW1:=IF(LOW<=REF(C,1),LOW,REF(C,1));
//定义TRUERANGE1:等于如果是最后一根K线,TRUERANGE1等于最高价-最低价,否则等于
TRUERANGE1:=IF(ISLASTBAR,H-L,TRUEHIGH1-TRUELOW1);TRUEHIGH1-TRUELOW1
//定义波动率AATR:等于TRUERANGE1的5日均价
AATR:=MA(TRUERANGE1,5);
//VWM上穿零轴定义多头势
BULLSETUP:=CROSS(VWM,0);
//VWM下穿零轴定义空头势
BEARSETUP:=CROSS(0,VWM);
//LOOP2为循环条件函数 意思是若从第一根K线开始并且BULLSETUP条件成立,则返回0,否则返回REF(LSETUP,1)+1,也就是计算多头势头到当前的周期数
LSETUP:=LOOP2(BARPOS=1||BULLSETUP,0,REF(LSETUP,1)+1);
//定义LEPRICE:等于满足BULLSETUP成立时的收盘价
LEPRICE:=VALUEWHEN(BULLSETUP,C);
//空头势开始计数并记录当前价格(参考LSETUP的描述)
SSETUP:=LOOP2(BARPOS=1||BEARSETUP,0,REF(SSETUP,1)+1);
//定义SEPRICE:等于满足BEARSETUP成立时的收盘价
SEPRICE:=VALUEWHEN(BEARSETUP,C);
就上面那样你试下呢,c>o就是条件,a就是最后计算的结果
你在图上对比下呢,先不要想着直接策略转,先看这个效果是否一样
variable:a:=0,x:=0;
temp1:=ref(a,1)+1;
if BARPOS=1 or BULLSETUP then a:=0;
if not(BARPOS=1||BULLSETUP) then a:=temp1;
LSETUP:a
temp2:=ref(x,1)+1;
if BARPOS=1 or BEARSETUP then x:=0;
if not(BBARPOS=1 or BEARSETUP) then x:=temp;
SSETUP:x;
你自己整合进去吧。