以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]请问是否定义变量对计算结果有影响吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=155004)

--  作者:alohomora
--  发布时间:2017/6/13 9:59:07
--  [求助]请问是否定义变量对计算结果有影响吗?
1、
 VARIABLE:SETPRICE=0;
SETPRICE:=AA;
和去掉变量定义直接写
SETPRICE:=AA;
这两个SETPRICE取得的计算结果一致吗?
2、
SETPRICE:=AA;和SETPRICE:AA;有没有“=”,这两个SETPRICE取得的计算结果一致吗?
--  作者:gxx978
--  发布时间:2017/6/13 10:07:24
--  

1,不一致,一般变量和全局变量的差别,详细可以参考连接:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm

2,这个是一致的,加"=",是不在图表上输出。不加,即输出。


--  作者:qq代人发帖
--  发布时间:2017/6/13 10:10:09
--  

1.variable在金字塔下是全局变量,普通变量无需使用这个去声明。所以使用与否的区别就在于前者会声明一个全局变量,后者只是普通变量了。

2.:=和:   都具备声明一个变量的作用,不同的是前者还能作为临时赋值的语句来使用,此外就是在图表上前者不会显示出指标线。在数值上按照你给出的语句,最终赋值效果一致。对变量来说,你可以使用 :=或者:来声明,但是后面如果有重新赋值的操作,你就只能使用:=来操作了。


--  作者:alohomora
--  发布时间:2017/6/13 10:13:15
--  
以下是引用gxx978在2017/6/13 10:07:24的发言:

1,不一致,一般变量和全局变量的差别,详细可以参考连接:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm

2,这个是一致的,加"=",是不在图表上输出。不加,即输出。


为何加上=,可以这样写:
 VARIABLE:SETPRICE=0;
SETPRICE:=AA;
而去掉=后,这样写却提示重复定义:
 VARIABLE:SETPRICE=0;
SETPRICE:AA;
--  作者:qq代人发帖
--  发布时间:2017/6/13 10:15:45
--  
以下是引用alohomora在2017/6/13 10:13:15的发言:


为何加上=,可以这样写:
 VARIABLE:SETPRICE=0;
SETPRICE:=AA;
而去掉=后,这样写却提示重复定义:
 VARIABLE:SETPRICE=0;
SETPRICE:AA;

你第一部分代码中的:= 相当于再次赋值,但是第二部分代码却是2次声明一个变量,你声明了2次,肯定不行的。请看3楼的说明。

[此贴子已经被作者于2017/6/13 10:21:23编辑过]

--  作者:alohomora
--  发布时间:2017/6/13 10:16:20
--  
以下是引用qq代人发帖在2017/6/13 10:10:09的发言:

1.variable在金字塔下是全局变量,普通变量无需使用这个去声明。所以使用与否的区别就在于前者会声明一个全局变量,后者只是普通变量了。

2.:=和:   都具备声明一个变量的作用,不同的是前者还能作为临时赋值的语句来使用,此外就是在图表上前者不会显示出指标线。在数值上按照你给出的语句,最终赋值效果一致。对变量来说,你可以使用 :=或者:来声明,但是后面如果有重新赋值的操作,你就只能使用:=来操作了。


请问是不是因为这两个原因导致下面的错误提示:
 VARIABLE:SETPRICE=0;
SETPRICE:=AA;
这样写就可以。
 VARIABLE:SETPRICE=0;
SETPRICE:AA;
去掉=后,就提示重复定义了。
另外加不加全局变量,哪种写法会导致前面取到的SETPRICE值,在后面几个周期刷新后可能发生变化?

--  作者:qq代人发帖
--  发布时间:2017/6/13 10:26:14
--  
以下是引用alohomora在2017/6/13 10:16:20的发言:


请问是不是因为这两个原因导致下面的错误提示:
 VARIABLE:SETPRICE=0;
SETPRICE:=AA;
这样写就可以。
 VARIABLE:SETPRICE=0;
SETPRICE:AA;
去掉=后,就提示重复定义了。
另外加不加全局变量,哪种写法会导致前面取到的SETPRICE值,在后面几个周期刷新后可能发生变化?

1.你第一部分代码是正确的,但是全局变量,希望您理解透彻后再用。如果只是需要一个普通变量: setprice:aa;    即可。

2.全局变量的值不会再每个运行周期都重置一次。 所以你要是对这个变量有什么操作,几个周期下来是会叠加这个效果的。更多内容,可以在论坛直接搜索:全局变量。


--  作者:alohomora
--  发布时间:2017/6/13 10:36:52
--  
以下是引用qq代人发帖在2017/6/13 10:26:14的发言:

1.你第一部分代码是正确的,但是全局变量,希望您理解透彻后再用。如果只是需要一个普通变量: setprice:aa;    即可。

2.全局变量的值不会再每个运行周期都重置一次。 所以你要是对这个变量有什么操作,几个周期下来是会叠加这个效果的。更多内容,可以在论坛直接搜索:全局变量。



第一种写法,会不会导致偶尔结果变化?比如说,当前周期取得的SETPRICE值是A,但是几个周期后,变成B了?请问怎么才能避免这种情况出现?是否换用GLOBALVARIABLE?
--  作者:gxx978
--  发布时间:2017/6/13 10:49:11
--  

1、定义为全局变量,第一次赋值A过后,那后面的值就一直是A,不会变为B,除非重新赋值。

2、GLOBALVARIABLE为超全局变量,只是作用于指标单次加载的过程中,指标加载时进行初始化,后面的定义语句不会对其再初始化,只有指标重新加载运算的时候才会被初始化的。

[此贴子已经被作者于2017/6/13 10:53:45编辑过]

--  作者:alohomora
--  发布时间:2017/6/13 10:54:22
--  
以下是引用gxx978在2017/6/13 10:49:11的发言:

1、定义为全局变量,第一次赋值A过后,那后面的值就一直是A,不会变为B,除非重新赋值。

2、GLOBALVARIABLE为超全局变量,只是作用于指标单次加载的过程中,重新加载运算的时候又会被初始化的。


明白了。多谢。