全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
交易时段在最后一根bar上OnBar触发的BarStatus取值为1是什么原因?
cidens 分享到
2021-12-17 15:03

【问题描述】

在交易时段,最后一根 bar 上,OnBar 中,用 BarStatus==2 进行判断,然后下单,发现实盘中会有信号闪烁的情况。

经跟踪排查,发现 OnBar 中 BarStatus 会不定时出现值为 1 的情况,似乎加载的公式越多,代码逻辑越复杂,出现频率越高。

问在线客服,客服说我对 BarStatus 理解有误,不能这么写,让我到论坛询问。

那么问题来了,请问: BarStatus==2 是否能作为实盘交易判断条件?

 

【测试方式】

交易时,当 BarStatus 值不为 2 时,控制台输出当前 bar索引,时间和 BarStatus 值。

测试代码如下:


    OnBar(ArrayRef<Integer> indexs)
    {
        If(BarStatus!=2)
            Print(Text(CurrentBar)+","+TimeToString(CurrentTime,True)+",BarStatus="+text(BarStatus));
    }


【测试截图】

图中已清除加载历史数据时值为1的输出。

如图控制台输出,10s 一根bar,在 14:20:22 和 14:24:22 秒各出现值为1的情况,之后直到收盘值都为2。

kyover

盘中的每根bar都是由实时到历史转变过来的,所以barstatus都会经历从2变成1的过程

你如果用的是buysell的命令,那么bar是盘中状态,会出现信号,一旦新bar出现这根老bar变成历史bar,条件不就不满足了么

2021-12-17 16:40
bert718

旗舰版是@kyover描述的那样,tbquant已经不在每个bar从2变成1了,但tbquant还有一个问题,如果有2个tick同时到,分别属于2个bar,上个bar会出现1,不过,这个问题会在下个版本完善,不会出现1了。
现在解决你的问题,可以换个函数QuoteStatus表示是不是实时行情触发的。参考文档http://www.tbquant.net/dist/index.html#/?navigate=&cid=1949&position=0

2021-12-17 16:55
cidens
@bert718

谢谢你的回答,这个回答很专业。

感觉 TB 不适合编程小白,很容易被过时的文档和不专业的客服带坑里去。

2021-12-17 17:08
您未登录,请先 登录注册 后发表评论
顶部