variable 为全局变量申明语句,一般用在逐周期计算模式。因为variable变量在序列模式与普通的变量是没有区别的。
关于全局变量的用处,可参考
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=2262&page=5
用下面的例子在股指期货上面测试,可直观的看到有何不同
//测试全局变量
variable:maxprofit=0;
IF BARPOS = 2 THEN
MAXPROFIT := 10;
IF BARPOS = 10 THEN
MAXPROFIT := 30;
AA:MAXPROFIT,linethick0;
//测试普通变量
n:=0;
IF BARPOS = 2 THEN
n:=1;
IF BARPOS = 10 THEN
n:=2;
BB:n,linethick0;
逐k线模式下不定义全局变量,maxprofit每根k线上的初始值都是0,然后再进行计算。
定义全局变量后,第一根k线以初始值0进行计算,然后后面的k线就以上根k线计算出的值为初始值进行计算
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线再看看理解理解
你不要用结果来套原理,
换个最简单的公式,然后再结合理解我的话
variable:n=0;
m:=0;
if c>o then n:=n+1;
if c>o then m:=M+1;
n1:n;
m1:m;
看看M和N的差别,是不是你所说的一样
Variable的变量有点类似一个类里面的public声明的变量,另外一个类似private声明的变量,生命周期不同!