Conversion Force Index with ATR from TradingView

Forums ProRealTime forum Italiano Supporto ProBuilder Conversion Force Index with ATR from TradingView

Viewing 4 posts - 1 through 4 (of 4 total)
  • #237739

    Hello,
    I can’t manage to convert the Elder’s Force Index indicator with 3 ATR on my own. The indicator displays the FI with its ATRs, and when the FI is outside the 3rd ATR, it shows a dot to indicate that it’s overbought or oversold. Is anyone able to help me?

    Thank you very much.

    Original Indicator URL : https://www.tradingview.com/script/GNbQ24KL-Elder-Force-Index-With-ATR-Channels-loxx/

    Salve,
    Non riesco a convertire da solo l’indicatore Elder’s Force Index con 3 ATR. L’indicatore mostra l’FI con i suoi ATR e quando l’FI è al di fuori del 3° ATR, mostra un punto per indicare che è ipercomprato o ipervenduto. Qualcuno può aiutarmi?

    Grazie mille.

    URL indicatore originale:http://www.tradingview.com/script/GNbQ24KL-Elder-Force-Index-With-ATR-Channels-loxx/

    CODE:

    //@version=5
    indicator(title=‘Elder Force Index With ATR Channels [loxx]’, shorttitle=‘EFIATR [loxx]’, format=format.volume, timeframe=“”, timeframe_gaps=true, max_bars_back = 5000)RMA(x, t=>
        EMA1 = x
        EMA1 := na(EMA1[1]) ? x : (x  nz(EMA1[1])) * (1/t+ nz(EMA1[1])
        EMA1EMA(x, t=>
        EMA1 = x
        EMA1 := na(EMA1[1]) ? x : (x  nz(EMA1[1])) * (2 / (t + 1)) + nz(EMA1[1])
        EMA1
        
    _bpDom(len, bpw, mult=>
        HP = 0.0
        BP = 0.0
        Peak = 0.0
        Real = 0.0
        counter = 0.0
        DC = 0.0
        alpha2 = (math.cos(0.25 * bpw * 2 * math.pi / len+ math.sin(0.25 * bpw * 2 * math.pi  / len 1/ math.cos(0.25 * bpw * 2 * math.pi / len)
        HP := (1 + alpha2 / 2* (close  nz(close[1])) + (1  alpha2* nz(HP[1])
        beta1 = math.cos(2 * math.pi / len)
        gamma1 = 1 / math.cos(2 *  math.pi * bpw / len)
        alpha1 = gamma1  math.sqrt(gamma1 * gamma1  1)
        BP := 0.5 * (1  alpha1* (HP  nz(HP[2])) + beta1 * (1 + alpha1* nz(BP[1])  alpha1 * nz(BP[2])
        BP := bar_index == 1 or bar_index == 2  ? 0 : BP
        Peak := 0.991 * Peak
        Peak := math.abs(BP> Peak ? math.abs(BP: Peak
        Real := Peak != 0 ?  BP / Peak : Real
        DC := nz(DC[1])
        DC := DC < 6 ? 6 : DC
        counter := counter[1+ 1
        if ta.crossover(Real, 0or ta.crossunder(Real, 0)
            DC := 2 * counter
            if 2 * counter > 1.25 * nz(DC[1])
                DC := 1.25 * DC[1]
            if 2 * counter < 0.8 * nz(DC[1])
                DC := 0.8 * nz(DC[1])
            counter := 0
        temp_out = mult * DC
        temp_out

    //inputs

    src = input.source(close, title = “Source”, group = “Basic Settings”)
    calc_type = input.string(“Fixed”, title = “Calculation Type”, options =[“Fixed”, “Band-pass Dominant Cycle”], group = “Basic Settings”)

    len =   input.int(13, title = “Fixed EFI Period”, group = “Fixed Settings”)
    slen =  input.int(21, title=‘Fixed Signal Period’, group = “Fixed Settings”)
    atr_sm =  input.int(21, title =“Fixed ATR Smoothing Length”, group = “Fixed Settings”)

    bp_period = input.int(13, “Band-pass Period”, minval = 1, group = “Band-pass”)
    bp_width = input.float(0.20, “Band-pass Width”, step = 0.1, group = “Band-pass”)
    cycle_len = input.float(100, “Signal and ATR Percent of Dominant Cycle (%)”, step = 1.0, group = “Band-pass”)/100
    efi_reduction = input.float(75, “EFI Percent of Dominant Cycle (%) “, step = 1.0, group = “Band-pass”)/100

    len_out_fast = int(nz(_bpDom(bp_period, bp_width, efi_reduction), 1)) < 1 ? 1 : int(nz(_bpDom(bp_period, bp_width, efi_reduction), 1))
    len_out_slow = int(nz(_bpDom(bp_period, bp_width, cycle_len), 1)) < 1 ? 1 : int(nz(_bpDom(bp_period, bp_width, cycle_len), 1))

    atr_mult1 = input.int(1, title = “ATR Mult Level 1”, group = “ATR Multipliers”)
    atr_mult2 = input.int(2, title = “ATR Mult Level 2”, group = “ATR Multipliers”)
    atr_mult3 = input.int(3, title = “ATR Mult Level 3”, group = “ATR Multipliers”)

    trunc_atr = input.bool(true, title = “Truncate over ATR Mult Level 4?”, group = “UI Options”)

    //core calc
    efi = EMA(ta.change(close* volume, calc_type == “Fixed” ? len : len_out_fast)
    sig = EMA(efi, calc_type == “Fixed” ? len : len_out_slow)
    atr_ema = math.abs(efi[1 efi)
    atr_out =  RMA(atr_ema, calc_type == “Fixed” ? len : len_out_slow

    //atr channel calc
    atr_high1 = sig + atr_out * atr_mult1
    atr_low1 = sig  atr_out * atr_mult1

    atr_high2= sig + atr_out * atr_mult2
    atr_low2 = sig  atr_out * atr_mult2

    atr_high3 = sig + atr_out * atr_mult3
    atr_low3 = sig  atr_out * atr_mult3

    atr_obhigh = sig + atr_out * (atr_mult3 + 1)
    atr_oblow = sig  atr_out * (atr_mult3 + 1)

    efi_out  = trunc_atr ? efi > atr_obhigh ? atr_high3 : efi < atr_oblow ? atr_low3 : efi : efi

    //plot atr channels
    plot(atr_high1, color = bar_index % 2 == 0 ? na : color.new(color.gray, 30), linewidth = 1, title = “ATR1 High”)
    plot(atr_high2, color = bar_index % 4 == 0 ? na : color.new(color.gray, 30), linewidth = 1, title = “ATR2 High”)
    plot(atr_high3, color = color.new(color.gray, 30), linewidth = 2, title = “ATR3 High”)

    plot(atr_low1, color = bar_index % 2 == 0 ? na : color.new(color.gray, 30), linewidth = 1, title = “ATR1 Low”)
    plot(atr_low2, color = bar_index % 4 == 0 ? na : color.new(color.gray, 30), linewidth = 1, title = “ATR2 Low”)
    plot(atr_low3, color = color.new(color.gray, 30), linewidth = 2, title = “ATR3 Low”)

    //plot main
    plot(0, color=color.gray, style = plot.style_circles, title=‘Zero Line’, linewidth = 2)
    plot(sig, color=color.new(color.white, 0), title=‘Signal’, linewidth = 2)
    plot(efi_out, color = #4f6cdf, title=‘EFI’, linewidth = 2)

    //plot shapes
    plot(efi_out >= atr_high3 ? efi_out : na, style = plot.style_circles, linewidth = 3, color = #D2042D, title = “Over ATR4 High”)
    plot(efi_out <= atr_low3 ? efi_out : na, style = plot.style_circles, linewidth = 3, color = #2DD204, title = “Over ATR4 Low”)

    #237783

    Eccolo qui:

    1 user thanked author for this post.
    #237786

    ¡Es perfecto! ¡Eres mi nuevo héroe! ¡Muchísimas gracias por la conversión, por la rapidez y hasta pronto!

    È perfetto! Sei il mio nuovo eroe! Grazie mille per la conversione, per la velocità e a presto!

     

    #237790

    @Alera15

    Hai iniziato usando l’Inglese ed hai finito con lo Spagnolo, pur avendo scelto il forum Italiano!

    Per  favore, non rispondere cercando di usare la lingua dell’interlocutore, né l’Inglese per forza. Usa SOLO la lingua del forum prescelto.

    Grazie 🙂

     

Viewing 4 posts - 1 through 4 (of 4 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login