我是 TradingView Pine 脚本的新手。 我正在寻求有关版本 2 的 pine 脚本的帮助,但我正在尝试将其转换为版本 5 并且有很多编译错误。
以下是我尝试从 V2 转换为 V5 的完整脚本以及我面临的错误。 我在转换时遇到这些错误 转换失败,原因:source pine不正确。第 12 行:变量
sum
声明为整型。无法为其分配类型系列的表达式
'''
//@version=2
study("Trend Signal", overlay=true)
RISK= input(title="RISK", type=integer, defval=14)
value10=3+RISK*2
value11=value10
x1=67+RISK
x2=33-RISK
range(length) =>
sum = 0
for i = 1 to length-1
sum := sum + abs(high[i]-low[i])
sum / length
MRO1(length, range) =>
true_count = 0
counter = 0
for i = 1 to length-1
x = if abs(open[i]-close[i+1]) >= range*2.0
true_count := true_count + 1
counter = i
break
mro = if true_count >= 1
counter
else
-1
mro
MRO2(length, range) =>
true_count = 0
counter = 0
for i = 1 to length-1
x = if abs(close[i+3]-close[i]) >= range*4.6
true_count := true_count + 1
counter = i
break
mro = if true_count >= 1
counter
else
-1
mro
wpr(length) =>
upper = highest(length)
lower = lowest(length)
out = 100 * (close - upper) / (upper - lower)
out
rng = range(10)
mro1=MRO1(10,rng)
mro2=MRO2(7,rng)
rez = if mro1>-1
3
else
value10
value11:=rez
rez1 = if mro2>-1
4
else
value10
value11:=rez1
value2 = 100-abs(wpr(value10))
Table_value2=value2
notset=false
ii1 = 1
for i1 = 1 to 300
if ((Table_value2[i1] < x2 or Table_value2[i1] > x1) and notset==false)
notset:=true
ii1 := i1
z=Table_value2[ii1]
up = if value2 < x2
if Table_value2[ii1] > x1
ii1
else
0
else
0
plotshape(up, style=shape.labeldown, location=location.abovebar, size=size.normal, color=aqua, text="Sell")
dn = if value2 > x1
if Table_value2[ii1] < x2
ii1
else
0
else
0
plotshape(dn, style=shape.labelup, location=location.belowbar, size=size.normal, color=aqua, text="Buy")
'''
首先将其转换为
v3
。只需将 //@version=2
更改为 //@version=3
即可编译。
之后使用 Tradingview 提供的自动转换器将其升级到
v4
然后同样的事情升级到 v5
.
在转换为
v4
之前,请确保进行以下更改:
sum=0
到sum=0.0
:
range(length) =>
sum = 0.0
for i = 1 to length - 1 by 1
sum := sum + abs(high[i] - low[i])
sum
sum / length
在两个
MRO
功能中执行以下操作。 x
应该被删除,因为没有分配给它。
if abs(open[i] - close[i + 1]) >= range * 2.0
true_count := true_count + 1
counter = i
break
//@version=5
indicator('Trend Signal', overlay=true)
RISK = input(title='RISK', defval=14)
value10 = 3 + RISK * 2
value11 = value10
x1 = 67 + RISK
x2 = 33 - RISK
range_1(length) =>
sum = 0.0
for i = 1 to length - 1 by 1
sum += math.abs(high[i] - low[i])
sum
sum / length
MRO1(length, range_2) =>
true_count = 0
counter = 0
for i = 1 to length - 1 by 1
x = math.abs(open[i] - close[i + 1])
if x >= range_2 * 2.0
true_count += 1
counter := i
break
mro = true_count >= 1 ? counter : -1
mro
MRO2(length, range_3) =>
true_count = 0
counter = 0
for i = 1 to length - 1 by 1
x = math.abs(close[i + 3] - close[i])
if x >= range_3 * 4.6
true_count += 1
counter := i
break
mro = true_count >= 1 ? counter : -1
mro
wpr(length) =>
upper = ta.highest(length)
lower = ta.lowest(length)
100 * (close - upper) / (upper - lower)
rng = range_1(10)
mro1 = MRO1(10, rng)
mro2 = MRO2(7, rng)
rez = mro1 > -1 ? 3 : value10
value11 := rez
rez1 = mro2 > -1 ? 4 : value10
value11 := rez1
value2 = 100 - math.abs(wpr(value10))
Table_value2 = value2
notset = false
ii1 = 1
for i1 = 1 to 300 by 1
if Table_value2[i1] < x2 or Table_value2[i1] > x1
notset := true
ii1 := i1
break
z = Table_value2[ii1]
up = value2 < x2 ? Table_value2[ii1] > x1 ? ii1 : 0 : 0
plotshape(up, style=shape.labeldown, location=location.abovebar, size=size.normal, color=color.new(color.white, 0), text='Sell')
dn = value2 > x1 ? Table_value2[ii1] < x2 ? ii1 : 0 : 0
plotshape(dn, style=shape.labelup, location=location.belowbar, size=size.normal, color=color.new(#3aff40, 0), text='Buy')
// Add moving averages
ma1 = ta.sma(close, 21)
ma2 = ta.sma(close, 50)
// Plot moving averages
plot(ma1, color=color.rgb(0, 255, 42), linewidth=2)
plot(ma2, color=color.rgb(255, 255, 255), linewidth=2)