变量,如何调用自己? (文华财经WH8赢智V8.2)

投资者咨询:变量,如何调用自己? (文华财经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同样也支持引用前一周期自身变量,效果是一样的