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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → [求助]用VARIABLE定义的变量和直接赋值定义的变量有何不同?

   

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


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

主题:[求助]用VARIABLE定义的变量和直接赋值定义的变量有何不同?

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 13:58:19 [显示全部帖子]

楼上的例子,去掉第一行: variable:maxprofit=0;
得出的AA值,跟有那行,没有区别,为什么要加申明全局变量呢?

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 14:33:39 [显示全部帖子]

事实上并非如你所说,你测试一下那段程序吧。
去掉variable:maxprofit=0;
在第三棍k线时,AA仍然等于10.


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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 14:45:18 [显示全部帖子]

我是在逐k模式下测试的,你试一下。

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 14:52:06 [显示全部帖子]

回7楼的例子,你m变量没写对,强行修改了第4行的计算结果。
如果是这样,你看看结果:
variable:n=0;
if barpos=1 then m:=0;
if c>o then n:=n+1;
if c>o then m:=M+1;
n1:n,NOAXIS;
m1:m,NOAXIS;

m1 跟 n1 就没区别了。

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 15:13:03 [显示全部帖子]

回楼上,你为什么要加n:=0呢?是因为后面要使用n变量,而前面没有,所以编译通不过,必须要加n:=0

但是,你直接加n:=0干扰了后面的运算结果。

也就是说,后面运算结果本来是对的,但是你非要在每周期都把它重新修改为错误值,当然导致运算错误。

你加入n:=0必须以不干扰后面运行结果为准则。

你说是吧。

我们讨论的不是VARIABLE:N=0;和直接N:=0;的区别,而是有VARIABLE,跟没有VARIABLE,变量值在下一周期里是否重置的问题。
因为教程里说普通变量每周期都会重置,而事实上不会重置。

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 15:15:50 [显示全部帖子]

以下是引用every在2012-10-18 14:41:19的发言:

variable 为全局变量申明语句,一般用在逐周期计算模式。因为variable变量在序列模式与普通的变量是没有区别的。

 

你看到的,没有区别,就是因为是在序列模式下看的.

 

逐周期和序列的区别,请参考该页

http://www.weistock.com/runmode.htm

 

逐周期模式下,在每根K线上,代码都会从头到尾重新执行一次; 

         Variable型的全局变量,只会在一开始的时候初始化一次随后的每个周期,会根据具体条件对此全局变量赋予不同的值,从而可以让编程者根据其返回值再行判断和利用.

         全局变量maxprofit,只在第1根的K线上初始化为0,

                              在BARPOS = 2的K线上(第2根K线上),重新赋值为10,且此后的K线上为10

                              在BARPOS = 10的K线上(第10根K线上),重新赋值为30,且此后的K线上为30

        

         普通变量n则不是,执行每根K线,都会先赋值为0

                              在BARPOS = 2的K线上(第2根K线上),先赋值为0,在赋值为2

                              在BARPOS = 10的K线上(第10根K线上),先赋值为0,在赋值为10

                              在其它K线上,都是赋值为0

 

如果还不明白,就出去走动走动换换心情,自己用K线再看看理解理解

[此贴子已经被作者于2012-10-18 14:42:00编辑过]


 普通变量n则不是,执行每根K线,都会先赋值为0“

很明显,你的理解也是错的,跟我之前一样。这是教程的误导。

[此贴子已经被作者于2012-10-18 15:16:14编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 15:22:47 [显示全部帖子]

我原帖是这个 : http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=29922

可是你们说要到这里来求解。

我明显看出这个贴跟我那贴没关系,可是那贴你们又不回答了,只能跑来这里。


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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 15:23:29 [显示全部帖子]

好了,累了,就算我没问过吧,辛苦你了,金泽,谢谢!

 回到顶部