以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  GLOBALVARIABLE函数的问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=174449)

--  作者:百湛必胜客
--  发布时间:2020/2/20 16:04:06
--  GLOBALVARIABLE函数的问题
金字塔升级升出不少原本没有的毛病
以下内容为程序代码:

GLOBALVARIABLE:ohe=0,QIANYUE=\'初始字符\';

if ISLASTBAR then 
 begin
  G0:STRLEN(QIANYUE),linethick0; 
    if ohe=0 then 
      begin
     ohe:=1;
     老主力合约:=\'IH05\'; 
         QIANYUE:=\'老主力合约:\'&老主力合约; 
      end;
      
  G1:STRLEN(QIANYUE),linethick0; 
 end;
DRAWTEXTEX(ISLASTBAR,1,100,100,QIANYUE),COLORYELLOW; 
这个代码存成逐K模式的交易系统,在任何一个品种下加载到主图,刚加载,能正常显示,再来一笔新的TICK数据,就完全消失所有显示项目了

--  作者:百湛必胜客
--  发布时间:2020/2/20 16:22:27
--  
现在是休盘时间了,可以用“Alt+ 1或2或3”切换画面组合的办法去测试(等同于动态行情刷新)
--  作者:wenarm
--  发布时间:2020/2/20 16:25:08
--  

没办法,GLOBALVARIABLE函数不是你这么用的。GLOBALVARIABLE初始化的时机根本不符合图表的机制。

你之前好像问过类似的问题。建议你用ext的全局变量。

 


--  作者:百湛必胜客
--  发布时间:2020/2/20 16:48:41
--  
上次问那个是换品种或者换了周期,再换回来的问题,跟这个不同,这个是不换品种,也不换周期,全部没变的情况下,只是公式的第二次跟随动态行情动态刷新,怎么该显示的项目全部消失了呢?
超全局变量的功能和意义不就是为了保存一些需要需要保存的数据,供后面读取调用的吗?
[此贴子已经被作者于2020/2/20 16:49:30编辑过]

--  作者:wenarm
--  发布时间:2020/2/20 16:52:39
--  

这个全局变量设计的初衷是给后台用的。不是让他用在图表上的。

解决方法也已经提供给您了,使用ext全局变量处理,或者你使用注册表、配置文件的方式也可以。

[此贴子已经被作者于2020/2/20 16:54:40编辑过]

--  作者:百湛必胜客
--  发布时间:2020/2/20 16:52:58
--  

//    if ohe=0 then 
//      begin
//      ohe:=1;
//      老主力合约:=\'IH05\'; 
//         QIANYUE:=\'老主力合约:\'&老主力合约; 
//      end;
如果把这部分代码注释掉,就不管怎么刷新,都能显示那些项目,注释掉的这段代码难道还起到销毁变量的作用?那也不对啊,能解释一下其中原因?
感觉就是升级出来的BUG
[此贴子已经被作者于2020/2/20 16:53:46编辑过]

--  作者:wenarm
--  发布时间:2020/2/20 16:55:46
--  
超全局变量一般会在客户停止后台程式化交易或者关闭框架图表后销毁重置

 

另外你注释掉的代码之后,剩余的输出, QIANYUE就是个固定字符串。怎么折腾当然都不会变,

[此贴子已经被作者于2020/2/20 16:58:03编辑过]

--  作者:无为剑
--  发布时间:2020/2/20 17:26:24
--  
这个是跟升级没关系的,只是超全局变量的缺陷造成的,你就是用旧版也同样会存在这个问题。
出现这个问题的主要原因是超全局变量的字符串是不能更改的,更改后的字符串地址系统没法正常去保护,容易被清理掉,建议你的这种需求使用用ext的全局变量来代替字符串的变量。