以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 无效值运算的奇异现象 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=64281) |
-- 作者:无极无名 -- 发布时间:2014/4/23 11:11:21 -- 无效值运算的奇异现象 输出结果总有些不对的地方,于是只好老老实实把无效值的问题全面测试一下: 当前处在图表第一个周期,代码和结果如下: 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有值,既不是一个随机数,也不是一个可以解释的数值。请帮忙解释一下。
|
-- 作者:lichenghu -- 发布时间:2014/4/23 11:21:19 -- 1,如果您条件一直不满足,返回一定为无效值 2,如果后面条件满足,则返回值为指标运行完成后最后一次返回值 |
-- 作者:无极无名 -- 发布时间:2014/4/23 11:45:41 -- “看君一句话,胜读十年书”。谢谢! 马上改代码测试 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; 结果完全正确。 |