''fill' between two lines? Pine-script

How can I fill up an area with yellow between fib 50 and fib 61.8 lines (probably around line 111 in the script @ 'fibolines'), e.g. using fill?

I have tried playing around with:

hh1 = hline(y1, color = color.gray, linestyle = hline.style_solid, linewidth=1)                                                  
hh2 = hline(y2, color = color.gray, linestyle = hline.style_solid, linewidth=1) 
fill(hh1,hh2,color=color.yellow, title="Background")

but it gives errors because of y1 and y2. Source code:

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LonesomeTheBlue

//@version=4
study("ModifiedLonesomeTheBlue", overlay = true, max_bars_back = 500, max_lines_count = 300)
prd = input(defval = 15, title="ZigZag Period", minval = 2, maxval = 50)
showzigzag = input(defval = true, title = "Show Zig Zag")
showfibo = input(defval = true, title = "Show Fibonacci Ratios")
labelcol = input(defval = color.blue, title = "Text Color")
fibolinecol = input(defval = color.blue, title = "Line Color")
upcol = input(defval = color.blue, title = "Zigzag Up Color")
dncol = input(defval = color.blue, title = "Zigzag Down Color")
labelloc = input(defval = "Left", title = "Label Location", options = ["Left", "Right"])
enable236 = input(defval = false, title = "Enable Level 0.236")
enable382 = input(defval = false, title = "Enable Level 0.382")
enable500 = input(defval = true, title = "Enable Level 0.500")
enable618 = input(defval = true, title = "Enable Level 0.618")
enable786 = input(defval = false, title = "Enable Level 0.786")
enable1618 = input(defval = false, title = "Enable Level 1.618")

var fibo_ratios = array.new_float(0)
var shownlevels = 1
if barstate.isfirst
    array.push(fibo_ratios, 0.000)
    if enable236
        array.push(fibo_ratios, 0.236)
        shownlevels := shownlevels + 1
    if enable382
        array.push(fibo_ratios, 0.382)
        shownlevels := shownlevels + 1
    if enable500
        array.push(fibo_ratios, 0.500)
        shownlevels := shownlevels + 1
    if enable618
        array.push(fibo_ratios, 0.618)
        shownlevels := shownlevels + 1
    if enable786
        array.push(fibo_ratios, 0.786)
        shownlevels := shownlevels + 1
    if enable1618
        array.push(fibo_ratios, 1.618)
        shownlevels := shownlevels + 1        
    for x = 1 to 1
        array.push(fibo_ratios, x)
    //    array.push(fibo_ratios, x + 0.272)
    //    array.push(fibo_ratios, x + 0.414)
    //    array.push(fibo_ratios, x + 0.618)

float ph = highestbars(high, prd) == 0 ? high : na
float pl = lowestbars(low, prd) == 0 ? low : na
var dir = 0
dir := iff(ph and na(pl), 1, iff(pl and na(ph), -1, dir))
var max_array_size = 10
var zigzag = array.new_float(0)

add_to_zigzag(value, bindex)=>
    array.unshift(zigzag, bindex)
    array.unshift(zigzag, value)
    if array.size(zigzag) > max_array_size
        array.pop(zigzag)
        array.pop(zigzag)
    
update_zigzag(value, bindex)=>
    if array.size(zigzag) == 0
        add_to_zigzag(value, bindex)
    else
        if (dir == 1 and value > array.get(zigzag, 0)) or (dir == -1 and value < array.get(zigzag, 0))
            array.set(zigzag, 0, value)
            array.set(zigzag, 1, bindex)
        0.
Round_it(value)=> round(value / syminfo.mintick) * syminfo.mintick

dirchanged = change(dir)
if ph or pl
    if dirchanged
        add_to_zigzag(dir == 1 ? ph : pl, bar_index)
    else
        update_zigzag(dir == 1 ? ph : pl, bar_index)

if showzigzag and array.size(zigzag) >= 4
    var line zzline = na
    float val = array.get(zigzag, 0)
    int point = round(array.get(zigzag, 1))
    if change(val) or change(point)
        float val1 = array.get(zigzag, 2)
        int point1 = round(array.get(zigzag, 3))
        if change(val1) == 0 and change(point1) == 0
            line.delete(zzline)
        zzline := line.new(x1 = point, y1 = val, x2 = point1, y2 = val1, color = dir == 1 ? upcol : dncol, width = 2)

var fibolines = array.new_line(0)
var fibolabels = array.new_label(0)
if showfibo and array.size(zigzag) >= 6 and barstate.islast
    if array.size(fibolines) > 0
        for x = 0 to array.size(fibolines) - 1
            line.delete(array.get(fibolines, x))
            label.delete(array.get(fibolabels, x))
            
    diff = array.get(zigzag, 4) - array.get(zigzag, 2)
    stopit = false
    for x = 0 to array.size(fibo_ratios) - 1
        if stopit and x > shownlevels
            break
        array.unshift(fibolines, 
                      line.new(x1 = round(array.get(zigzag, 5)), 
                               y1 = array.get(zigzag, 2) + diff * array.get(fibo_ratios, x), 
                               x2 = bar_index, 
                               y2 = array.get(zigzag, 2) + diff * array.get(fibo_ratios, x), 
                               color = fibolinecol,
                               extend = extend.right))
    
        label_x_loc = labelloc == "Left" ? time[bar_index - (round(array.get(zigzag, 5)) - 1)] : time + 15 * (time - time[1])
        array.unshift(fibolabels, 
                      label.new( x = label_x_loc, 
                                 y = array.get(zigzag, 2) + diff * array.get(fibo_ratios, x), 
                                 //text = tostring(array.get(fibo_ratios, x), '#.###') + "(" + tostring(Round_it(array.get(zigzag, 2) + diff * array.get(fibo_ratios, x))) + ")", 
                                 text = tostring(array.get(fibo_ratios, x), '#.###'),                                  
                                 xloc = xloc.bar_time,
                                 textcolor = labelcol, 
                                 style = label.style_none))
        if (dir == 1 and array.get(zigzag, 2) + diff * array.get(fibo_ratios, x) > array.get(zigzag, 0)) or
           (dir == -1 and array.get(zigzag, 2) + diff * array.get(fibo_ratios, x) < array.get(zigzag, 0))
            stopit := true


Solution 1:[1]

Have a read of the new release information about:

linefill.new

https://www.tradingview.com/pine-script-docs/en/v5/Release_notes.html

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 frien_dd