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

PineScript V5斐波那契回撤指标语法错误:赋值符号冲突求助

问题解决:PineScript V5斐波那契回撤指标语法错误

错误根源

你遇到的<Syntax error at input '='>及赋值符号矛盾问题,核心是PineScript V5不支持直接通过数组下标(array[i] := 值)修改元素,必须使用官方提供的array.set()函数操作数组。此外第二段代码里的fib_levels_prices([i])属于错误语法,下标无需额外加括号。

修正后的关键代码片段

第一段循环修正

原错误代码:

for i = 0 to fib_levels_arr.size() - 1
    fib_levels_arr_f[i] := float(fib_levels_arr[i])

修正后:

for i = 0 to fib_levels_arr.size() - 1
    array.set(fib_levels_arr_f, i, float(str.trim(array.get(fib_levels_arr, i))))

补充:添加str.trim()是为了处理输入字符串中可能存在的空格(比如用户输入0.236, 0.382带空格的情况),避免float转换失败。

第二段循环修正

原错误代码:

for i = 0 to int(fib_levels_arr.size() - 1)
    fib_levels_prices([i]) := fib_swing_high - fib_levels_arr_f[i] * fib_price_range

修正后:

for i = 0 to fib_levels_arr.size() - 1
    array.set(fib_levels_prices, i, fib_swing_high - array.get(fib_levels_arr_f, i) * fib_price_range)

说明:fib_levels_arr.size()本身返回整数类型,无需用int()转换;获取数组元素必须用array.get(),修改元素用array.set()。

完整修正代码

//@version=5
strategy("Supetrend, MACD and RSI Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=110,
     initial_capital=100, margin_long=0.1, margin_short=0.1)

// Define Fibonacci Retracement : Inputs
entry_size = input.float(100, title="Entry Size (in USD)")
stop_loss = input.float(50, title="Stop Loss (in USD)")
take_profit = input.float(200, title="Take Profit (in USD)")
fib_levels = input.string(title="Fibonacci Levels", defval="0.236,0.382,0.5,0.618,0.786")
fib_breakout_range = input.int(10, title="Fibonacci Breakout Range")

// Calculate Fibonacci Retracement
// split the string into an array of substrings using the "," delimiter
var fib_levels_arr = str.split(fib_levels, ",")

// create a new float array with the same size as fib_levels_arr
var fib_levels_arr_f = array.new_float(fib_levels_arr.size())

// iterate over each index of fib_levels_arr, convert the string to a float and store it in the corresponding index of fib_levels_arr_f
for i = 0 to fib_levels_arr.size() - 1
    array.set(fib_levels_arr_f, i, float(str.trim(array.get(fib_levels_arr, i))))

fib_swing_high = ta.highest(high, 5)
fib_swing_low = ta.lowest(low, 5)
fib_price_range = fib_swing_high - fib_swing_low

fib_levels_prices = array.new_float(fib_levels_arr.size(), na)

for i = 0 to fib_levels_arr.size() - 1
    array.set(fib_levels_prices, i, fib_swing_high - array.get(fib_levels_arr_f, i) * fib_price_range)

fib_breakout_level = ta.pivothigh(high, fib_breakout_range, fib_breakout_range)
fib_support_level = ta.pivotlow(low, fib_breakout_range, fib_breakout_range)

额外注意事项

  • PineScript V5对数组操作严格依赖官方API函数,不能像常规编程语言那样直接通过下标读写;
  • 字符串转float前用str.trim()清理空格,可避免因输入格式问题导致的转换失败;
  • var关键字用于声明仅初始化一次的变量,适合数组这类无需每根K线重建的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:47:13