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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件新手乐园 → 金字塔中有关全局变量数据库函数 EXTGBDATA;EXTGBDATASET等函数的使用说明及注意事项

   

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


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

主题:金字塔中有关全局变量数据库函数 EXTGBDATA;EXTGBDATASET等函数的使用说明及注意事项

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
金字塔中有关全局变量数据库函数 EXTGBDATA;EXTGBDATASET等函数的使用说明及注意事项  发帖心情 Post By:2013/2/12 19:41:47 [只看该作者]

在我们日常编程中,不可避免的需要记录一些我们程序中的一些变量,一些变量所需要保存的时间较长,我们对这类需要对整个策略均有效的这类变量称之为“全局变量”,金字塔中,全局变量主要有2种表现方式。

 

1、使用 VARIABLE 及 GLOBALVARIABLE 声明的全局变量。

    使用该方式的全局变量的最大优势在于,策略之间的变量相互独立工作,不会相互干扰,但是当用户关闭软件或者关闭图表上执行的策略后,变量自行消失不会进行保存。

 

2、使用EXTGBDATA;EXTGBDATASET等数据库方式的全局变量。

    使用该方式的全局变量可以在策略执行后将数据保存在内部数据库中,即便软件关闭后也能保存用来下次启动后调用。这种全局变量的作用范围是整个金字塔软件本身,即策略A所保存的变量内容也可以被策略B所读取到。这样的运行机制为实现不同策略之间的协同工作和通过外部参数控制公式运行提供了可能,但是如果使用不当,也容易出现问题,最常见的问题就是不同的策略之间由于共同全局变量名而导致的冲突,目前我们发现大部分金字塔用户在使用全局变量数据库时主要出现的问题如下:

   a)用户在后台程序化运行时,为了监控方便,又在图表上打开同一个公式,由于公式中共用了一个全局变量数据名,而导致2个策略在运行时相互干扰,造成无法正常工作。

   b)用户由于不清楚全局变量数据库的运行机理,在图表上运行的多个策略中使用同一个全局变量名而导致策略运行紊乱。

   c)在使用含有全局变量数据库的公式使用多核优化。

 

   使用建议:综上所述,其实全局变量数据库相比GLOBALVARIABLE 超全局变量,只是多了个保存记忆功能,这不是所有策略所必须的,为了策略的编写安全用户应该尽可能的使用GLOBALVARIABLE 来代替全局变量数据库来防止策略中出现冲突和干扰的问题。

 

   从2.972版升级以后如果用户的公式代码中含有 EXTGBDATA;EXTGBDATASET 代码,金字塔会给予提示,如果用户不想看到此提醒,在公式的最前面加入如下编译控制符即可:

   WARNING_DISABLE:4;



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

金字塔-技术部

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

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

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


加好友 发短信
等级:小飞侠 帖子:1609 积分:4924 威望:0 精华:0 注册:2010/10/28 14:02:46
  发帖心情 Post By:2013/3/14 13:28:36 [只看该作者]

谢谢提醒


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


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

VARIABLE是每次计算(不是每个K线)都会被重新初始化

GLOBALVARIABLE不管公式被计算多少次只要不重新加载都不会被初始化。

 

但本人感觉GLOBALVARIABLE有个bug,就是勾选了“仅刷最后一根K线”时,每次有行情数据进来时,就被初始化了


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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/4/15 16:11:16 [只看该作者]

本地跟踪,没发现被初始化.

不知道楼上代码是怎么写的.



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

客户服务部

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

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

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

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


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

fly,是会的,你测试下:

 

GLOBALVARIABLE:a=0;
VARIABLE:b=0;

if islastbar then

begin

  a:=a+1;

  b:=b+1;

  msgout(1,'a=' & numtostr(a,0) & ' b=' & numtostr(b,0));

end;

 

逐K模式下,你勾选和不勾选“仅刷最后一根K线”时,结果应该不同


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


加好友 发短信
等级:论坛游侠 帖子:416 积分:139 威望:0 精华:0 注册:2013/2/5 20:33:58
  发帖心情 Post By:2013/6/27 10:06:55 [只看该作者]

我是新手,对这个全局变量一直模糊,不理解其中的含义,请老师指点,为什么要搞个全局变量?它有什么作用?

 回到顶部