以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  全局变量  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=148011)

--  作者:林华强
--  发布时间:2017/2/21 13:00:36
--  全局变量
variable:cs1=0;
variable这个函数是不是程序每个tick运行一次都会将cs1初始化为0?

--  作者:jinzhe
--  发布时间:2017/2/21 13:06:23
--  
不会,全局变量只会初始化一次,
--  作者:林华强
--  发布时间:2017/2/21 14:39:17
--  
不对啊,这是我的部分代码:
variable:cs1=0,
            cs2=0,
开多条件:=DOWN_NUM > UP_NUM AND WR <= WR_DOWN;
开空条件:=UP_NUM > DOWN_NUMAND WR >= WR_UP;

IF BARNUM = 1 THEN BEGIN
   cs1:= 0;
   cs2:= 0;
END;

//多空轮流转换
if 开多条件 and UP_NUM<BARNUM and DOWN_NUM<BARNUM then begin
   cs1:=cs1+1;
   cs2:=0;
end
if 开空条件 and UP_NUM<BARNUM and DOWN_NUM<BARNUM then begin
   cs1:=0;
   cs2:=cs2+1;
end
1.但是按照我这段代码的逻辑cs1本应该随着我每次开仓条件的满足而自加一,但是输出的数据显示cs1始终为1,我猜测是因为variable函数每次tick都把cs1赋值为0,所每次开仓条件满足自加一还是一。
2.我用globalvariable就不会出现这个问题了,请问两者具体有什么区别
图片点击可在新窗口打开查看此主题相关图片如下:记录.png
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2017/2/21 15:04:54
--  
一根k线里面是不会变化的
--  作者:jinzhe
--  发布时间:2017/2/21 15:05:41
--  
还有你的全局变量定义,写完整,写正确,你那样的全局变量定义,是不会通过编译的
--  作者:林华强
--  发布时间:2017/2/21 15:50:52
--  
你看我红色框里的数据,cs1在13:28这一分钟里还是会随着开仓条件变得
--  作者:jinzhe
--  发布时间:2017/2/21 15:57:53
--  

不会变化的意思是不会随着来一笔数据累加一次

你把你的全局变量定义再发一次,发正确能通过编译的


--  作者:jinzhe
--  发布时间:2017/2/21 15:59:33
--  
如果上根k线上,全局变量的值为0,那么在当根k线,开多条件成立全局变量就变成1,当根k线内不会自动累加,满足条件就是1,不满足条件就又会变回0