基于15分钟历史数据回测日线时间框架策略的Pinescript问题咨询
TradingView跨时间框架回测历史数据不足解决方案
你遇到的自动切换时间框架问题本质是TradingView对不同订阅等级的低时间框架历史数据访问有额度限制,其次是代码写法可能导致不必要的历史数据加载,可行方案如下:
- 方案1:升级TradingView订阅等级
不同等级的15分钟K线历史访问权限如下:- 免费版:仅支持最近3个月的15分钟数据
- Pro版:支持最近1年的15分钟数据
- Pro+版:支持最近5年的15分钟数据
- Premium版:支持最多20年的15分钟数据,可覆盖你需要的2014年数据区间
升级后直接在15分钟图表设置回测时间范围即可,不会触发自动切时间框架。
- 方案2:优化PineScript代码减少数据加载需求
不要在15分钟级别逐K计算日线EMA,直接用request.security()函数请求预计算的日线信号,减少历史数据加载量,示例代码如下:
额外操作技巧:启动回测前先手动将15分钟K线拉到你需要的最早历史时间点,等页面完全加载完所有K线后再运行回测,可避免触发自动切换时间框架的逻辑。//@version=5 strategy("日线EMA交叉15分钟回测", overlay=true) // 请求日线级别EMA20和EMA200的交叉信号 [d_ema20, d_ema200] = request.security(syminfo.tickerid, "D", [ta.ema(close, 20), ta.ema(close, 200)]) long_signal = ta.crossover(d_ema20, d_ema200) short_signal = ta.crossunder(d_ema20, d_ema200) // 15分钟级别下单 if (long_signal) strategy.entry("多", strategy.long) if (short_signal) strategy.entry("空", strategy.short) - 方案3:本地搭建回测环境(无需TradingView订阅)
如果你不想升级订阅,可以用Python完成批量回测,比手动Excel处理效率高10倍以上:- 用公开数据源API下载对应品种的15分钟历史行情数据
- 用
pandas库按自然日分组计算每日收盘价的EMA20、EMA200以及交叉信号 - 用回测框架(如VectorBT、Backtrader)匹配15分钟行情执行开平仓逻辑,自动输出回测报告
单品种半年的15分钟数据回测全程耗时不超过10秒,支持批量处理多品种。
内容的提问来源于stack exchange,提问作者Geewhiz
相关产品推荐
相关产品推荐

