PineScript指定时间触发策略在TradingView运行报No Data错误求助
问题排查与修复方案
你的代码存在4个核心问题,是触发“No Data”报错的直接原因:
- 语法缩进错误:Pine Script依赖缩进识别代码块,你写的
if条件后没有缩进后续逻辑,等于时间判断条件完全未生效,空if块也会触发运行异常。 - 时间匹配错误:15分钟K线周期下,所有K线的时间戳均为15的整数倍(9:00、9:15、9:30、9:45以此类推),不存在
minute(time) == 31的K线,时间条件永远无法命中,无交易信号就会返回“No Data”。 - 开仓逻辑错误:做空的策略调用写错了方向,仍用
strategy.long,且多空开仓用了相同的订单IDBuy,会导致订单冲突无法正常下单。 - 逻辑匹配不符合需求:你要参考的是9:15-9:30的K线(即时间戳为9:30的15分钟K线)的涨跌,在后续K线开仓,原代码的时间节点和参考K线的对应关系完全错位。
修正后可运行代码
//@version=5 strategy("Time_Strategy", overlay=true, margin_long=100, margin_short=100) // 匹配15分钟周期下9:15-9:30的目标K线(时间戳为9:30) is_target_kline = hour(time) == 09 and minute(time) == 30 // 记录目标K线的涨跌状态 var is_target_kline_bull = false var is_target_kline_bear = false if is_target_kline is_target_kline_bull = open < close is_target_kline_bear = open > close // 在下一根K线(9:30-9:45)确认后执行开仓 if barstate.isconfirmed and is_target_kline[1] if is_target_kline_bull strategy.entry("Buy", strategy.long, 1) if is_target_kline_bear strategy.entry("Sell", strategy.short, 1)
额外配置注意事项
- 确认策略设置的时区和标的交易时区一致,避免时间匹配偏差
- 确认回测时间范围包含足够多的交易日,覆盖9:30的K线节点
内容的提问来源于stack exchange,提问作者Piyush Katariya
相关产品推荐
相关产品推荐

