不持久化的基础数据能保留多久?

关联帖子: https://bbs.tbquant.net/thread/20250123231744525985 之前看论坛里相关的帖子里老师的回复,以为不持久化的基础数据要等到软件重新启动才会清除,自己动手试了一下,有点迷惑代码说明:写了两个策略公式,分别运行在两个图表上,一个负责更新基础数据变量,一个负责读取基础变量值负责更新基础数据变量的公式每隔2秒更新一次,一共更新5次,然后调用Stop函数,代码如下:Vars Dic<Array<Numeric>> myDic("My_Test_Dic", False, "mytarget2"); Global Array<Numeric> arr; Global Integer counter(0); Defs Events OnInit() { PrintClear(); } OnReady() { CreateTimer(2 * 1000, 0, 5); } OnTimer(Integer Id, Integer millSecs) { counter = counter + 1; ArrayPushBack(arr, counter); myDic = arr; Print("#" + Text(counter) + " -> " + TextArray(myDic)); If(counter == 5) { Print("Begin Stop"); Stop(); Print("EndStop"); } } 负责读取基础数据变量的公式每隔2秒读取一次,一共读取10次,代码如下:Vars Dic<Array<Numeric>> myDic("My_Test_Dic", False, "mytarget2"); Global Integer counter(0); Defs Events OnInit() { PrintClear(); } OnReady() { CreateTimer(2 * 1000, 0, 10); } OnTimer(Integer Id, Integer millSecs) { counter = counter + 1; Print("#" + Text(counter) + " -> " + TextArray(myDic)); } 观察到的现象:#1 先启动基础数据更新公式,一段时间后再启动数据读取公式,发现即使更新公式停止了,读取公式依然可以正常读取#2 先启动更新公式,一段时间后再启动读取公式,然后刷新更新公式,发现读取公式显示的数据与更新公式变化一致#3 先启动更新公式,再启动读取公式,如#1待更新公式运行完,再刷新读取公式,此时读取数据均为空(看截图)我的问题是:#A. 同样是更新公式停止,为什么在#1中依然可以读取基础变量,而在#3中就没有了?#B. 公式中定义的非持久化基础变量什么时候才会被清除?

应该是写入的公式停止运行就会清除了建议做交互处理的都持久化,否则无法溯源

回复:好的,谢谢老师。 我注意到持久化应该是保存到本地的sqlite数据库,会有性能问题,另外在别的帖子里看到如果用了持久化数据分发会是异步的,考虑到一些数据只是为了跨公式共享,能不持久化就不用持久化了。关联帖子: https://bbs.tbquant.net/thread/20250124112334529398

回复:这种情况依旧建议持久化。否则如果遇到意外情况无法溯源