VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 9
声望: 0

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

Member
avatar
加入于:
帖子: 9
声望: 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
加入于:
帖子: 4500
声望: 320

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

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

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】