wondertrader / wtpy

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

[bug] 参数优化器中,未成功提交配置文件。 #140

Open CedrusZhao opened 3 months ago

CedrusZhao commented 3 months ago

WtCtaOptimizer.py这个文件中,start_task_group函数如下部分存在问题:

    for param in params:
        cnt += 1
        print(f"{gpName} 正在回测{cnt}/{total}")
        name = param["name"]

        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 cpp_stra_module is not None:
            param.pop("name")
            engine.setExternalCtaStrategy(name, cpp_stra_module, cpp_stra_type, param)
        else:
            straInfo = strategy_type(**param)
            engine.set_cta_strategy(straInfo)
        engine.commitBTConfig()
        engine.run_backtest()
        ayalyze_result(name, time_range, param, capital, rf, period)
        counter.value += 1

在这个for循环中,会多次调用 engine.commitBTConfig() 函数。但是只有第一被调用时会成功提交配置。后续再调用时,并不会真的会提交配置。这将造成错误。

CedrusZhao commented 3 months ago

我觉的可以为engine.commitBTConfig()添加个参数,强制提交配置。如果这个方案可行,那么我来改一下