输出结果总有些不对的地方,于是只好老老实实把无效值的问题全面测试一下:
当前处在图表第一个周期,代码和结果如下:
COND:ref(date,1);无效值
COND2:cond+1;无效值
COND3:cond*1;无效值
结论1:与无效值进行算术运算,结果依然是无效值
COND4:DATE>cond;有效值=0
cond5:date<>cond;有效值=0
结论2:与无效值进行比较,结果都是0
COND6:2 AND cond,LINETHICK0;有效值=0
cond7:ref(date,2) and cond,linethick0;有效值=0
cond8:2 and 3,linethick0;有效值=1
结论3:金字塔允许数值变量进行逻辑运算,应该是默认了有效值数值=TRUE(1),无效值=FALSE(0),可以解释上述结果;
COND9:3 OR conD;有效值=3
cond10:ref(date,2) OR cond;有效值=0
COND11:2 OR 3,LINETHICK0; 有效值=1
结论4:结论3可以解释cond10和COND11的结果,这里的0和1实际上不是数值,是布尔值,但是不能解释COND9,
其输出结果“3”很显然是一个数值,而不是一个布尔值。这大概金字塔不要求用户区分数值变量和布尔变量,并且两者可以混合运算而产生的奇异现象。
IF DATE<>REF(DATE,1) THEN
BEGIN
KP1:=OPEN;
END
KP:KP1;有效值,一个不随机的数值。
疑问:KP1的输出是测试重点和目标,就是这个变量不对使得公式结果出错。因为变量KP1没有事先声明初值,
那么在DATE<>REF(DATE,1)满足条件之前,KP1肯定依然没有被赋值,我认为此时KP1
应该是一个无效值,但是实际结果是KP1有值,既不是一个随机数,也不是一个可以解释的数值。请帮忙解释一下。
1,如果您条件一直不满足,返回一定为无效值
2,如果后面条件满足,则返回值为指标运行完成后最后一次返回值
“看君一句话,胜读十年书”。谢谢!
马上改代码测试
VARIABLE:A=DRAWNULL,KP1=DRAWNULL;
COND2:A+1,LINETHICK0;
COND3:A*1,LINETHICK0;
COND4:DATE>A,LINETHICK0;
cond5:date<>A,linethick0;
COND6:2 AND A,LINETHICK0;
cond7:ref(date,2) and A,linethick0;
cond8:2 and 3,linethick0;
COND9:3 OR cond,LINETHICK0;
cond10:ref(date,2) OR A;
COND11:2 OR 3,LINETHICK0;
IF COND THEN
BEGIN
KP1:=OPEN;
END
KP:KP1;
结果完全正确。