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

编写TradingView首个Pine Script遇语法错误:赋值语句报错

解决Pine Script v5的数组赋值语法错误

错误原因

你遇到的Syntax error at input '='是因为Pine Script v5不支持直接用数组名[索引] = 值的方式修改数组元素,不管用=还是:=都不行,必须使用官方提供的array.set()函数来修改数组元素。另外你的循环逻辑还存在数组索引越界问题:数组初始化长度为n,索引范围是0到n-1,但你循环从n开始,会访问超出数组范围的索引。

修正后的代码

//@version=5
indicator("Range Probability")  // v5中建议用indicator替代study,功能一致

n = input(title="Number of bars", type=input.integer, defval=100, minval=1)

// 初始化存储过去n个bar范围的数组
past_ranges = array.new_float(n, 0.0)

// 将数组元素向后移位(从最后一位到第二位,依次复制前一位的值)
for i = n-1 downto 1
    array.set(past_ranges, i, array.get(past_ranges, i-1))

// 将当前bar的范围放入数组第一个位置
current_range = abs(high - low)
array.set(past_ranges, 0, current_range)

// 计算均值和标准差
mean_range = array.avg(past_ranges)
std_dev = array.stdev(past_ranges)

// 计算当前范围的概率
prob = normcdf(current_range, mean_range, std_dev)

// 绘制概率曲线
plot(prob, title="Range Probability", color=color.blue)

关键修改点

  • 用array.set(数组名, 索引, 值)替代直接索引赋值,用array.get(数组名, 索引)获取数组元素
  • 调整循环范围为n-1 downto 1,避免数组索引越界
  • 用indicator替代study(Pine v5中推荐使用,两者功能等价)
  • 简化变量定义,避免重复计算abs(high - low)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:12:39