全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
onbarclose和onbar差一根k线
2022-03-18 23:54

OnBar(ArrayRef<Integer> indexs)   {    Commentary("bigk="+text(bigk));     }
                                                                                       
    OnBarClose(ArrayRef<Integer> indexs)
         {
                                            
               If((o-c)>(AvgTrueRange(5)*1.1) Or (o-c)/C>0.05)    
                  { 
                    bigk=-1  ;//大阴线
                       PlotString("bigk","B",l,Yellow);
                       }    
                      Else If ((c-o)>(AvgTrueRange(5)*1.1) Or (c-o)/C>0.05)
                     {
                         bigk=1;//大阳线
                         PlotString("bigk","B",l,Yellow);
                     }   Else
                        {
                            bigk=0;
                        }
            
              Commentary("bigk="+text(bigk));
              
         }        

这段代码,观察时可以看到,在onbar域里的 Commentary的bigk是大k线后的第二根才显示值,在onbarclose的就是正常的。理论上看历史k线应该一致才对吧。                                                          

kyover

先运行onbar,再运行onbarclose,按照这个顺序,你onbar里显示的bigk是上一根bar的onbarclose事件域运行的内容

2022-03-21 09:19
202****4175113102
@kyover

经过再测试,当我把bigk计算的代码,也在onbar域里运行的时候,显示也是正常。无论bigk是全局变量还是序列变量。但是onbarclose的计算,确实是在下一根k线才传到onbar里,而且如果bigk只是普通变量的话,是不能从onbarclose域传到onbar域

 

改写的方法很多,只不过我想弄明白这个机理而已,谢谢解惑。

2022-03-21 14:00
202****4175113102

我不是实盘运行,是回测发现。逻辑上,onbar应该是和onbarclose都是执行当根k线最后的收盘价、开盘价等计算的吧。难道是我的理解有问题??而且我试过把onbarclose摆在程序onbar的前面,结果一致。onbarclose是已当根k线计算。onbar域是上一根k线。

2022-03-21 12:12
您未登录,请先 登录注册 后发表评论
顶部