需要帮助将 Tradingview pine 脚本从版本 2 转换为版本 5

问题描述 投票:0回答:2

我是 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")

'''

pine-script tradingview-api pine-script-v5
2个回答
0
投票

首先将其转换为

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

0
投票

//@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)

© www.soinside.com 2019 - 2024. All rights reserved.