以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 有没有LOOP2函数 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184178) |
-- 作者:jy02362711 -- 发布时间:2021/2/3 17:23:12 -- 有没有LOOP2函数 有没有类似文华策略 LOOP2函数的功能 比如 LSETUP:=LOOP(BARPOS=1||BULLSETUP,0,REF(LSETUP,1)+1);//LOOP2为循环条件函数 意思是若从第一根K线开始并且BULLSETUP条件成立,则返回0,否则返回REF(LSETUP,1)+1
|
-- 作者:FireScript -- 发布时间:2021/2/4 11:02:58 -- 没有这个函数的。 |
-- 作者:FireScript -- 发布时间:2021/2/4 11:04:37 -- 但是这个函数的效果似乎可以用VALUEWHEN来替代吧。 |
-- 作者:jy02362711 -- 发布时间:2021/2/4 11:21:34 -- 这个是有做循环的,在循环中,满足条件a,返回x,否则返回y VALUEWHEN 是满足a,返回x,并不会返回y |
-- 作者:yukizzc -- 发布时间:2021/2/4 12:49:02 -- variable:a=0; temp:=ref(a,1)+1; b:a;
|
-- 作者:jy02362711 -- 发布时间:2021/2/4 13:45:51 -- 老师,我主要是文华的策略要改成金字塔的,数值计算大部分都是兼容,就剩这个循环,可以麻烦您看看如何改写吗?红色字标注 //定义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);
|
-- 作者:yukizzc -- 发布时间:2021/2/4 14:36:23 -- 就上面那样你试下呢,c>o就是条件,a就是最后计算的结果 你在图上对比下呢,先不要想着直接策略转,先看这个效果是否一样 |
-- 作者:FireScript -- 发布时间:2021/2/4 14:37:32 -- 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; 你自己整合进去吧。
|