You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script V5策略报‘No Data’错误求助

排查Pine Script V5策略“No Data”问题

核心原因

出现“No Data”提示的本质是策略未生成任何有效交易订单,结合你的代码,主要问题集中在信号逻辑、止损止盈设置和订单执行逻辑上:

1. 基础信号未处理无效值

代码中buy_signal = high > high[1]和sell_signal = low < low[1]在第一根K线时,high[1]/low[1]为na(无效值),导致信号不触发;后续K线虽能计算,但单纯突破前K线高低点的信号在部分品种/周期上触发频率极低,甚至无信号。

2. 止损止盈逻辑错误

  • 做多止损设为low[1]:若当前K线突破前高触发买入,当前K线低点大概率高于前K线低点,止损价低于开仓价会导致开仓即止损平仓,无有效持仓数据。
  • 做空止盈设为low[1] + 1000 * syminfo.mintick:做空需向下获利,你设置的止盈价反而高于前低,完全无法触发;同时做空止损设为high[1],同样可能出现开仓即止损的情况。

3. 订单执行逻辑冗余冲突

每根K线重复执行strategy.exit指令,且同方向订单命名重复(均为"Stop Loss/Take Profit"),容易引发Pine Script的订单识别混乱。

修正后的代码

//@version = 5
strategy("High/Low of Previous Candle Strategy", overlay = true, slippage = 10, initial_capital = 1000000, calc_on_every_tick = true, process_orders_on_close = false, default_qty_value = 10)

// 过滤无效K线,确保前K线数据存在
is_valid_bar = not na(high[1]) and not na(low[1])

// 修正买卖信号,加入有效K线判断
buy_signal = is_valid_bar and high > high[1]
sell_signal = is_valid_bar and low < low[1]

// 用ATR设置动态止损止盈(比固定值更通用)
var atr = ta.atr(14)
stop_loss_buy = low
take_profit_buy = high[1] + atr

stop_loss_sell = high
take_profit_sell = low[1] - atr

// 开仓时直接绑定止损止盈,避免重复指令
if buy_signal
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy Exit", "Buy", stop=stop_loss_buy, limit=take_profit_buy)

if sell_signal
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell Exit", "Sell", stop=stop_loss_sell, limit=take_profit_sell)

额外排查建议

  • 检查品种和周期:选择有足够历史数据的主流品种,避免流动性极差或上市时间极短的标的。
  • 调整回测范围:确保回测时间覆盖至少几百根K线,验证信号是否正常触发。

内容的提问来源于stack exchange,提问作者Paulo Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:35:04