Возникли проблемы при добавлении процента к меткам в формуле Pine Script - PullRequest
0 голосов
/ 25 марта 2020

Я довольно новичок в pinescript, и у меня много проблем с добавлением процентов вверх и вниз к меткам в моей формуле. Я хочу нанести процентное снижение на метки внизу каждой нисходящей нити и процентное увеличение на метках вверху каждой нисходящей нити. Я был бы очень признателен за помощь, пожалуйста.

//@version=4
study("ZigZag", overlay=true)

useclose = input(true, title="Use close to confirm", type=input.bool)

var bool uptrend = na

var float tophigh = na(uptrend[1]) ? high : na
var float toplow = na(uptrend[1]) ? low : na

var float bothigh = na(uptrend[1]) ? high : na
var float botlow = na(uptrend[1]) ? low : na

newtop = na(uptrend[1])
newbot = na(uptrend[1])
changed = na(uptrend[1])

if na(uptrend[1])
    uptrend := close > close[1]
else

    if uptrend[1]
        if na(tophigh[1]) or high > tophigh[1]
            tophigh := high
            toplow := low
            newtop := true

        if na(toplow[1]) or ((close < toplow[1] and useclose) or (low < toplow[1] and not useclose))
            bothigh := high
            botlow := low
            newbot := true
            changed := true
            uptrend := false
    else
        if na(botlow[1]) or low < botlow[1]
            bothigh := high
            botlow := low
            newbot := true

        if na(bothigh[1]) or ((close > bothigh[1] and useclose) or (high > bothigh[1] and not useclose))
            tophigh := high
            toplow := low
            changed := true
            newtop := true
            uptrend := true


// labels

float l = 0.0
float oldl = 0.0
float h = 0.0
float oldh = 0.0

float perc = 0.0
float perc2 = 0.0
float perc3 = 0.0


if changed and not barstate.isrealtime
    if uptrend
        for i = 0 to 100
            if newbot[i]
                l := low [i]

                oldl := valuewhen(changed and uptrend, l, 1)

                perc := (l - oldl) * 100 / oldl    

                label.new(bar_index[i], na,tostring(low[i], "#,###,###.##") + "\n" + (perc > 0 ? "+" : "") + tostring(round(perc))+"%" ,
                  color=#AD2B4E,
                  textcolor=color.white,
                  style=label.style_labelup, yloc=yloc.belowbar)

                break
    else
        for i = 0 to 100
            if newtop[i]
                h := high [i]

                oldh := valuewhen(changed and not uptrend, h, 1)
                perc2 := (h - oldh) * 100 / oldh

                label.new(bar_index[i], na, tostring(high[i], "#,###,###.##") + " \n" + (perc2 > 0 ? "+" : "") + tostring(round(perc2)) + "%",
                  color=#67E300,
                  textcolor=color.white,
                  style=label.style_labeldown, yloc=yloc.abovebar)
                break

// zig zag
getBot() =>
    int index = na
    x = not uptrend ? 1 : 0
    for i = x to 100
        if newbot[i]
            index := i
            break
    index

getTop() =>
    int index = na
    x = uptrend ? 1 : 0
    for i = x to 100
        if newtop[i]
            index := i
            break
    index

ziglow = getBot()
zighigh = getTop()

if changed[1]
    if uptrend[1]
        l = line.new(bar_index[ziglow[1]+1], low[ziglow[1]+1], bar_index[zighigh[1]+1], high[zighigh[1]+1], width=2, color=#f0f0ff)
    else
        l = line.new(bar_index[ziglow[1]+1], low[ziglow[1]+1], bar_index[zighigh[1]+1], high[zighigh[1]+1], width=2, color=#f0f0ff)

зигзаг изображение

...