各位老师好,最近刚刚接触TB,用到了跨周期的处理,大周期判断趋势,小周期生成信号。但是在回测时发现大周期的趋势信号容易引入未来数据,导致回测与实盘出现较大的Gap。
以均线举例:
大周期日线级别的均线 假如 2024-05-27,在回测阶段是以2024-05-27完整的日线Bar收盘价计算均线;但实盘时只能以未收完的bar收盘价计算均线(比如:2024-05-27 9:05 的横截面日线 Bar)。
小周期假如 2024-05-27 9:05 的5分钟bar 在回测阶段会直接引用到以2024-05-27完整的日线Bar收盘价计算出来的大周期均线;而实盘阶段是引用的以横截面日线 Bar计算出来的均线。
像上面这种情况,在回测阶段将会导致小周期一直引用了当天完整Bar的大周期数据,进而会引入未来数据。
请问各位老师有没有合适的处理办法,能够缩小前面这种回测与实盘的Gap?
SetBasePeriod注意是tbq3下
SetBasePeriod貌似一直都有
TBQ3做了更新了?
TBQ没有,编译会报错。
智大领峰 和 TBQ3 有。
TBQ回测的时候读取大周期的Bar数据会用到未来数据的,TBQ3已经升级了跨周期的机制,升级后在回测与实盘保持一致,读取大周期的时候,都是以小周期的颗粒度对大周期进行截面处理,就不会出现未来数据的问题。
如果大周期不是小周期的整数倍,可以在OnInit()中调用SetBasePeriod来设置大周期以什么样的小周期颗粒度,进行截面保存大周期的Bar数据,语法:
Data[大周期图层号].SetBasePeriod(\"5m\"); //5m刚好与本需求一致,即1日线的大周期以5分钟颗粒度截面处理
https://tbquant.net/helper?navigate=tbfn&cid=3107
https://tbquant.net/helper?navigate=tbl&cid=3137
SetBasePeriod除了解决会读取大周期的未来数据的问题,还可以作为回放功能快速检查某些信号闪烁问题:
https://www.tbquant.net/TrainDetail?id=516
视频拉到11:20处播放
标准答案
谢谢,换TBQ3试了下是可以的
之前都是自己订阅多图层
用序列变量GET切片值、计算各种状态值
类似这类的更新
新版发布的时候在哪里查阅哩?
老师您好,麻烦再咨询您个功能使用问题:
TBQ3的策略研究工作区因为没有像TBQ那样上方有一排功能按钮,一直没找到怎么在已创建的策略单元中改变数据源的周期时间。 每次想变化数据源周期或者数据源的回测区间时都是删除数据源重新添加的,或者新建策略单元重新导入的,请问有没有便捷的办法能在已有策略单元中编辑数据源的周期、窗口等信息呀?
TBQ3的界面与TBQ的确有很多不一样的地方,但是修改数据源周期的功能界面是一样的:以下是TBQ3的2个UI操作方法:
【策略研究】:
【K线图表】
什么更新?帮助中心里有部分tbquant3的新功能说明