欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 赋值语句执行后变量值没有变化

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2423人关注过本帖树形打印复制链接

主题:赋值语句执行后变量值没有变化

帅哥哟,离线,有人找我吗?
jimcnab
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:66 积分:0 威望:0 精华:0 注册:2018/3/27 11:07:36
赋值语句执行后变量值没有变化  发帖心情 Post By:2018/4/22 17:56:36    Post IP:116.25.42.38[只看该作者]

 有一个指标显示的值不正确,单步跟踪后发现赋值语句执行后变量值没有变化。
赋值语句是 NearRedMACDStartPos:= BarPosCursor + 1;  执行完后并没有把BarPosCursor + 1的值赋给NearRedMACDStartPos。

如下图1, NearRedMACDStartPos:= BarPosCursor + 1 执行前,BarPosCursor = 262, NearRedMACDStartPos = 1.

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 

如下图2,NearRedMACDStartPos:= BarPosCursor + 1 执行时,BarPosCursor = 262, NearRedMACDStartPos = 1.

 


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 

如下图3,4, NearRedMACDStartPos:= BarPosCursor + 1 执行后,NearRedMACDStartPos 变量的值没有任何变化,仍然为1.

 


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
 


图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/4/22 18:03:49    Post IP:116.237.21.77[只看该作者]

你的这些值,是全局变量?,不要用这种方式调试,直接放图表上输出自己的变量的值,一看就知道了。

[此贴子已经被作者于2018/4/22 18:05:46编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
jimcnab
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:66 积分:0 威望:0 精华:0 注册:2018/3/27 11:07:36
  发帖心情 Post By:2018/4/22 19:42:06    Post IP:116.25.42.38[只看该作者]

不是全局变量,只是普通变量,在指标开始设置了NearRedMACDStartPos = 1。 因为前面有循环语句和IF各种判断,图表上输出很难知道是不是因为前面没有满足条件没有赋值。

 

原因已经找到NearRedMACDStartPos:= BarPosCursor + 1 语句中变量NearRedMACDStartPos 后面有一个非法字符,在金字塔的编辑器中显示为空白,把语句复制到写字板显示为非法字符(ASCII 码 7F),这部分代码都是手工打的,不知道怎么进去的。

 

希望金字塔编辑器能在编译的时候检查脚本是否有非法字符,或变量名是否有非法字符。

 


图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/4/23 5:40:09    Post IP:116.237.21.77[只看该作者]

1.你所说的非法字符,在编译过程中会提示的,另外从编译器中复制出来的代码,以为字符类型的原因可能错在你说的现象,但是不代码软件中就存在。
2,pel中已经弱化for循环和数组的的使用,对与序列变量来说,其本身就具备数组的特性,另外for循环这种,除非是需要在一根k上处理多次计算,否则,在k线的横向坐标上for循环没有任何作用和意义,建议你先好好理解pel的执行机制以及变量特性以后再写你的代码。
3.你可以把你的代码需求表述出来,我们尝试写一个范例给你


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
jimcnab
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:66 积分:0 威望:0 精华:0 注册:2018/3/27 11:07:36
  发帖心情 Post By:2018/4/24 14:33:51    Post IP:116.25.42.199[只看该作者]

1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。

 

A:1;                               
A:2;

 

请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ”  的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。

 


图片点击可在新窗口打开查看此主题相关图片如下:a2.png
图片点击可在新窗口打开查看

 

 

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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:66 积分:0 威望:0 精华:0 注册:2018/3/27 11:07:36
  发帖心情 Post By:2018/4/25 13:01:09    Post IP:116.25.43.83[只看该作者]

以下是引用jimcnab在2018/4/24 14:33:51的发言:

1. 关于非法字符的问题,在编译过程中并没有提示,而且我随时可以重现这个问题。

 

A:1;                               
A:2;

 

请把上面两行原封不动的拷入到金字塔的公式编辑器,第二行“A:2; ”  的A后面实际上有个非法字符,拷入后在图表上显示如下图,显然金字塔把第二行的A加上那个非法字符作为一个变量来看待了,并没有报错。

 


图片点击可在新窗口打开查看此主题相关图片如下:a2.png
图片点击可在新窗口打开查看

 

 

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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/4/25 13:16:49    Post IP:180.169.30.6[只看该作者]

 通常只能在循环之外把需要计算的值准备好,否则暂时没有其他好的办法了。


命数如织,当如磐石。
 回到顶部