以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 赋值语句执行后变量值没有变化 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=162935) |
-- 作者:jimcnab -- 发布时间:2018/4/22 17:56:36 -- 赋值语句执行后变量值没有变化 有一个指标显示的值不正确,单步跟踪后发现赋值语句执行后变量值没有变化。
如下图2,NearRedMACDStartPos:= BarPosCursor + 1 执行时,BarPosCursor = 262, NearRedMACDStartPos = 1.
如下图3,4, NearRedMACDStartPos:= BarPosCursor + 1 执行后,NearRedMACDStartPos 变量的值没有任何变化,仍然为1.
![]() ![]() |
-- 作者:wenarm -- 发布时间:2018/4/22 18:03:49 -- 你的这些值,是全局变量?,不要用这种方式调试,直接放图表上输出自己的变量的值,一看就知道了。 [此贴子已经被作者于2018/4/22 18:05:46编辑过]
|
-- 作者:jimcnab -- 发布时间:2018/4/22 19:42:06 -- 不是全局变量,只是普通变量,在指标开始设置了NearRedMACDStartPos = 1。 因为前面有循环语句和IF各种判断,图表上输出很难知道是不是因为前面没有满足条件没有赋值。
原因已经找到NearRedMACDStartPos:= BarPosCursor + 1 语句中变量NearRedMACDStartPos 后面有一个非法字符,在金字塔的编辑器中显示为空白,把语句复制到写字板显示为非法字符(ASCII 码 7F),这部分代码都是手工打的,不知道怎么进去的。
希望金字塔编辑器能在编译的时候检查脚本是否有非法字符,或变量名是否有非法字符。
|
-- 作者:wenarm -- 发布时间:2018/4/23 5:40:09 -- 1.你所说的非法字符,在编译过程中会提示的,另外从编译器中复制出来的代码,以为字符类型的原因可能错在你说的现象,但是不代码软件中就存在。 2,pel中已经弱化for循环和数组的的使用,对与序列变量来说,其本身就具备数组的特性,另外for循环这种,除非是需要在一根k上处理多次计算,否则,在k线的横向坐标上for循环没有任何作用和意义,建议你先好好理解pel的执行机制以及变量特性以后再写你的代码。 3.你可以把你的代码需求表述出来,我们尝试写一个范例给你
|
-- 作者:jimcnab -- 发布时间:2018/4/24 14:33:51 -- 1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。
A:1;
请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ” 的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。
2. 至于FOR循环问题,是因为有个Ref(Hhv,X)的问题实现不了,我在另外一个帖子里面提到了,见http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=162928&skin=0 现在我只好用循环语句+数组来实现,实现以后发现速度确实有点慢,但好像没其他办法。
[此贴子已经被作者于2018/4/24 14:35:39编辑过]
|
-- 作者:jimcnab -- 发布时间:2018/4/25 13:01:09 -- 以下是引用jimcnab在2018/4/24 14:33:51的发言: 1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。
A:1;
请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ” 的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。
2. 至于FOR循环问题,是因为有个Ref(Hhv,X)的问题实现不了,我在另外一个帖子里面提到了,见http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=162928&skin=0 现在我只好用循环语句+数组来实现,实现以后发现速度确实有点慢,但好像没其他办法。
[此贴子已经被作者于2018/4/24 14:35:39编辑过]
第1个问题是否金字塔可以改进,第2个问题是否有更好的解决方法? |
-- 作者:FireScript -- 发布时间:2018/4/25 13:16:49 -- 通常只能在循环之外把需要计算的值准备好,否则暂时没有其他好的办法了。 |