有一个指标显示的值不正确,单步跟踪后发现赋值语句执行后变量值没有变化。
赋值语句是 NearRedMACDStartPos:= BarPosCursor + 1; 执行完后并没有把BarPosCursor + 1的值赋给NearRedMACDStartPos。
如下图1, NearRedMACDStartPos:= BarPosCursor + 1 执行前,BarPosCursor = 262, NearRedMACDStartPos = 1.
如下图2,NearRedMACDStartPos:= BarPosCursor + 1 执行时,BarPosCursor = 262, NearRedMACDStartPos = 1.
如下图3,4, NearRedMACDStartPos:= BarPosCursor + 1 执行后,NearRedMACDStartPos 变量的值没有任何变化,仍然为1.
不是全局变量,只是普通变量,在指标开始设置了NearRedMACDStartPos = 1。 因为前面有循环语句和IF各种判断,图表上输出很难知道是不是因为前面没有满足条件没有赋值。
原因已经找到NearRedMACDStartPos:= BarPosCursor + 1 语句中变量NearRedMACDStartPos 后面有一个非法字符,在金字塔的编辑器中显示为空白,把语句复制到写字板显示为非法字符(ASCII 码 7F),这部分代码都是手工打的,不知道怎么进去的。
希望金字塔编辑器能在编译的时候检查脚本是否有非法字符,或变量名是否有非法字符。
1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。
A:1;
A:2;
请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ” 的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。
2. 至于FOR循环问题,是因为有个Ref(Hhv,X)的问题实现不了,我在另外一个帖子里面提到了,见http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=162928&skin=0 现在我只好用循环语句+数组来实现,实现以后发现速度确实有点慢,但好像没其他办法。
1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。
A:1;
A:2;
请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ” 的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。
2. 至于FOR循环问题,是因为有个Ref(Hhv,X)的问题实现不了,我在另外一个帖子里面提到了,见http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=162928&skin=0 现在我只好用循环语句+数组来实现,实现以后发现速度确实有点慢,但好像没其他办法。