全局变量,多次赋值,前后值不一致,如何处理? (文华财经WH8赢智V8.2)

投资者咨询:全局变量,多次赋值,前后值不一致,如何处理? (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-30 15:06
 //全局变量,多次赋值,前后值不一致,如何处理?

VARIABLE:T中BL白:0,T中ZGJ:0,T中ZDJ:0 ,T中浪:0 ; //T中-大级别平台,数浪    T中ZAF:0,  T中ZBF:0 ,   T中ZCF:0 


SHORT:=12;
LONG:=26;
M:=9;

//*** T中   MACD指标*****************************
T中:=1;//  N倍MACD
T中DIFF:EMA(CLOSE,SHORT*T中) - EMA(CLOSE,LONG*T中),DOT,NOTEXT,COLORWHITE;//短周期与长周期的收盘价的指数平滑移动平均值做差。
T中DEA :EMA(T中DIFF,M*T中),DOT,NOTEXT,COLORYELLOW;//DIFF的M个周期指数平滑移动平均
T中MD  :2*(T中DIFF-T中DEA),COLORSTICK,NOTEXT;//  DIFF减DEA的2倍画线 
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中BL白:IF(T中DEA>T中上标*0.3 AND T中DIFF>T中DEA,T中DIFF,
IF(CROSSDOWN(T中DIFF,0),NULL,
T中BL白)),COLORWHITE;

T中BL起:IF(T中BL白<>0 AND (ISNULL(REF(T中BL白,1)) OR 0),10,0),COLORWHITE,NOTEXT;//中枢的起点,应对全局变量在后面赋值,必须取值2个的处理方法
//IF REF(T中BL起,1)=1 THEN T中BL起:0,NOTEXT;    
T中BL终:IF((REF(T中BL白,1)<>0 OR 0) AND ISNULL(T中BL白),-10,0),COLORYELLOW,NOTEXT;//中枢的起点
//IF REF(T中BL终,1)=-1 THEN T中BL终:=0,NOTEXT;      /T中BL终:FILTER(T中BL终=-1 ,1 )*-30;//采用过滤方法,存在问题

T中BL白:IF(T中DEA>T中上标*0.5 AND T中DIFF>T中DEA,T中DIFF,T中BL白);//参数 大于 T中上标*0.3,起点有值

//T中BL白:IF(T中DEA>T中上标*0.2 AND T中DIFF>T中DEA,T中DIFF,T中BL白);////参数 小于 T中上标*0.3,起点无
技术人员回复
日期:2018-7-30 16:02
对全局变量多次循环赋值,可以配合IF THEN BEGIN语句,以定义T中BL白为例,参考:

VARIABLE:T中BL白:0,T中ZGJ:0,T中ZDJ:0 ,T中浪:0 ; //T中-大级别平台,数浪    T中ZAF:0,  T中ZBF:0 ,   T中ZCF:0 

SHORT:=12;
LONG:=26;
M:=9;

//*** T中   MACD指标*****************************
T中:=1;//  N倍MACD
T中DIFF:EMA(CLOSE,SHORT*T中) - EMA(CLOSE,LONG*T中),DOT,NOTEXT,COLORWHITE;//短周期与长周期的收盘价的指数平滑移动平均值做差。
T中DEA :EMA(T中DIFF,M*T中),DOT,NOTEXT,COLORYELLOW;//DIFF的M个周期指数平滑移动平均
T中MD  :2*(T中DIFF-T中DEA),COLORSTICK,NOTEXT;//  DIFF减DEA的2倍画线 
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周期内的,高低点这间的平均波动幅度,也用于标注的参考点
IF (T中DEA>T中上标*0.3 AND T中DIFF>T中DEA)||(T中DEA>T中上标*0.2 AND T中DIFF>T中DEA) THEN
BEGIN
T中BL白:=T中DIFF;
END
IF CROSSDOWN(T中DIFF,0)&&NOT(T中DEA>T中上标*0.3 AND T中DIFF>T中DEA) THEN
BEGIN
T中BL白:=NULL;
END
IF NOT(CROSSDOWN(T中DIFF,0))&&NOT((T中DEA>T中上标*0.3 AND T中DIFF>T中DEA)||(T中DEA>T中上标*0.2 AND T中DIFF>T中DEA)) THEN
BEGIN
T中BL白:=T中BL白;
END
SS:T中BL白;


投资者咨询:全局变量,多次赋值,前后值不一致,如何处理? (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-30 15:06
 //我关键的问题是,不能把  T中BL白  放在一起,邻近来赋值,因为,我实际的程序代码, 

T中BL白:IF(T中DEA>T中上标*0.3 AND T中DIFF>T中DEA,T中DIFF,
IF(CROSSDOWN(T中DIFF,0),NULL,
T中BL白)),COLORWHITE;

T中BL起:IF(T中BL白<>0 AND (ISNULL(REF(T中BL白,1)) OR 0),10,0),COLORWHITE,NOTEXT;//中枢的起点,应对全局变量在后面赋值,必须取值2个的处理方法
//IF REF(T中BL起,1)=1 THEN T中BL起:0,NOTEXT;    
T中BL终:IF((REF(T中BL白,1)<>0 OR 0) AND ISNULL(T中BL白),-10,0),COLORYELLOW,NOTEXT;//中枢的起点
//IF REF(T中BL终,1)=-1 THEN T中BL终:=0,NOTEXT;      /T中BL终:FILTER(T中BL终=-1 ,1 )*-30;//采用过滤方法,存在问题


//我实际的程序代码, 下面的 对 T中BL白 赋值,是调用了 ,T中BL起, T中BL终  这2个变量了的,所以,赋值是不在一起


T中BL白:IF(T中DEA>T中上标*0.5 AND T中DIFF>T中DEA,T中DIFF,T中BL白);//参数 大于 T中上标*0.3,起点有值

//T中BL白:IF(T中DEA>T中上标*0.2 AND T中DIFF>T中DEA,T中DIFF,T中BL白);////参数 小于 T中上标*0.3,起点无
技术人员回复
日期:2018-7-31 8:56
 您用了全局变量,就不要单独用IF语句赋值了

因为全局变量下,之前赋值是保存的,您只用IF就没必要用全局变量赋值了

您应该是使用冲突了,按照您当前写法不需要全局变量的,您删除后在看看