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


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

   

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


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

主题: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?


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2013/5/7 16:27:46 [只看该作者]

if date()<d or ISLASTBAR then exit;

 

这句放最后看看

 

 



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
klc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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,但今高和今低就会了


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/5/7 16:56:10 [只看该作者]

代码里加入DEBUGFILE调试日志后看看运行记录情况


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

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


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

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

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
klc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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最好放在最前面,确保每次调用程序都会执行到。


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2013/5/7 20:58:48 [只看该作者]

如果你把正在运行的公式重新编辑保存,会导致重新初始化的

 回到顶部
总数 11 1 2 下一页