wondertrader / wtpy

wtpy是基于wondertrader为底层的针对python的子框架
MIT License
870 stars 246 forks source link

optimizer.add_listed_param 好像name太长的话engine run那里就会中断,并且api没有报错 #77

Open umruuu opened 1 year ago

umruuu commented 1 year ago

optimizer.add_listed_param(name="stopProfitPercent", val_list=[0]) 当有两个可变参数的时候,name太长engine.run_backtest()这里就会在第一次for循环中断,且没有报错,很难debug。 参数名改成spp就好了

umruuu commented 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()

print(2)

        engine.run_backtest()# !!!!!!!!在这里中断了,没有任何提示,接下来就是summary.json找不到

print(1)

        self.__ayalyze_result__(name, time_range, param, capital, rf, period)
wondertrader commented 1 year ago

没遇到过,我试试看

wondertrader commented 1 year ago

这个问题,我怀疑和一些字符串长度的限制有关