pine-scripthighest

Find the highest and lowest value for a time frame in the pine editor


As an absoulutely new beginner I'm experimenting with the pine editor of Tradingview. I wrote a simple script that plots the difference between ema and dema. Additionally, I want to get the highest and lowest value in the choosen time frame.

Let's assume the highest closed value of a stock is $120,3 and the lowest closed value is $49,41 in the 6M time frame. I want to plot these two horizontal lines that represents all-time high and all-time low for a specific time frame.

//@version=4
study(title="Test")

biggest(series) =>
    max = 0.0
    max := nz(max[1], series)
    if series > max
        max := series
    max

smallest(series) =>
    min = 0.0
    min := nz(min[1], series)
    if series < min
        min := series
    min

fast = 14, slow = 50

length = input(fast, minval=1)
src = input(close, title="Source")
e1 = ema(src, length)
e2 = ema(e1, length)
dema = 2 * e1 - e2

band4 = hline(0, "Upper Band", color=#ff0000)

fastEMA = ema(close, fast)
slowEMA = ema(close, slow)
test = (dema - slowEMA)//(high1-low1)
plot(test,color=color.white)

Solution

  • //@version=4
    study(title="Help (Test)")
    
    biggest(series) =>
        max = 0.0
        max := nz(max[1], series)
        if series > max
            max := series
        max
    
    smallest(series) =>
        min = 0.0
        min := nz(min[1], series)
        if series < min
            min := series
        min
    
    fast = 14, slow = 50
    
    length = input(fast, minval=1)
    src = input(close, title="Source")
    e1 = ema(src, length)
    e2 = ema(e1, length)
    dema = 2 * e1 - e2
    
    band4 = hline(0, "Upper Band", color=#ff0000)
    
    fastEMA = ema(close, fast)
    slowEMA = ema(close, slow)
    test = (dema - slowEMA)//(high1-low1)
    plot(test,color=color.black)
    
    //[ADDON]
    period = input("6M", "Period hi/lo detect", input.resolution) //  Six Months
    
    var hi = 0.0
    var lo = 10e10
    var br = 0
    var lnhi = line.new(na, na, na , na)
    var lnlo = line.new(na, na, na , na)
    
    if change(time(period))
        hi := test
        lo := test
        br := bar_index
        lnhi := line.new(br, hi , br, hi, color=color.red, width=2)
        lnlo := line.new(br, lo , br, lo, color=color.green, width=2)
        float(na)
    else
        hi := max(test, hi)
        lo := min(test, lo)
    
    line.set_xy1(lnhi, br, hi)
    line.set_xy2(lnhi, bar_index, hi)
    line.set_xy1(lnlo, br, lo)
    line.set_xy2(lnlo, bar_index, lo)
    

    Your plot test with the ABSOLUTE HIGHEST and LOWEST value for six months time frames. enter image description here