确认一个事情,官方文档中SubscribeTick的这句话可能有歧义

RT官方文档 https://tbq.tbquant.net/helper?product_id=999&keyword=1122&content_id=1074&type=article#subscribetick-%E8%AE%A2%E9%98%85tick%E8%A1%8C%E6%83%85 中有这么一句"订阅tick行情,……,可以通过GetTick获取行情快照。该函数可用来获取非当前数据源的最新行情快照,若不订阅,获取的是过期行情。"正是因为这一句话,让我不敢单独使用GetTick了,因为怕获取的是过期行情。但为了性能,又确实不想多余订阅。所以想找官方确认一下:在没有SubScribeTick的前提下,单独用GetTick,能够确保获取到的是最新行情么?

你对你当前的品种获取就是最新的。。除非你获取别的品种

回复:Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { SubscribeTick("rb2505.SHFE"); SubscribeTick("rb2504.SHFE"); SubscribeTick("rb2506.SHFE"); } OnTick(TickRef evtTick) { print("evtt="+(evtTick.symbol)); print("ttt="+text(evtTick.dateTime)); print("---------------------------"); } //------------------------------------------------------------------------ // 编译版本 2025/3/6 151627 // 版权所有 wangkaiming // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer策略修改和重写的权利 //------------------------------------------------------------------------简单一试就知道了哦

我想强调一下,不管你用没用subcribetick函数,你都是可以用gettick来获取 当前图层合约的最新数据的。用subscribetick解决的需求是想获取非图层合约的tick数据,

我解释一下,不知道能不能看明白首先,在没有任何订阅的情况下,盘中onbar是tick驱动的,你gettick写在onbar里,是可以获取当前图层合约的最新tick的。但是有些用户说,那我如果我想获取其他合约的数据怎么办呢?那就只能用subcribebar来添加图层数据,然后获取。用户又说了,我需要的合约数据很多啊,全都加载太多了,而且我不需要历史数据,我只要最新的tick数据,加载历史数据很浪费啊。过去,碰到这个问题就没办法解决了,因为不订阅合约就获取不到合约数据。为了解决这个问题,工程师就推出了subscribetick这个函数。这个函数也是订阅数据,但是不订阅历史数据。有了这个函数,使用gettick函数,里面就可以填写已订阅的合约数据来获取最新的tick数据了。

回复:原来如此!谢谢!懂了50%。还有50%的疑问——如果我不新增图层,可以在0图层的情况下,先在OnInit中subscribetick、再在哪里调用getTick么?举例:无图表交易、0图层。假设要在6个品种上作交易,于是OnInit中subscribetick了这6个品种,嗯,现在还剩下一个关键问题,因为是0图层(除了creatTimer并Ontimer之外),有什么办法(或者事件域)可以用来触发GetTick么?Onbar与onbaropen我试了好像没反应?ontick可以么?(顺便官方文档中貌似没有ontick的介绍网页)

回复:没有图层就没办法驱动事件域,就没有接下来的gettick操作了