Pine script 正在努力进行v2到v4的脚本转换;无法修改函数“内部的全局变量”;错误

Pine script 正在努力进行v2到v4的脚本转换;无法修改函数“内部的全局变量”;错误,pine-script,Pine Script,在v2到v4的pinescript转换中遇到困难,“无法修改函数内部的全局变量”错误,我不确定如何访问变量并在函数内部进行修改,以完成循环,并且它没有显示在图表上 我在函数中尝试了p=0,后面跟着p:=“普通函数文本”,得到了要编译的文本,但是从图表中看指示器不见了。V4 pine显然通过糟糕的语法影响了数学计算 我认为,第4节应该是这样的: //@version=4 study("Adaptive Least Squares", overlay=true) length = input(50

在v2到v4的pinescript转换中遇到困难,“无法修改函数内部的全局变量”错误,我不确定如何访问变量并在函数内部进行修改,以完成循环,并且它没有显示在图表上

我在函数中尝试了p=0,后面跟着p:=“普通函数文本”,得到了要编译的文本,但是从图表中看指示器不见了。V4 pine显然通过糟糕的语法影响了数学计算


我认为,第4节应该是这样的:

//@version=4
study("Adaptive Least Squares", overlay=true)
length = input(500)
smooth = input(1.5)
//
alpha = pow(tr / highest(tr, length), smooth)
m(a, prevVal) =>
    alpha * a + (1 - alpha) * nz(prevVal, a)
//
x = bar_index
y = close
x_ = 0.0
x_ := m(x, x_[1])

y_ = 0.0
y_ := m(y, y_[1])
//
dx = abs(x - x_)
dy = abs(y - y_)

mx = 0.0
mx := m(dx, mx[1])
my = 0.0
my := m(dy, my[1])
//

xx = 0.0
xx := m(x * x, xx[1])

xy = 0.0
xy := m(x * y, xy[1])

yy = 0.0
yy := m(y * y, yy[1])

a1 = pow(2 / alpha + 1, 2) * xy - (2 / alpha + 1) * x_ * (2 / alpha + 1) * y_
b1 = sqrt((pow(2 / alpha + 1, 2) * xx - pow((2 / alpha + 1) * x_, 2)) * (pow(2 / alpha + 1, 2) * yy - pow((2 / alpha + 1) * y_, 2)))
r = a1 / b1
//
a = r * (my / mx)
b = y_ - a * x_
reg = x * a + b
//
plot(reg, color=color.red, transp=0)

嗨,Styles。您的脚本丢失了标记,无法读取。你能解决这个问题吗?我还没有弄清楚如何让堆栈溢出突出显示pinescript,而不需要突出显示pinescript。只需留出足够的空间来查看函数
p
的结束位置。或者只需在tradingview上发布脚本,并在此处添加到已发布脚本的链接。是的,伙计,你已经解决了。从v2到v4,它们确实发生了很大的变化。这应该是关于pine如何处理v4中函数的stackoverflow的一个非常好的例子
//@version=4
study("Adaptive Least Squares", overlay=true)
length = input(500)
smooth = input(1.5)
//
alpha = pow(tr / highest(tr, length), smooth)
m(a, prevVal) =>
    alpha * a + (1 - alpha) * nz(prevVal, a)
//
x = bar_index
y = close
x_ = 0.0
x_ := m(x, x_[1])

y_ = 0.0
y_ := m(y, y_[1])
//
dx = abs(x - x_)
dy = abs(y - y_)

mx = 0.0
mx := m(dx, mx[1])
my = 0.0
my := m(dy, my[1])
//

xx = 0.0
xx := m(x * x, xx[1])

xy = 0.0
xy := m(x * y, xy[1])

yy = 0.0
yy := m(y * y, yy[1])

a1 = pow(2 / alpha + 1, 2) * xy - (2 / alpha + 1) * x_ * (2 / alpha + 1) * y_
b1 = sqrt((pow(2 / alpha + 1, 2) * xx - pow((2 / alpha + 1) * x_, 2)) * (pow(2 / alpha + 1, 2) * yy - pow((2 / alpha + 1) * y_, 2)))
r = a1 / b1
//
a = r * (my / mx)
b = y_ - a * x_
reg = x * a + b
//
plot(reg, color=color.red, transp=0)