INDICADOR AUTO FIB RETRACEMENT-CUSTOM LINES

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #262113 quote
    MaricarmenMaricarmen
    Participant
    Veteran

    Buenas Tardes:

    Se podría traducir este indicador de Tradingview a nuestra plataforma.

    https://es.tradingview.com/script/Fw4QByti-Auto-Fib-Retracement-custom-lines/

    GRACIAS

    //@version=6

    indicator(“Auto Fib Retracement-custom lines”, overlay=true)


    devTooltip = “Deviation is a multiplier that affects how much the price should deviate from the previous pivot in order for the bar to become a new pivot.”

    depthTooltip = “The minimum number of bars that will be taken into account when calculating the indicator.”

    // pivots threshold

    threshold_multiplier = input.float(title=”Deviation”, defval=7, minval=0, tooltip=devTooltip)

    depth = input.int(title=”Depth”, defval=20, minval=2, tooltip=depthTooltip)

    reverse = input(false, “Reverse”, display = display.data_window)

    var extendLeft = input(false, “Extend Left | Extend Right”, inline = “Extend Lines”)

    var extendRight = input(true, “”, inline = “Extend Lines”)

    var extending = extend.none

    if extendLeft and extendRight

      extending := extend.both

    if extendLeft and not extendRight

      extending := extend.left

    if not extendLeft and extendRight

      extending := extend.right

    prices = input(true, “Show Prices”, display = display.data_window)

    levels = input(true, “Show Levels”, inline = “Levels”, display = display.data_window)

    levelsFormat = input.string(“Values”, “”, options = [“Values”, “Percent”], inline = “Levels”, display = display.data_window, active = levels)

    labelsPosition = input.string(“Right”, “Labels Position”, options = [“Left”, “Right”], display = display.data_window)

    var int backgroundTransparency = input.int(100, “Background Transparency”, minval = 0, maxval = 100, display = display.data_window)


    import TradingView/ZigZag/7 as zigzag


    update()=>

      var settings = zigzag.Settings.new(threshold_multiplier, depth, color(na), false, false, false, false, “Absolute”, true)

      var zigzag.ZigZag zigZag = zigzag.newInstance(settings)

      var zigzag.Pivot lastP = na

      var float startPrice = na

      var float height = na

      if barstate.islast and zigZag.pivots.size() < 2

        runtime.error(“Not enough data to calculate Auto Fib Retracement on the current symbol. Change the chart’s timeframe to a lower one or select a smaller calculation depth using the indicator’s `Depth` settings.”)

      settings.devThreshold := ta.atr(10) / close * 100 * threshold_multiplier

      if zigZag.update()

        lastP := zigZag.lastPivot()

        if not na(lastP)

          var line lineLast = na

          if na(lineLast)

            lineLast := line.new(lastP.start, lastP.end, xloc=xloc.bar_time, color=color.gray, width=1, style=line.style_dashed)

          else

            line.set_first_point(lineLast, lastP.start)

            line.set_second_point(lineLast, lastP.end)


          startPrice := reverse ? lastP.start.price : lastP.end.price

          endPrice = reverse ? lastP.end.price : lastP.start.price

          height := (startPrice > endPrice ? -1 : 1) * math.abs(startPrice – endPrice)

      [lastP, startPrice, height]


    [lastP, startPrice, height] = update()


    _draw_line(price, col, lineWidth) =>

      var id = line.new(lastP.start.time, lastP.start.price, time, price, xloc=xloc.bar_time, color=col, width=lineWidth, extend=extending)

      line.set_xy1(id, lastP.start.time, price)

      line.set_xy2(id, lastP.end.time, price)

      id



    _draw_label(price, txt, txtColor) =>

      x = labelsPosition == “Left” ? lastP.start.time : not extendRight ? lastP.end.time : time

      labelStyle = labelsPosition == “Left” ? label.style_label_right : label.style_label_left

      align = labelsPosition == “Left” ? text.align_right : text.align_left

      labelsAlignStrLeft = txt + ‘n ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ n’

      labelsAlignStrRight = ‘    ‘ + txt + ‘n ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ n’

      labelsAlignStr = labelsPosition == “Left” ? labelsAlignStrLeft : labelsAlignStrRight

      var id = label.new(x=x, y=price, xloc=xloc.bar_time, text=labelsAlignStr, textcolor=txtColor, style=labelStyle, textalign=align, color=#00000000)

      label.set_xy(id, x, price)

      label.set_text(id, labelsAlignStr)

      label.set_textcolor(id, txtColor)


    _wrap(txt) =>

      “(” + str.tostring(txt, format.mintick) + “)”


    _label_txt(level, price) =>

      l = levelsFormat == “Values” ? str.tostring(level) : str.tostring(level * 100) + “%”

      (levels ? l : “”) + (prices ? _wrap(price) : “”)


    _crossing_level(series float sr, series float r) =>

      (r > sr and r < sr[1]) or (r < sr and r > sr[1])


    processLevel(bool show, float value, color colorL, line lineIdOther, int lineWidth) =>

      float m = value

      r = startPrice + height * m

      crossed = _crossing_level(close, r)

      if show and not na(lastP)

        lineId = _draw_line(r, colorL, lineWidth)

        _draw_label(r, _label_txt(m, r), colorL)

        if crossed

          alert(“Autofib: ” + syminfo.ticker + ” crossing level ” + str.tostring(value))

        if not na(lineIdOther)

          linefill.new(lineId, lineIdOther, color = color.new(colorL, backgroundTransparency))

        lineId

      else

        lineIdOther


    // Grupisani inputi po levelima – svaki level u svom redu

    show_0 = input(true, “0”, inline=”0″, display=display.data_window)

    value_0 = input(0, “”, inline=”0″, display=display.data_window)

    color_0 = input(color.rgb(0, 0, 3), “”, inline=”0″, display=display.data_window)

    width_0 = input.int(4, “”, minval=1, maxval=5, inline=”0″, display=display.data_window)


    show_0_236 = input(false, “0.236”, inline=”0.236″, display=display.data_window)

    value_0_236 = input(0.236, “”, inline=”0.236″, display=display.data_window)

    color_0_236 = input(#f44336, “”, inline=”0.236″, display=display.data_window)

    width_0_236 = input.int(1, “”, minval=1, maxval=5, inline=”0.236″, display=display.data_window)


    show_0_382 = input(true, “0.382”, inline=”0.382″, display=display.data_window)

    value_0_382 = input(0.382, “”, inline=”0.382″, display=display.data_window)

    color_0_382 = input(color.rgb(255, 174, 0), “”, inline=”0.382″, display=display.data_window)

    width_0_382 = input.int(1, “”, minval=1, maxval=5, inline=”0.382″, display=display.data_window)


    show_0_5 = input(true, “0.5”, inline=”0.5″, display=display.data_window)

    value_0_5 = input(0.5, “”, inline=”0.5″, display=display.data_window)

    color_0_5 = input(color.rgb(255, 251, 0), “”, inline=”0.5″, display=display.data_window)

    width_0_5 = input.int(1, “”, minval=1, maxval=5, inline=”0.5″, display=display.data_window)


    show_0_618 = input(true, “0.618”, inline=”0.618″, display=display.data_window)

    value_0_618 = input(0.618, “”, inline=”0.618″, display=display.data_window)

    color_0_618 = input(color.rgb(0, 255, 242), “”, inline=”0.618″, display=display.data_window)

    width_0_618 = input.int(3, “”, minval=1, maxval=5, inline=”0.618″, display=display.data_window)


    show_0_705 = input(true, “0.705”, inline=”0.705″, display=display.data_window)

    value_0_705 = input(0.705, “”, inline=”0.705″, display=display.data_window)

    color_0_705 = input(#009688, “”, inline=”0.705″, display=display.data_window)

    width_0_705 = input.int(3, “”, minval=1, maxval=5, inline=”0.705″, display=display.data_window)


    show_0_786 = input(false, “0.786”, inline=”0.786″, display=display.data_window)

    value_0_786 = input(0.786, “”, inline=”0.786″, display=display.data_window)

    color_0_786 = input(#64b5f6, “”, inline=”0.786″, display=display.data_window)

    width_0_786 = input.int(1, “”, minval=1, maxval=5, inline=”0.786″, display=display.data_window)


    show_1 = input(true, “1”, inline=”1″, display=display.data_window)

    value_1 = input(1, “”, inline=”1″, display=display.data_window)

    color_1 = input(#000000, “”, inline=”1″, display=display.data_window)

    width_1 = input.int(4, “”, minval=1, maxval=5, inline=”1″, display=display.data_window)


    show_1_272 = input(false, “1.272”, inline=”1.272″, display=display.data_window)

    value_1_272 = input(1.272, “”, inline=”1.272″, display=display.data_window)

    color_1_272 = input(#f4f8f5, “”, inline=”1.272″, display=display.data_window)

    width_1_272 = input.int(1, “”, minval=1, maxval=5, inline=”1.272″, display=display.data_window)


    show_1_500 = input(false, “1.500”, inline=”1.500″, display=display.data_window)

    value_1_500 = input(1.500, “”, inline=”1.500″, display=display.data_window)

    color_1_500 = input(#f1f436, “”, inline=”1.500″, display=display.data_window)

    width_1_500 = input.int(1, “”, minval=1, maxval=5, inline=”1.500″, display=display.data_window)


    show_1_618 = input(false, “1.618”, inline=”1.618″, display=display.data_window)

    value_1_618 = input(1.618, “”, inline=”1.618″, display=display.data_window)

    color_1_618 = input(#29e6ff, “”, inline=”1.618″, display=display.data_window)

    width_1_618 = input.int(1, “”, minval=1, maxval=5, inline=”1.618″, display=display.data_window)


    show_1_705 = input(false, “1.705”, inline=”1.705″, display=display.data_window)

    value_1_705 = input(1.705, “”, inline=”1.705″, display=display.data_window)

    color_1_705 = input(#0333b4, “”, inline=”1.705″, display=display.data_window)

    width_1_705 = input.int(1, “”, minval=1, maxval=5, inline=”1.705″, display=display.data_window)


    show_2_000 = input(false, “2.000”, inline=”2.000″, display=display.data_window)

    value_2_000 = input(2.000, “”, inline=”2.000″, display=display.data_window)

    color_2_000 = input(#000000, “”, inline=”2.000″, display=display.data_window)

    width_2_000 = input.int(1, “”, minval=1, maxval=5, inline=”2.000″, display=display.data_window)


    show_2_618 = input(false, “2.618”, inline=”2.618″, display=display.data_window)

    value_2_618 = input(2.618, “”, inline=”2.618″, display=display.data_window)

    color_2_618 = input(color.rgb(81, 252, 243), “”, inline=”2.618″, display=display.data_window)

    width_2_618 = input.int(1, “”, minval=1, maxval=5, inline=”2.618″, display=display.data_window)


    show_2_705 = input(false, “2_705″, inline=”2_705”, display=display.data_window)

    value_2_705 = input(2.705, “”, inline=”2_705″, display=display.data_window)

    color_2_705 = input(color.rgb(0, 29, 124), “”, inline=”2_705″, display=display.data_window)

    width_2_705 = input.int(1, “”, minval=1, maxval=5, inline=”2_705″, display=display.data_window)


    show_neg_0_272 = input(false, “-0.272″, inline=”-0.272″, display=display.data_window)

    value_neg_0_272 = input(-0.272, “”, inline=”-0.272″, display=display.data_window)

    color_neg_0_272 = input(color.rgb(252, 176, 105), “”, inline=”-0.272″, display=display.data_window)

    width_neg_0_272 = input.int(1, “”, minval=1, maxval=5, inline=”-0.272″, display=display.data_window)


    show_neg_0_500 = input(false, “-0.500″, inline=”-0.500″, display=display.data_window)

    value_neg_0_500 = input(-0.500, “”, inline=”-0.500″, display=display.data_window)

    color_neg_0_500 = input(#81c784, “”, inline=”-0.500″, display=display.data_window)

    width_neg_0_500 = input.int(1, “”, minval=1, maxval=5, inline=”-0.500″, display=display.data_window)


    show_neg_0_618 = input(false, “-0.618″, inline=”-0.618″, display=display.data_window)

    value_neg_0_618 = input(-0.618, “”, inline=”-0.618″, display=display.data_window)

    color_neg_0_618 = input(#20ffe9, “”, inline=”-0.618″, display=display.data_window)

    width_neg_0_618 = input.int(1, “”, minval=1, maxval=5, inline=”-0.618″, display=display.data_window)


    show_neg_0_705 = input(false, “-0.705″, inline=”-0.705″, display=display.data_window)

    value_neg_0_705 = input(-0.705, “”, inline=”-0.705″, display=display.data_window)

    color_neg_0_705 = input(#002f96, “”, inline=”-0.705″, display=display.data_window)

    width_neg_0_705 = input.int(1, “”, minval=1, maxval=5, inline=”-0.705″, display=display.data_window)


    show_neg_1_000 = input(false, “-1_000″, inline=”-1_000″, display=display.data_window)

    value_neg_1_000 = input(-1.000, “”, inline=”-1_000″, display=display.data_window)

    color_neg_1_000= input(color.rgb(0, 0, 0), “”, inline=”-1_000″, display=display.data_window)

    width_neg_1_000 = input.int(1, “”, minval=1, maxval=5, inline=”-1_000″, display=display.data_window)


    show_neg_1_618 = input(false, “-1.618″, inline=”-1.618″, display=display.data_window)

    value_neg_1_618 = input(-1.618, “”, inline=”-1.618″, display=display.data_window)

    color_neg_1_618 = input(#2cf7e2, “”, inline=”-1.618″, display=display.data_window)

    width_neg_1_618 = input.int(1, “”, minval=1, maxval=5, inline=”-1.618″, display=display.data_window)


    show_neg_1_705 = input(false, “-1.705″, inline=”-1.705″, display=display.data_window)

    value_neg_1_705 = input(-1.705, “”, inline=”-1.705″, display=display.data_window)

    color_neg_1_705 = input(#003c96, “”, inline=”-1.705″, display=display.data_window)

    width_neg_1_705 = input.int(1, “”, minval=1, maxval=5, inline=”-1.705″, display=display.data_window)


    lineId0 = processLevel(show_neg_0_705, value_neg_0_705, color_neg_0_705, line(na), width_neg_0_705)

    lineId1 = processLevel(show_neg_0_618, value_neg_0_618, color_neg_0_618, lineId0, width_neg_0_618)

    lineId2 = processLevel(show_neg_0_500, value_neg_0_500, color_neg_0_500, lineId1, width_neg_0_500)

    lineId3 = processLevel(show_neg_0_272, value_neg_0_272, color_neg_0_272, lineId2, width_neg_0_272)

    lineId4 = processLevel(show_0, value_0, color_0, lineId3, width_0)

    lineId5 = processLevel(show_0_236, value_0_236, color_0_236, lineId4, width_0_236)

    lineId6 = processLevel(show_0_382, value_0_382, color_0_382, lineId5, width_0_382)

    lineId7 = processLevel(show_0_5, value_0_5, color_0_5, lineId6, width_0_5)

    lineId8 = processLevel(show_0_618, value_0_618, color_0_618, lineId7, width_0_618)

    lineId9 = processLevel(show_0_705, value_0_705, color_0_705, lineId8, width_0_705)

    lineId10 = processLevel(show_0_786, value_0_786, color_0_786, lineId9, width_0_786)

    lineId11 = processLevel(show_1, value_1, color_1, lineId10, width_1)

    lineId12 = processLevel(show_1_272, value_1_272, color_1_272, lineId11, width_1_272)

    lineId13 = processLevel(show_1_500, value_1_500, color_1_500, lineId12, width_1_500)

    lineId14 = processLevel(show_1_618, value_1_618, color_1_618, lineId13, width_1_618)

    lineId15 = processLevel(show_1_705, value_1_705, color_1_705, lineId14, width_1_705)

    lineId16 = processLevel(show_2_000, value_2_000, color_2_000, lineId15, width_2_000)

    lineId17 = processLevel(show_2_618, value_2_618, color_2_618, lineId16, width_2_618)

    lineId18 = processLevel(show_2_705, value_2_705, color_2_705, lineId17, width_2_705)

    lineId19 = processLevel(show_neg_1_000, value_neg_1_000, color_neg_1_000, lineId18, width_neg_1_000)

    lineId20 = processLevel(show_neg_1_618, value_neg_1_618, color_neg_1_618, lineId19, width_neg_1_618)

    lineId21 = processLevel(show_neg_1_705, value_neg_1_705, color_neg_1_705, lineId20, width_neg_1_705)

    #262130 quote
    Iván GonzálezIván González
    Moderator
    Legend

    Aqui tienes:

    //PRC_Auto Fib Retracement custom lines [AleksinAleksandar]
    //version = 1
    //22.06.2026
    //Ivan Gonzalez @ www.prorealcode.com
    
    DEFPARAM drawonlastbaronly = true
    
    //--- Parametros ---
    depth      = 20   // ventana de barras del ZigZag (Pine "Depth")
    reverse    = 0    // 0 = 0% en el ultimo extremo; 1 = invertido
    showLabels = 1
    
    //--- ZigZag: pivotes Donchian ---
    ph = (high = highest[depth](high))
    pl = (low  = lowest[depth](low))
    
    if ph and not pl then
       dir = 1
    elsif pl and not ph then
       dir = -1
    else
       dir = dir
    endif
    dirchanged = dir <> dir[1]
    
    if ph or pl then
       if dirchanged then
          if dir = 1 then
             $zigzag[t+1]    = highest[depth](high)
             $zigzagidx[t+1] = barindex
             t = t + 1
          elsif dir = -1 then
             $zigzag[t+1]    = lowest[depth](low)
             $zigzagidx[t+1] = barindex
             t = t + 1
          endif
       else
          if dir = 1 and highest[depth](high) > $zigzag[t] then
             $zigzag[t]    = highest[depth](high)
             $zigzagidx[t] = barindex
          elsif dir = -1 and lowest[depth](low) < $zigzag[t] then
             $zigzag[t]    = lowest[depth](low)
             $zigzagidx[t] = barindex
          endif
       endif
    endif
    
    //--- Dibujo Fibonacci del ultimo tramo ---
    if islastbarupdate and t >= 2 then
       $zigzag[0] = undefined
       
       if reverse then
          startP = $zigzag[t-1]
          endP   = $zigzag[t]
       else
          startP = $zigzag[t]
          endP   = $zigzag[t-1]
       endif
       height = endP - startP
       
       x1 = $zigzagidx[t-1]
       x2 = barindex
       
       r = startP
       drawsegment(x1, r, x2, r) coloured(0,0,0) style(line,4)
       if showLabels then
          drawtext("0% (#r#)", x2+15, r) coloured(0,0,0)
       endif
       
       r = startP + height * 0.382
       drawsegment(x1, r, x2, r) coloured(255,174,0) style(line,1)
       if showLabels then
          drawtext("38.2% (#r#)", x2+15, r) coloured(255,174,0)
       endif
       
       r = startP + height * 0.5
       drawsegment(x1, r, x2, r) coloured(255,200,0) style(line,1)
       if showLabels then
          drawtext("50% (#r#)", x2+15, r) coloured(255,200,0)
       endif
       
       r = startP + height * 0.618
       drawsegment(x1, r, x2, r) coloured(0,200,200) style(line,3)
       if showLabels then
          drawtext("61.8% (#r#)", x2+15, r) coloured(0,200,200)
       endif
       
       r = startP + height * 0.705
       drawsegment(x1, r, x2, r) coloured(0,150,136) style(line,3)
       if showLabels then
          drawtext("70.5% (#r#)", x2+15, r) coloured(0,150,136)
       endif
       
       r = startP + height
       drawsegment(x1, r, x2, r) coloured(0,0,0) style(line,4)
       if showLabels then
          drawtext("100% (#r#)", x2+15, r) coloured(0,0,0)
       endif
    endif
    
    return
    
    
    Maricarmen thanked this post
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

TradingView to ProRealTime Translation Center

New Reply
Author
author-avatar
Maricarmen @maricarmen Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Iván GonzálezIván González
3 months ago.

Topic Details
Forum: TradingView to ProRealTime Translation Center Forum
Started: 06/19/2026
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...