TBQ的信号问题
2022-07-15 16:37

我用TBPY写人TBQ中的基础数据库中(参考读写数据的应用案例.pdf (tbquant.net) 这个案例来写入的)。

 

公式中的最直接开仓条件为:


If((MarketPosition==1 or (MarketPosition==0 and lastpos==1)) and pre[1]>= 0 and pre[1]<2)         SellShort(Lots,open);


这里的 pre  就是我在TBQ中引入的基础数据库的数据,如果在TBPY没有写入这个数的时候,貌似默认的值为一个无穷大的数。

经过数据中心检查,pre[1] 的值是-1.

主要问题:

公式是加载在4小时周期上面,

在今日下午14点40分的时候,出现了交易信号。。。但是图表中没有对应的信号,经过检查发现根据数据也不应该出现信号。

如果问题是信号闪烁,但是这个数据中心显示的pre[1]的值,在14点的4小时bar上面应该为-1的,不满足开仓条件啊,不管公式其他条件有无存在可能造成信号闪烁,但是直接开仓条件中用了and ,这个pre【1】就不会闪烁了吧。并且这个pre[1]不满足条件,不应该开仓的。

 

所以请教这个是什么问题呢??是TBQ读取基础数据库出现问题??还是说其他问题???谢谢。

 

 

 

 

评论区
Alex_dachen

经过多次检测,观察。发现一个问题。不知道算不算bug。TBPY写入的基础数据库在没有写入最新的时间之前,基础数据库是不会默认初始化的,只会继续沿用基础数据库现有的数据。

比如这里的pre值,就是说pre[1]的时间不一定是上一个bar的时间,可能是更加久远的时间戳的值。pre[0]也不一定是最新时间戳的值。

 

但是如果在有最新的bar的时间戳的值的时候,这个pre[1]才是对应上一个bar的时间。

2022-07-22 13:50
顶部