以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  看输出结果不懂轮询怎么进行的  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=97377)

--  作者:a141027
--  发布时间:2016/5/13 11:23:39
--  看输出结果不懂轮询怎么进行的
以下公式很简单,结果我就不贴图了,请技术人员看本地结果更好。

globalvariable:aa=0;

aa:=aa+2;
msgout(1,numtostr(aa,0));

三个问题:

1. 为什么执行msgout输出的频率远远高于aa计算语句?换句话说,为什么它们不是同步执行?

2. 这个不是主要问题,我没有添加allowrepeat为什么msgout在轮询中也可以不断重复执行?

3. 如果把上面两句放进islastbar判断里面,两者的执行频率就一致了,为什么?

谢谢。

--  作者:pyd
--  发布时间:2016/5/13 13:10:54
--  

你的公式在盘中会刷新不??那么如果刷新的话会不会输出呢??

你输出一个

a:close

看下这个a取值变不变呢?

 

逐k是从头刷新到尾,放在islastbar里面就只会在最后一根k里计算了。

主要要学会看函数说明

globalvariable里面有说到的是只在最新一根k里才会计算
 

--  作者:a141027
--  发布时间:2016/5/13 13:27:12
--  
公式会刷新,输出结果类似下面这个样(应该跟你本地是差不多的)

2
2
2
...
4
4
...
6
...

看这样的输出结果,每一行输出似乎可以看成是公式进行了一次轮询,msgout执行了一遍,为什么aa不是每次都参与计算?

--  作者:a141027
--  发布时间:2016/5/13 13:30:47
--  
是不是因为逐k是全部都扫描一遍,而globalvariable没有历史数据,所以aa值没有变化?如果只刷新最后一根k线是不是就不会出现上述问题?
--  作者:a141027
--  发布时间:2016/5/13 13:31:52
--  
果然是这样,已经清楚了,谢谢。