我想控制轮询中某些语句的执行次数,试验中碰到条件语句在轮询中不起作用的奇怪现象。公式如下:
variable:exe=0;
tb:todaybar,nodraw,colorwhite;
aa:=numtostr(tb,0);
if islastbar and exe=0 then
begin
msgout(1,aa);
exe:=1;
end;
check_exe:exe,nodraw,colorwhite;
设计意图是msgout只执行一次,下一次就不再执行了,但实际执行结果是回测正常,但实盘就不对,msgout不断执行。详见附件截图。请问msgout语句在轮询中为何会反复执行?
此主题相关图片如下:未命名图片1.png

此主题相关图片如下:未命名图片2.png

我猜i是islastbar吧。我明白你意思,判断语句在赋值语句之前,那时exe值还是0,因此条件判断通过。但我不理解的也是这里,exe已被声明为全局变量,轮询第一次的时候exe应该已被赋值为1,那么第二次轮询的时候exe值为什么又变回0呢?
看我2楼的代码
variable的全局变量是不会在当根k里面累加,如果你能理解a和b在盘中不断计算后的输出结果,应该就能知道这个函数的全局的概念了
或者看下http://www.weistock.com/WeisoftHelp/zbgs003.htm
[此贴子已经被作者于2016-5-12 17:26:58编辑过]
嗯,现在明白了,换成globalvariable使刷新不会重置exe值就可以了。谢谢。