QMT中的市场数据缓存:提高策略运行效率
发布时间:8小时前阅读:14

QMT策略中频繁调用history_bars或get_market_data会拖慢速度。合理的数据缓存可以大幅提升性能。本文介绍几种缓存技巧。
技巧一:在init中预加载历史数据,存入context。
`python
def init(context):
context.price_cache = {}
stocks = ['000001.SZ', '000002.SZ']
for stock in stocks:
context.price_cache[stock] = history_bars(stock, 200, '1d', 'close')
`
然后在handle_bar中,直接从缓存索引,而不是重新获取。注意每天收盘后需要追加新数据。
技巧二:使用functools.lru_cache装饰器缓存函数结果。例如,计算RSI的函数:
`python
from functools import lru_cache
@lru_cache(maxsize=128)
def cached_rsi(stock, n):
prices = history_bars(stock, n+1, '1d', 'close')
return talib.RSI(prices, n)[-1]
`
相同参数第二次调用时直接返回缓存结果。
技巧三:对于盘中重复计算的技术指标,可以每N个tick计算一次,而不是每个tick都算。使用计数器。
`python
context.counter = 0
def on_tick(context, tick):
context.counter += 1
if context.counter % 10 == 0:
context.rsi = compute_rsi()
`
技巧四:将数据存储在外部数据库或文件中,策略启动时加载,盘中只读取。
数据缓存能显著提高实盘性能,尤其是在订阅较多股票时。但要注意:缓存的数据在实盘中需要实时更新,不能永远使用旧数据。
国金证券的QMT支持高效的数据访问,10万资金即可开通。量化社群中有更高级的缓存技巧,如使用numpy数组而非pandas。性能优化是量化开发进阶的必修课。
温馨提示:投资有风险,选择需谨慎。
-
国常会力挺“六张网”,利好哪些板块?普通人如何稳健布局?
2026-05-18 15:52
-
REITs打新: 风电项目 ⌈中核新能⌋ 今日发售!点击领取认购操作指南~
2026-05-18 15:52
-
华泰AI涨乐APP超实用提示词分享,直接复制使用~
2026-05-18 15:52


问一问

+微信
分享该文章
