为什么么优化策略的时候,每次还要读取数据呢?直接利用缓存第一次读取的数据不更好吗?可以节省好多时间啊。
为什么么优化策略的时候,每次还要读取数据呢?直接利用缓存第一次读取的数据不更好吗?可以节省好多时间啊。
看了下代码, 调用的是这个优化的方法。
def optimize(
target_name: str,
strategy_class: CtaTemplate,
setting: dict,
vt_symbol: str,
interval: Interval,
start: datetime,
rate: float,
slippage: float,
size: float,
pricetick: float,
capital: int,
end: datetime,
mode: BacktestingMode
):
"""
Function for running in multiprocessing.pool
"""
engine = BacktestingEngine()
engine.set_parameters(
vt_symbol=vt_symbol,
interval=interval,
start=start,
rate=rate,
slippage=slippage,
size=size,
pricetick=pricetick,
capital=capital,
end=end,
mode=mode
)
engine.add_strategy(strategy_class, setting)
engine.load_data()
engine.run_backtesting()
engine.calculate_result()
statistics = engine.calculate_statistics(output=False)
target_value = statistics[target_name]
return (str(setting), target_value, statistics)
每次都要engine.load_data(), 数据库读取的数据太耗时了,可以判断如果调用的是优化的方法,第一次load_data,后面直接利用缓存,这样优化的速度可以快上几十倍吧。
这里load_data本来就有lru_cache缓存的。。。