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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于超全局变量参与计算存在的问题

   

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


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

主题:关于超全局变量参与计算存在的问题

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


加好友 发短信
等级:论坛游侠 帖子:152 积分:0 威望:0 精华:0 注册:2015/3/2 13:11:05
关于超全局变量参与计算存在的问题  发帖心情 Post By:2019/3/29 22:17:17    Post IP:123.123.107.6[只看该作者]

为什么如下代码的超全局变量,输出一次就再也输出不了了?

 

难道超全局变量作为值放进去运算一下都不行吗?

 

 

GLOBALVARIABLE:STR_BBA='1';//本合约对锁价格
GLOBALVARIABLE:STR_BBB='1';//本合约对锁价格
GLOBALVARIABLE:STR_BBC='1';//本合约对锁价格
GLOBALVARIABLE:Init_G=0;//本合约对锁价格
VARIABLE:Is_init=0;//当前时间

    
   


IF Is_init=0 AND ISLASTBAR THEN BEGIN

  Is_init:=1;
    ttp:='A'&STR_BBA;

    STR_BBA:=ttp&'1234567890123456789012345678901';//本合约对锁价格
 STR_BBB:=ttp&'12345678901234567890123456789012345678901234567890123456789012341234567890123456789012345678901234567890123456789012345678901234123456789012345678901234567890';//本合约对锁价格
 STR_BBC:=ttp&'12345678901234567890123456789012345678901234567890';//本合约对锁价格
 
    
// STR_BBA:=STR_BBA&'A1234567890123456789012345678901';//本合约对锁价格
// STR_BBB:=STR_BBA&'12345678901234567890123456789012345678901234567890123456789012341234567890123456789012345678901234567890123456789012345678901234123456789012345678901234567890';//本合约对锁价格
// STR_BBC:=STR_BBA&'12345678901234567890123456789012345678901234567890';//本合约对锁价格

 
END

IF Is_init=1 AND Init_G<BARPOS THEN BEGIN
 Init_G:=BARPOS;
 
 MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',A:'&STR_BBA);
   MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',B:'&STR_BBB);
   MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',C:'&STR_BBC);

END

 

输出如下:

2019/03/29 22:14:11  序列:2238,A:A11234567890123456789012345678901
2019/03/29 22:14:11  序列:2238,B:A112345678901234567890123456789012345678901234567890123456789012341234567890123456789012345678901234567890123456789012345678901234123456789012345678901234567890
2019/03/29 22:14:11  序列:2238,C:A112345678901234567890123456789012345678901234567890

 


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/4/1 9:25:58    Post IP:180.169.30.6[只看该作者]

 Is_init=1 AND Init_G<BARPOS

这个条件有问题。你可以单独输出下。Init_G定义的类型决定了它始终会保持和BARPOS一致。因此每次都只在第一次初始化的时候才会输出一次。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
infocell
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:152 积分:0 威望:0 精华:0 注册:2015/3/2 13:11:05
  发帖心情 Post By:2019/4/1 21:55:00    Post IP:123.123.107.6[只看该作者]

为什么对超全局变量一赋值,就输出错误。

GLOBALVARIABLE:STR_BBA='1111';//本合约对锁价格
GLOBALVARIABLE:STR_BBB='1111';//本合约对锁价格
GLOBALVARIABLE:STR_BBC='1111';//本合约对锁价格
GLOBALVARIABLE:Init_G=0;//本合约对锁价格
VARIABLE:Is_init=0;//当前时间

VARIABLE:vs_BBA='';//本合约对锁价格
VARIABLE:vs_BBB='';//本合约对锁价格
VARIABLE:vs_BBC='';//本合约对锁价格
   


IF Is_init=0  THEN BEGIN

  Is_init:=1;
    ttp:='A';//&STR_BBA;
   
 IF valid(STRLEN(STR_BBA))=0  THEN MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',error:len is 0'&numtostr(STRLEN(STR_BBA),0));
 
    vs_BBA:=ttp&'1234567890123456789012345678901';//本合约对锁价格
 vs_BBB:=ttp&'12345678901234567890123456789012345678901234567890123456789012341234567890123456789012345678901234567890123456789012345678901234123456789012345678901234567890';//本合约对锁价格
 vs_BBC:=ttp&'12345678901234567890123456789012345678901234567890';//本合约对锁价格
 
   
// STR_BBA:=STR_BBA&'A1234567890123456789012345678901';//本合约对锁价格
// STR_BBB:=STR_BBA&'12345678901234567890123456789012345678901234567890123456789012341234567890123456789012345678901234567890123456789012345678901234123456789012345678901234567890';//本合约对锁价格
// STR_BBC:=STR_BBA&'12345678901234567890123456789012345678901234567890';//本合约对锁价格

 
END

