Open umruuu opened 1 year ago
for param in params:
cnt += 1
print(f"{gpName} 正在回测{cnt}/{total}")
name = param["name"]
param_content = content.replace("$NAME$", name)
if is_yaml:
param_content = json.dumps(yaml.full_load(param_content))
engine.configBacktest(param["start_time"], param["end_time"])
time_range = (param["start_time"], param["end_time"])
# 去掉多余的参数
param.pop("start_time")
param.pop("end_time")
if self.cpp_stra_module is not None:
param.pop("name")
engine.setExternalCtaStrategy(name, self.cpp_stra_module, self.cpp_stra_type, param)
else:
straInfo = self.strategy_type(**param)
engine.set_cta_strategy(straInfo,slippage=1)
engine.commitBTConfig()
engine.run_backtest()# !!!!!!!!在这里中断了,没有任何提示,接下来就是summary.json找不到
self.__ayalyze_result__(name, time_range, param, capital, rf, period)
没遇到过,我试试看
这个问题,我怀疑和一些字符串长度的限制有关
optimizer.add_listed_param(name="stopProfitPercent", val_list=[0]) 当有两个可变参数的时候,name太长engine.run_backtest()这里就会在第一次for循环中断,且没有报错,很难debug。 参数名改成spp就好了