CONVERSION INDICADOR TRADINGVIEW:”Trend Lines “

Forums ProRealTime foro Español Soporte ProBuilder CONVERSION INDICADOR TRADINGVIEW:”Trend Lines “

  • This topic has 1 reply, 2 voices, and was last updated 4 days ago by avatarIván.
Viewing 2 posts - 1 through 2 (of 2 total)
  • #240137
    Fr7

    Solicito, si es posible, convertir el indicador adjunto:https://www.tradingview.com/script/vE8YNVgM-Trend-Lines-LuxAlgo/

    El indicador “Líneas de tendencia” detecta y resalta las líneas de tendencia relevantes en el gráfico del usuario, al mismo tiempo que lo mantiene libre de desorden en la medida de lo posible.

    El indicador está pensado para su uso en tiempo real e incluye varios filtros, así como la capacidad de estimar los ángulos de las líneas de tendencia.

    A ver si Iván el moderador tiene un hueco libre y lo puede traducir.
    Muchas gracias.

    // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
    // © LuxAlgo

    //@version=5
    indicator(“Trend Lines [LuxAlgo]”, shorttitle= “LuxAlgo – Trend Lines”, max_lines_count = 500, max_labels_count = 500, overlay = true)

    //——————————————————————————
    //Settings
    //—————————————————————————–{
    NN = “Disabled”
    AB = “Point A – Point B”
    AC = “Point A – Current bar”
    length = input.int ( 50 , minval = 2 , group= “Swings” )
    toggle = input.string( NN , ‘Check breaks between:’ , options= [ AB, AC, NN ] , group= “Trendline validation” )
    source = input.string( “close” , ‘source (breaks)’ , options= [“close”, “H/L”] , group= “Trendline validation” )
    count = input.int ( 3 , ‘Minimal bars’ , minval = 0 , group= “Trendline breaks”
    , tooltip= ‘Uninterrupted Trendline for at least x bars’)
    showA = input.bool ( true , ‘show Angles’ , group= “Angles” )
    ratio = input.float ( 3 , ‘Ratio X-Y axis’ , step =0.1 , group= “Angles” )
    anglA = input.float ( 0.1 ,’Only Trendlines between:’, minval =0.1, inline= ‘angle’, group= “Angles” )
    anglB = input.float ( 90 , ‘ – ‘ , minval =0.1, inline= ‘angle’, group= “Angles” )
    upCss = input.color (#2962ff, ‘Up’ , group= “Colours” )
    dnCss = input.color (#f23645, ‘Down’ , group= “Colours” )

    //—————————————————————————–}
    //Variables
    //—————————————————————————–{
    //Downtrendline
    var int phx1 = na
    var float phslope = na
    var float phy1 = na
    var float upper = na
    var float plotH = na
    var bool isOnH = false

    //Uptrendline
    var int plx1 = na
    var float plslope = na
    var float ply1 = na
    var float lower = na
    var float plotL = na
    var bool isOnL = false

    var line testLine = line.new(na, na, na, na, color=color.new(color.blue, 100))

    //—————————————————————————–}
    //Calculations
    //—————————————————————————–{
    n = bar_index
    bg = chart.bg_color
    fg = chart.fg_color
    ph = ta.pivothigh (length, length)
    pl = ta.pivotlow (length, length)
    bars = 500 , height = bars / ratio
    Xaxis = math.min(math.max(1, n), bars)
    Yaxis = ta.highest(Xaxis) – ta.lowest(Xaxis)
    srcBl = source == “close” ? close : high
    srcBr = source == “close” ? close : low

    //—————————————————————————–}
    //Function
    //—————————————————————————–{
    calculate_slope(x1, x2, y1, y2) =>
    diffX = x2 – x1, diffY = y2 – y1
    diffY_to_Yaxis = Yaxis / diffY
    normalised_slope = (height / diffY_to_Yaxis) / diffX
    slope = diffY / diffX
    angle = math.round(math.atan(normalised_slope) * 180 / math.pi, 2)
    [normalised_slope, slope, angle]

    //—————————————————————————–}
    //Execution
    //—————————————————————————–{
    if not na(ph)
    if ph < phy1
    [normalised_slope, slope, angle]= calculate_slope(phx1, n-length, phy1, ph)
    testLine.set_xy1(phx1, phy1), testLine.set_xy2(n, ph + slope * length)
    src = source == “close” ? close : high, max_bars_back(src, 2000)
    isOnH := false
    broken = false
    if math.abs(angle) > anglA and math.abs(angle) < anglB
    if toggle != NN
    for i = (toggle == AB ? length : 0) to n – phx1
    if src[i] > testLine.get_price(n – i)
    broken := true
    break
    if not broken
    phslope := slope, isOnH := true, upper := ph + slope * length
    line.new(phx1, phy1, n, ph + slope * length
    , color= dnCss, style= line.style_dotted)
    if showA
    label.new(phx1, phy1, text= str.tostring(angle)
    , style = label.style_label_down
    , color = color.new(bg, 100)
    , textcolor = dnCss)

    phy1 := ph
    phx1 := n-length

    upper += phslope
    plotH := not na(ph) and ta.change(phslope) ? na : srcBl[1] > upper[1] ? na : upper
    bs_H = ta.barssince (na(plotH ))

    if not na(pl)
    if pl > ply1
    [normalised_slope, slope, angle]= calculate_slope(plx1, n-length, ply1, pl)
    testLine.set_xy1(plx1, ply1), testLine.set_xy2(n, pl + slope * length)
    src = source == “close” ? close : low , max_bars_back(src, 2000)
    isOnL := false
    broken = false
    if angle > anglA and angle < anglB
    if toggle != NN
    for i = (toggle == AB ? length : 0) to n – plx1
    if src[i] < testLine.get_price(n – i)
    broken := true
    break
    if not broken
    plslope := slope, isOnL := true, lower := pl + slope * length
    line.new(plx1, ply1, n, pl + slope * length
    , color= upCss, style= line.style_dotted)
    if showA
    label.new(plx1, ply1, text= str.tostring(angle)
    , style = label.style_label_up
    , color = color.new(bg, 100)
    , textcolor = upCss)

    ply1 := pl
    plx1 := n-length

    lower += plslope
    plotL := not na(pl) and ta.change(plslope) ? na : srcBr[1] < lower[1] ? na : lower
    bs_L = ta.barssince (na(plotL ))

    //—————————————————————————–}
    //Plots
    //—————————————————————————–{
    plot(plotH, ‘Down Trendline’
    , dnCss
    , 1
    , plot.style_linebr)

    plot(plotL, ‘Up Trendline’
    , upCss
    , 1
    , plot.style_linebr)

    plotshape(
    bs_H > count and srcBl > upper and srcBl[1] <= upper[1]
    , ‘Bullish break’
    , shape.labelup
    , location.belowbar
    , dnCss
    , size = size.tiny)

    plotshape(
    bs_L > count and srcBr < lower and srcBr[1] >= lower[1]
    , ‘Bearish break’
    , shape.labeldown
    , location.abovebar
    , upCss
    , size = size.tiny)

    //—————————————————————————–}

    #240301

    Buenas! Aún me falta pulirlo un poco pero ya se parece bastante.

    1 user thanked author for this post.
    avatar Fr7
Viewing 2 posts - 1 through 2 (of 2 total)

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