vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 17
声望: 0

为什么么优化策略的时候,每次还要读取数据呢?直接利用缓存第一次读取的数据不更好吗?可以节省好多时间啊。

Member
avatar
加入于:
帖子: 17
声望: 0

看了下代码, 调用的是这个优化的方法。

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,后面直接利用缓存,这样优化的速度可以快上几十倍吧。

Administrator
avatar
加入于:
帖子: 1908
声望: 85

这里load_data本来就有lru_cache缓存的。。。

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3