学习 数据源策略函数 时做了一些测试,注意到:
我的问题是:
#1: 如果策略执行被打断,是否只能通过A函数查询历史数据来获得数据源策略函数提供的那些信息,比如BarsSinceEntry(获得当前持仓的第一个建仓位置到当前位置的Bar计数)?
#2 数据源策略函数除了依赖Buy/Sell、需要持续运行,使用时还有什么需要注意的?
数据源策略函数文档地址:https://tbq3.tbquant.net/helper?product_id=999&keyword=1122&content_id=76&selectedkey=1146&type=article
所谓的数据源策略函数本身获取的是图表上虚拟账户的数据
1如果样本没变,策略代码没变,那么无论执行多少遍,执行轨迹是一样的。比如barssinceentry,永远是不会变的。
2我觉得你对这些函数的认知有点偏了。依赖buy/sell是因为执行完buy信号命令后,图表的虚拟账户就会有相应的仓位变动,从而导致后面的各种策略数据出现。还有什么要注意的这个问题过于抽象和宽泛了,有点难回答。
谢谢老师回复,我感觉这些函数是跟图表上虚拟账户的数据有关,我理解的是这些虚拟账户应该是持久化的,如果策略重新运行,应该还能读到以往的数据。就好像用A函数下单,仓位变化等会一致保留在账户里,几天后再来看变化还在。不知道这样理解有哪些不准确的?
我打个比方吧。
往k线上加载公式运行出信号,就好比让你计算100道算术题
如果第一道算数题算出来答案是10,那么无论你后来算几遍,第一道题答案永远是10,这个答案不会因为你后来多算几遍而发生改动。
同样的,k线上执行策略得出信号,第一次加载发现其中第n根bar上有信号,无论卸载策略重新加载运行多少次,第n根bar上的信号永远是在的。
这并不是持久化,这只是因为运行路径是一样的,1+1永远等于2,算几次也是等于2.