IF Is_init=1  THEN BEGIN// AND Init_G<BARPOS
 Init_G:=BARPOS;
 
 MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',A:'&STR_BBA);
   MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',B:'&STR_BBB);
   MSGOUT(1,'序列:'&NUMTOSTR(BARPOS,0)&',C:'&STR_BBC);

END


IF BARPOS>10 AND ISLASTBAR  THEN BEGIN// AND Init_G<BARPOS
 //Init_G:=BARPOS;
 
 STR_BBA:=vs_BBA&'123A';//本合约对锁价格
 STR_BBB:=vs_BBB&'123B';//本合约对锁价格
 STR_BBC:=vs_BBC&'123C';//本合约对锁价格

END

 

输出:

 

2019/04/01 21:52:36  序列:815,A:1111
2019/04/01 21:52:37  序列:815,B:1111
2019/04/01 21:52:37  序列:815,C:1111
2019/04/01 21:52:38  序列:815,A:1111
2019/04/01 21:52:38  序列:815,B:1111
2019/04/01 21:52:38  序列:815,C:1111
2019/04/01 21:52:43  序列:816,A:1111
2019/04/01 21:52:44  序列:816,B:1111
2019/04/01 21:52:44  序列:816,C:1111
2019/04/01 21:52:45  序列:816,error:len is 0-1
2019/04/01 21:52:51  序列:818,error:len is 0-1
2019/04/01 21:52:51  序列:818,C:序列:807,C:
2019/04/01 21:53:06  序列:820,error:len is 0-1
2019/04/01 21:53:12  序列:822,error:len is 0-1
2019/04/01 21:53:13  序列:822,C:序列:811,C:
2019/04/01 21:53:29  序列:825,error:len is 0-1
2019/04/01 21:53:34  序列:826,error:len is 0-1
2019/04/01 21:53:35  序列:826,C:序列:822,C:
2019/04/01 21:53:49  序列:829,error:len is 0-1
2019/04/01 21:53:56  序列:830,error:len is 0-1
2019/04/01 21:53:57  序列:830,C:序列:826,C:
2019/04/01 21:54:12  序列:833,error:len is 0-1
2019/04/01 21:54:17  序列:833,error:len is 0-1
2019/04/01 21:54:27  序列:834,error:len is 0-1
2019/04/01 21:54:28  序列:834,C:序列:830,C:

 


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/4/2 9:18:54    Post IP:180.169.30.6[只看该作者]

这个赋值有问题。
STR_BBC:=vs_BBC&'123C';//本合约对锁价格
vs_BBC本身是个VARIABLE全局变量。 如果是一个普通变量或者固定值是可以的。

你上面的输出那个我只在没有行情时候加载指标出现了,盘中实时刷新的时候倒是没看见有。建议不要在图表上使用GLOBALVARIABLE全局变量。




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
infocell
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:152 积分:0 威望:0 精华:0 注册:2015/3/2 13:11:05
  发帖心情 Post By:2019/4/6 7:43:48    Post IP:114.253.33.11[只看该作者]

这个赋值有问题。
STR_BBC:=vs_BBC&'123C';//本合约对锁价格
vs_BBC本身是个VARIABLE全局变量。 如果是一个普通变量或者固定值是可以的。
 
很不理解为什么不行????????
 
每次初始化,都在这里进行了赋值,超全局变量为什么就一个简单的赋值会出错,号称可以在整个运行期间保存,结果走一根K线就异常。
会不会是金字塔自身有bug呢?
 
vs_BBA:=ttp&'1234567890123456789012345678901';//本合约对锁价格

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/4/8 9:50:56    Post IP:180.169.30.6[只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
看下这个勾选勾了没有。你上面这个代码我原封不动的测试,除非把这个勾选去掉了,否则一直都是正常输出的。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
infocell
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:152 积分:0 威望:0 精华:0 注册:2015/3/2 13:11:05
  发帖心情 Post By:2019/4/13 21:11:01    Post IP:114.246.90.31[只看该作者]

我查了,所有测试在图表下测试的时候,都是选逐K线计算,且仅刷最后一根K线是勾选的。

 

你的输出正常,可否把输出贴一下?


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


加好友 发短信
等级:论坛游侠 帖子:152 积分:0 威望:0 精华:0 注册:2015/3/2 13:11:05
  发帖心情 Post By:2019/4/13 21:16:27    Post IP:114.246.90.31[只看该作者]

其实我是希望把一个变量运算结果在最后一根k线保存,在以后每次初始化的时候,这个变量能保护最后运算的结果,这个应当就是超全局变量的用途,但现在看一两个循环后,这个超全局变量就凭空消失了,非常奇怪。

 

公式在图表下运行,都是选逐K线计算,且仅刷最后一根K线是勾选的。


 回到顶部