以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- [求助]用VARIABLE定义的变量和直接赋值定义的变量有何不同? (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=2501) |
|
-- 作者:z7c9 -- 发布时间:2010/8/17 15:53:16 -- 何时才能让交易系统评测可以使用信号出现价成交测试
[此贴子已经被作者于2010-8-17 15:59:27编辑过]
|
|
-- 作者:fly -- 发布时间:2010/8/17 16:48:30 -- variable 为全局变量申明语句,一般用在逐周期计算模式。因为variable变量在序列模式与普通的变量是没有区别的。
关于全局变量的用处,可参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=2262&page=5
用下面的例子在股指期货上面测试,可直观的看到有何不同 //测试全局变量 IF BARPOS = 2 THEN
//测试普通变量 BB:n,linethick0; |
|
-- 作者:readonly -- 发布时间:2012/10/18 13:58:19 -- 楼上的例子,去掉第一行: variable:maxprofit=0; 得出的AA值,跟有那行,没有区别,为什么要加申明全局变量呢?
|
|
-- 作者:jinzhe -- 发布时间:2012/10/18 14:15:34 -- 逐k线模式下不定义全局变量,maxprofit每根k线上的初始值都是0,然后再进行计算。 定义全局变量后,第一根k线以初始值0进行计算,然后后面的k线就以上根k线计算出的值为初始值进行计算 |
|
-- 作者:readonly -- 发布时间:2012/10/18 14:33:39 -- 事实上并非如你所说,你测试一下那段程序吧。 去掉variable:maxprofit=0; 在第三棍k线时,AA仍然等于10. |
|
-- 作者: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编辑过]
|
|
-- 作者:jinzhe -- 发布时间:2012/10/18 14:44:40 -- 你不要用结果来套原理, 换个最简单的公式,然后再结合理解我的话
看看M和N的差别,是不是你所说的一样 |
|
-- 作者:readonly -- 发布时间:2012/10/18 14:45:18 -- 我是在逐k模式下测试的,你试一下。 |
|
-- 作者:3dian -- 发布时间:2012/10/18 14:47:39 -- Variable的变量有点类似一个类里面的public声明的变量,另外一个类似private声明的变量,生命周期不同! |
|
-- 作者:jinzhe -- 发布时间:2012/10/18 14:51:08 -- 我给的公式能体现全局变量定义和不用全局变量定义的变量区别,READONLY导入公式看看结果。 |