1)策略中的variables变量会在停止策略时写入策略数据文件:cta_strategy_data.json 中
2)每次初始策略会先加载数据然后用cta_strategy_data.json文件的内容重置策略变量,代码如下:
self.write_log(f"{strategy_name}开始执行初始化")
# Call on_init function of strategy
self.call_strategy_func(strategy, strategy.on_init)
# Restore strategy data(variables)
data = self.strategy_data.get(strategy_name, None)
if data:
for name in strategy.variables:
value = data.get(name, None)
if value:
setattr(strategy, name, value)
3)假设策略用到的交易高点被记录到变量中 variables = ['intraTradeHigh'],则可能引发问题如下:
9月1号 开仓做多,成交价 = 98,停止策略时 记录 intraTradeHigh = 100
9月2号 没有启动策略交易 当天最高价 = 110
9月3号 开启策略时候会用策略文件中的 100 设置intraTradeHigh值,这样就漏掉了2号的最高价110,可能对交易策略产生一定影响。
粗略的分析,欢迎大佬拍砖指正~