以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]GLOBALVARIABLE的全局变量不是最新的数值嘛  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=50605)

--  作者:readonly
--  发布时间:2013/4/3 10:46:07
--  [求助]GLOBALVARIABLE的全局变量不是最新的数值嘛
我想实现每周期只允许输出一次信息,搜了下论坛,admin老大说用GLOBALVARIABLE。

按照他给的例子改的:

GLOBALVARIABLE: 过滤=0;

if 过滤<barpos then begin
MSGOUT(1,\'看看\');
过滤:=barpos;
end


可是输出结果还是每周期不止一个:
2013/04/03 10:33:11  看看
2013/04/03 10:33:12  看看
2013/04/03 10:33:13  看看
2013/04/03 10:33:14  看看
2013/04/03 10:33:15  看看
2013/04/03 10:33:16  看看


问题查到:勾选了“仅刷新最后一根k线”,过滤就会失效。

有没有解决办法?


--  作者:admin
--  发布时间:2013/4/3 10:49:37
--  
if islastbar then
--  作者:readonly
--  发布时间:2013/4/3 11:08:45
--  
改成这样,还是不行

if 过滤<barpos && islastbar then begin
MSGOUT(1,\'看看\');
过滤:=barpos;
end


看来要用GLOBALVARIABLE就不能勾选“仅刷新最后一根k线”了吧?

--  作者:klc
--  发布时间:2013/4/28 9:46:04
--  
是的,我始终找不到化解的办法
--  作者:klc
--  发布时间:2013/5/2 19:37:37
--  

readonly,我知道原因,其实也合理,变量在一个周期只保留一个值,中间的状态不保留。勾选了之后,在周期内的值不保留,等到走完K线时就保留了。

所以我现在编的程序,遵照金字塔的习惯,全部都是走完K线的,并且索性最后K线不做任何计算了(直接islastbar就exit),也不输出,反正不影响出信号,因为等他走完了(下根K线出来那瞬间),变成历史K线了,就出信号了

 

这样效率还高

[此贴子已经被作者于2013-5-2 19:37:51编辑过]