关于BarStatus函数 (文华财经wh9)

投资者咨询:关于BarStatus函数 (文华财经wh9)
来源:文华财经  日期:2018-5-15 20:10
我在mq中使用BarStatus函数的时候发现了一个不能理解的问题,

我想在每根k线下显示当根k的收盘价,

代码如下:

Begin
if( BarStatus == 2 )
{
For i = 0 To CurrentBar
{
PlotString("i",text(ref(Close,currentbar-i)),low,white,currentbar-i);
}

}
End

结果只有最后一根k线显示

于是我改为

For i = 0 To CurrentBar
{
PlotString("i",text(ref(Close,currentbar-i)),low,white,currentbar-i);
}

这样可以在每根k线显示

但是问题来了,如果不加BarStatus == 2,是不是在计算过程中,历史每根k都要从0到currentbar计算一遍,重复计算
加了BarStatus == 2,意味着只在最新一根k线从0到currentbar计算一遍,但实际上这样并不能显示出来,只能显示出最后一根上有文字

望解答,谢谢!

技术人员回复
日期:2018-5-15 20:31
 BarStatus == 2  等价于 WH8的ISLASTBAR ,只有最新k线才是满足的 

历史k线不是第一根都返回1的

您问题和如何计算没关系,只是函数本身机制造成的


投资者咨询:关于BarStatus函数 (文华财经wh9)
来源:文华财经  日期:2018-5-15 20:10
 PlotString("i",text(ref(Close,currentbar-i)),low,white,currentbar-i);
这句话是在currentbar-i这个k线上写东西,我就是想只在最新k线上才开始计算,并在历史k线上画东西,这应该不矛盾。
但事实上历史k线显示不出来画的东西
技术人员回复
日期:2018-5-15 21:29
明日核实后给您回复
投资者咨询:关于BarStatus函数 (文华财经wh9)
来源:文华财经  日期:2018-5-15 20:10
 谢谢图片点击可在新窗口打开查看
技术人员回复
日期:2018-5-16 14:43
经分析,是您写法复杂了,不太了解我们的函数计算机制PlotString 就是基于最新k线计算的

您结果如下编写即可,没必要用FOR语句的

VARS
Numeric i;
Begin
                    PlotString("i",text(Close),low,white,0);
End

另外您可以具体说下您的需要,我们具体分析下
投资者咨询:关于BarStatus函数 (文华财经wh9)
来源:文华财经  日期:2018-5-15 20:10
嗯,您的回答我是明白的

我的意思是我只想在BarStatus == 2的情况下才进行代码执行,也就是最后一根k上才执行,原因在于如果从头每根k线都算,会影响效率,因为我的执行代码有点复杂

所以我的前提是if(BarStatus == 2),才执行以下代码

但是在具体执行的时候发现,我想用for循环,把计算好的东西plot显示在历史的k线上,只能显示最后一次一个值。

Begin
if( BarStatus == 2 )
{
For i = 0 To CurrentBar
{
PlotString("i",text(ref(Close,currentbar-i)),low,white,currentbar-i);
}
}
End

如上述代码,大前提是在if(BarStatus == 2)的情况下计算,但是结果只得到了一根k上有字,而不是每根k线都有其对应的值。

我用变量检查过循环,的确循环了CurrentBar+1次,我也试过把循环改成简单的PlotString("i",text(1),low,white,5),可以输出到往前数第五根k上

但是当我想依次每根输出的时候就不行了。

实在想不通问题出在哪里,谢谢!

技术人员回复
日期:2018-5-16 20:37
MQ是代码是编译计算的,计算速度很快的,您不用担心,计算量过多的问题

您思路每根k线都计算就好了

vars
    Numeric i;
Begin
if( BarStatus == 1 )
{
For i = 0 To CurrentBar
                            {
                            PlotString("i",text(ref(Close,currentbar-i)),low,white,currentbar-i);
                            } 
}
End 

  还有问题您具体说下完整思路,给您直接编制以下