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

Pine Script新手求助:第11行for语句报错,预期'to <expression>'

问题根源与解决方案

1. 核心错误原因

你定义的djia_tickers是逗号分隔的字符串序列,而非Pine Script要求的数组类型。array.size()函数仅能作用于数组,传入非数组值会导致表达式无效,进而触发for循环的语法错误。

2. 修正步骤

步骤1:将字符串序列转为数组

把djia_tickers的定义改为用array.from()创建数组:

djia_tickers = array.from("AAPL", "MSFT", "JPM", "V", "GS", "DIS", "HD", "INTC", "MCD", "BA","UNH", "KO", "WMT", "PG", "AXP", "CAT", "CVX", "IBM", "MRK", "CSCO","XOM", "COST", "PFE", "TRV", "MMM", "AMGN", "WBA", "HON", "CRM", "NKE", "DD")

步骤2:修正逻辑错误(关键)

原代码中if close < sma_stock使用的是当前图表的收盘价,而非目标股票的收盘价,会导致判断逻辑错误。需改为获取目标股票的收盘价:

stock_close = request.security(ticker, "D", close)
if stock_close < sma_stock
    stocks_below_sma := stocks_below_sma + 1

步骤3:完整修正后的代码

indicator("DIA ETF: 25% or Fewer Stocks Below 20-Day SMA", overlay=true)

// 修正:将字符串序列转为数组
djia_tickers = array.from("AAPL", "MSFT", "JPM", "V", "GS", "DIS", "HD", "INTC", "MCD", "BA","UNH", "KO", "WMT", "PG", "AXP", "CAT", "CVX", "IBM", "MRK", "CSCO","XOM", "COST", "PFE", "TRV", "MMM", "AMGN", "WBA", "HON", "CRM", "NKE", "DD")

sma_length = 20

stocks_below_sma = 0

// 现在array.size()可正常作用于数组,for循环语法合法
for i = 0 to array.size(djia_tickers) - 1
    ticker = array.get(djia_tickers, i)
    // 一次性获取目标股票的收盘价和SMA,提升效率
    [stock_close, sma_stock] = request.security(ticker, "D", [close, ta.sma(close, sma_length)])
    if stock_close < sma_stock
        stocks_below_sma := stocks_below_sma + 1

percent_below_sma = (stocks_below_sma / array.size(djia_tickers)) * 100

condition = percent_below_sma <= 25

plotshape(series=condition, location=location.belowbar, color=color.red, style=shape.labeldown, title="25% or Fewer Stocks Below 20-Day SMA", text="25% Below SMA")

barcolor(condition ? color.red : na)

3. 额外说明

  • Pine Script中,数组需通过array.new_*()或array.from()显式创建,直接逗号分隔的字符串是元组类型,不支持数组操作函数。
  • request.security()一次性获取多个值(如示例中的收盘价和SMA),可减少网络请求次数,提升脚本运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:07:20