投资者咨询:变量,如何调用自己? (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-7-23 9:17
变量,如何调用自己?
SHORT:=12;
LONG:=26;
M:=9;
//*** T中 MACD指标*****************************
T中:=1;// N倍MACD
T中DIFF:EMA(CLOSE,SHORT*T中) - EMA(CLOSE,LONG*T中),DOT,COLORWHITE;//短周期与长周期的收盘价的指数平滑移动平均值做差。
T中DEA :EMA(T中DIFF,M*T中),DOT,COLORYELLOW;//DIFF的M个周期指数平滑移动平均
T中MD :2*(T中DIFF-T中DEA),COLORSTICK;// DIFF减DEA的2倍画线
//DRAWLINE(T中MD>=0,T中MD,T中MD>=0,T中MD,COLORMAGENTA),LINETHICK4;
//DRAWLINE(T中MD< 0,T中MD,T中MD< 0,T中MD,COLORGREEN ),LINETHICK4;
T中D:=COUNT(1,0)/COUNT(CROSSUP(T中DIFF,T中DEA),0),COLORRED,NODRAW;//求出金叉的,平均周期
T中F:IF(BARPOS>T中D*10,T中D*10,BARPOS),NODRAW;//基础分析周期数
T中上标:=MAX(HHV(T中DIFF,T中F),HHV(T中MD,T中F));
T中下标:=MIN(LLV(T中DIFF,T中F),LLV(T中MD,T中F));
T中K标:=MA(ABS(H-L),T中F*1);//求1倍TO周期内的,高低点这间的平均波动幅度,也用于标注的参考点
T中UP:BARSLASTCOUNT(T中MD>=0),NODRAW;//金叉,动态上涨周期
T中DN:BARSLASTCOUNT(T中MD<=0),NODRAW;//死叉,动态下跌周期
T中HZG:=IF(T中DN=1,HHV(T中MD,REF(T中UP,1)),NULL),NODRAW;//求出红柱的最高点
T中LZD:=IF(T中UP=1,LLV(T中MD,REF(T中DN,1)),NULL),NODRAW;//求出绿柱的最低点
T中HZGM:SUM(T中HZG,0)/COUNT(NOT(ISNULL(T中HZG)),0),DOT,COLORRED, NOTEXT;//求出红柱的最高点的平均值
T中LZDM:SUM(T中LZD,0)/COUNT(NOT(ISNULL(T中LZD)),0),DOT,COLORCYAN,NOTEXT;//求出绿柱的最低点的平均值
//-----求-----金叉,死叉动态周期数**量化*********************************
T中UP前:=VALUEWHEN(T中UP=1,LLVBARS(L,REF(T中DN,1))),NODRAW;//金叉时,前面最低价所在周期
T中UP全:=T中UP+IF(ISNULL(T中UP前),0,T中UP前),NODRAW;//金叉,最低价全面动态上涨周期
T中DN前:=VALUEWHEN(T中DN=1,HHVBARS(H,REF(T中UP,1))),NODRAW;
T中DN全:=T中DN+IF(ISNULL(T中DN前),0,T中DN前),NODRAW;//死叉,最高价全面动态下跌周期
//变量,如何调用自己?
AAA:IF(BARPOS=1,NULL, //初始化
IF(T中UP>0 AND T中DIFF>T中HZGM,T中DIFF, //满足某个条件,赋值
IF(CROSSDOWN(T中DIFF,0),NULL,AAA))) //满足另1个条件,赋空值,否则变量等于原来的自己
,COLORRED,LINETHICK3;
技术人员回复
日期:2018-7-23 9:28
使用LOOP2函数支持变量循环引用前一周期自身变量
具体用法可以参考函数说明了解一下
AAA:LOOP2(BARPOS=1,NULL, //初始化
LOOP2(T中UP>0 AND T中DIFF>T中HZGM,T中DIFF, //满足某个条件,赋值
LOOP2(CROSSDOWN(T中DIFF,0),NULL,REF(AAA,1)))) //满足另1个条件,赋空值,否则变量等于原来的自己
,COLORRED,LINETHICK3;
投资者咨询:变量,如何调用自己? (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-7-23 9:17
非常感谢,使用了这个方法后,是否,全局变量(由于在多个地方赋值,在不同的行里,值很可能是不同的,排除错误很麻烦)就基本可以不用了?
技术人员回复
日期:2018-7-23 10:07
是的,简单的引用变量自身直接使用LOOP2函数就可以实现
投资者咨询:变量,如何调用自己? (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-7-23 9:17
我再查询了一下,其实 if, ifelse,应该都可以实现,LOOP2,if , ifelse 是否基本 同样的功能,或者有点什么细微的区别吗?
AAA4:IF(T中UP>0 AND CROSSUP(T中DIFF,T中HZGM),T中DIFF+2, //满足某个条件,赋值
IF(T中UP>0 AND REF(AAA3,1)<>0,T中DIFF+2, //满足某个条件,赋值
IF(CROSSDOWN(T中DIFF,0),NULL,//满足另1个条件,赋空值
REF(AAA4,1) //其它情况下,变量循环引用前一周期自身变量
))),COLORRED,LINETHICK3;
技术人员回复
日期:2018-7-23 11:04
IF IFELISE同样也支持引用前一周期自身变量,效果是一样的