为什么如下代码的超全局变量,输出一次就再也输出不了了?
难道超全局变量作为值放进去运算一下都不行吗?
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
为什么对超全局变量一赋值,就输出错误。
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:
我查了,所有测试在图表下测试的时候,都是选逐K线计算,且仅刷最后一根K线是勾选的。
你的输出正常,可否把输出贴一下?
其实我是希望把一个变量运算结果在最后一根k线保存,在以后每次初始化的时候,这个变量能保护最后运算的结果,这个应当就是超全局变量的用途,但现在看一两个循环后,这个超全局变量就凭空消失了,非常奇怪。
公式在图表下运行,都是选逐K线计算,且仅刷最后一根K线是勾选的。