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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → GLOBALVARIABLE经常被重置

   

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


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

主题:GLOBALVARIABLE经常被重置

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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
GLOBALVARIABLE经常被重置  发帖心情 Post By:2013/5/7 16:24:42 [显示全部帖子]

我有一段代码统计今天的高点和低点:

 

GLOBALVARIABLE:d=0,今高=0,今低=0;

if date()<d or ISLASTBAR then exit;

if date()<>d then
begin
 今高:=HIGH;//a;//今高
 今低:=low;//b;//今低
end
else begin
 if high>今高 then 今高:=high;
 if low<今低 then 今低:=low;
end;

d:=date();

 

按照以上代码运行,今高、今低两个全局变量通常应该记录今天的高点和低点。

但在实盘中,有时候会突然今高、今低变成了0,我怎么看都不可能,难道是这个全局变量在某种情况下会变成0?但奇怪的是d又没变成0。还是high、low有时候会返回0?


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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 16:45:28 [显示全部帖子]

我就是用他来加快效率的阿,我程序的代码和上面的不同,不知道是不是这个的关系,明天再测下:

 

GLOBALVARIABLE:d=0;

if date()<d or ISLASTBAR then exit;

GLOBALVARIABLE:今高=0,今低=0;

if date()<>d then
begin
 今高:=HIGH;//a;//今高
 今低:=low;//b;//今低
end
else begin
 if high>今高 then 今高:=high;
 if low<今低 then 今低:=low;
end;

d:=date();

 

所以d不会变成0,但今高和今低就会了


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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 17:03:27 [显示全部帖子]

我现在把所有GLOBALVARIABLE变量声明都放在第一行了,明天测试看看,有可能是这个原因导致

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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 17:04:36 [显示全部帖子]

对阿阿,我就用日志输出了,才发现一段时间正常,运行十多根K线后就不正常了

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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 17:08:42 [显示全部帖子]

王锋,我用:

MSGOUT(barpos=DATACOUNT-1,'NN:' & numtostr(NN,2));

 

这样输出来看的,倒数第2根K线计算时的值


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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 17:54:41 [显示全部帖子]

测试代码:

 

cc:c,NODRAW;
GLOBALVARIABLE:d=0,t=0;
GLOBALVARIABLE:A=0;
MSGOUT(barpos=DATACOUNT-1,'d:' & numtostr(d,0));
MSGOUT(barpos=DATACOUNT-1,'t:' & numtostr(t,0));
MSGOUT(barpos=DATACOUNT-1,'A:' & numtostr(A,0));

if date()<d or (date()=d and time()<=t) or ISLASTBAR then exit;

GLOBALVARIABLE:B=0;
MSGOUT(barpos=DATACOUNT-1,'B:' & numtostr(B,0));
A:=A+1;
B:=B+1;

d:=date();
t:=time();

 

 

输出是:

2013/05/07 17:16:48  d:1130507
2013/05/07 17:16:48  t:121500
2013/05/07 17:16:48  A:4998
2013/05/07 17:16:48  B:4998
2013/05/07 17:17:02  d:1130507
2013/05/07 17:17:02  t:121600
2013/05/07 17:17:02  A:4999
2013/05/07 17:17:02  B:4999
2013/05/07 17:17:45  d:1130507
2013/05/07 17:17:45  t:121700
2013/05/07 17:17:45  A:5000
2013/05/07 17:17:46  d:1130507
2013/05/07 17:17:46  t:121700
2013/05/07 17:17:46  A:5000
2013/05/07 17:18:00  d:1130507
2013/05/07 17:18:00  t:121700
2013/05/07 17:18:00  A:5000
2013/05/07 17:18:00  B:0
2013/05/07 17:19:00  d:1130507
2013/05/07 17:19:00  t:121800
2013/05/07 17:19:00  A:5001
2013/05/07 17:19:00  B:1
2013/05/07 17:20:00  d:1130507
2013/05/07 17:20:00  t:121900
2013/05/07 17:20:00  A:5002
2013/05/07 17:20:00  B:2
2013/05/07 17:21:00  d:1130507
2013/05/07 17:21:00  t:122000
2013/05/07 17:21:00  A:5003
2013/05/07 17:21:00  B:3
2013/05/07 17:22:02  d:1130507
2013/05/07 17:22:02  t:122100
2013/05/07 17:22:02  A:5004
2013/05/07 17:22:02  B:4
.......


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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 17:59:06 [显示全部帖子]

按我的代码,不管如何,A和B的输出都应该是预期一样的(他们都应该和barpos一致)。

但实际输出就有不同了。发现原因了:

GLOBALVARIABLE最好也保证每根K线都能执行到(尽管按理解他应该是刚加载的时候才有用的),GLOBALVARIABLE如果放在if then 或exit后面,有可能会被重新初始化。

 

我测了很久,不动他暂时没什么问题,但如果编辑下代码(仅加个空行),保存,有意思的是在exit前的GLOBALVARIABLE变量不会被重新初始化,而我代码exit后的GLOBALVARIABLE变量就会被初始化了。

 

也许exit导致GLOBALVARIABLE出现意外,不过应该提醒下,GLOBALVARIABLE最好放在最前面,确保每次调用程序都会执行到。


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


加好友 发短信
等级:黑侠 帖子:993 积分:1787 威望:0 精华:5 注册:2012/11/28 17:37:20
  发帖心情 Post By:2013/5/7 23:02:30 [显示全部帖子]

嗯,就是这个原因了,但有的变量不会,如我例子中的

 回到顶部