Niveles Clave + Tendencia Ajustable Trading view

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #245020 quote
    Ibe9821
    Participant
    New
    //@version=5
    indicator("Niveles Clave + Tendencia Ajustable", overlay=true)
    
    // Inputs para personalización
    smma_length = input.int(200, "Longitud SMMA", minval=1)
    precio_formato = input.string("#.#####", "Formato de precio")
    mostrar_dia_anterior = input.bool(true, "Mostrar niveles del día anterior")
    mostrar_4h = input.bool(true, "Mostrar niveles de 4h")
    mostrar_smma = input.bool(true, "Mostrar SMMA")
    
    color_max_dia = input.color(color.red, "Color máximo día anterior")
    color_min_dia = input.color(color.green, "Color mínimo día anterior")
    color_max_4h = input.color(color.orange, "Color máximo 4h")
    color_min_4h = input.color(color.blue, "Color mínimo 4h")
    color_smma = input.color(color.purple, "Color SMMA")
    color_alcista = input.color(color.green, "Color tendencia alcista")
    color_bajista = input.color(color.red, "Color tendencia bajista")
    
    // Inputs para grosor de líneas
    grosor_max_dia = input.int(1, "Grosor línea máximo día anterior", minval=1, maxval=4)
    grosor_min_dia = input.int(1, "Grosor línea mínimo día anterior", minval=1, maxval=4)
    grosor_max_4h = input.int(1, "Grosor línea máximo 4h", minval=1, maxval=4)
    grosor_min_4h = input.int(1, "Grosor línea mínimo 4h", minval=1, maxval=4)
    grosor_smma = input.int(2, "Grosor línea SMMA", minval=1, maxval=4)
    
    // Inputs para posiciones
    pos_x_max_dia = input.int(0, "Posición X máximo día anterior", minval=-500, maxval=500)
    pos_y_max_dia = input.float(0.0, "Posición Y máximo día anterior", minval=-10, maxval=10, step=0.1)
    pos_x_min_dia = input.int(0, "Posición X mínimo día anterior", minval=-500, maxval=500)
    pos_y_min_dia = input.float(0.0, "Posición Y mínimo día anterior", minval=-10, maxval=10, step=0.1)
    pos_x_max_4h = input.int(0, "Posición X máximo 4h", minval=-500, maxval=500)
    pos_y_max_4h = input.float(0.0, "Posición Y máximo 4h", minval=-10, maxval=10, step=0.1)
    pos_x_min_4h = input.int(0, "Posición X mínimo 4h", minval=-500, maxval=500)
    pos_y_min_4h = input.float(0.0, "Posición Y mínimo 4h", minval=-10, maxval=10, step=0.1)
    pos_x_smma = input.int(0, "Posición X SMMA", minval=-500, maxval=500)
    pos_y_smma = input.float(0.0, "Posición Y SMMA", minval=-10, maxval=10, step=0.1)
    pos_x_tendencia = input.int(0, "Posición X Tendencia", minval=-500, maxval=500)
    pos_y_tendencia = input.float(0.0, "Posición Y Tendencia", minval=-10, maxval=10, step=0.1)
    
    // Cálculos
    prev_high = request.security(syminfo.tickerid, "D", high[1])
    prev_low = request.security(syminfo.tickerid, "D", low[1])
    last_4h_high = request.security(syminfo.tickerid, "240", high[1])
    last_4h_low = request.security(syminfo.tickerid, "240", low[1])
    
    smma = ta.sma(close, smma_length)
    smma := na(smma[1]) ? smma : (smma[1] * (smma_length - 1) + close) / smma_length
    
    // Función para crear líneas y etiquetas
    f_crear_linea_y_etiqueta(precio, color_linea, texto, mostrar, pos_x, pos_y, grosor) =>
    if mostrar and barstate.islast
    line.new(bar_index - 500, precio, bar_index, precio, color=color_linea, extend=extend.right, width=grosor)
    label.new(bar_index + pos_x, precio * (1 + pos_y), texto + str.tostring(precio, precio_formato),
    color=color_linea, textcolor=color.white, style=label.style_label_center)
    
    // Dibujar líneas y etiquetas
    f_crear_linea_y_etiqueta(prev_high, color_max_dia, "Máx Día Anterior: ", mostrar_dia_anterior, pos_x_max_dia, pos_y_max_dia, grosor_max_dia)
    f_crear_linea_y_etiqueta(prev_low, color_min_dia, "Mín Día Anterior: ", mostrar_dia_anterior, pos_x_min_dia, pos_y_min_dia, grosor_min_dia)
    f_crear_linea_y_etiqueta(last_4h_high, color_max_4h, "Máx 4h: ", mostrar_4h, pos_x_max_4h, pos_y_max_4h, grosor_max_4h)
    f_crear_linea_y_etiqueta(last_4h_low, color_min_4h, "Mín 4h: ", mostrar_4h, pos_x_min_4h, pos_y_min_4h, grosor_min_4h)
    
    // Dibujar SMMA
    plot(mostrar_smma ? smma : na, color=color_smma, title="SMMA", linewidth=grosor_smma)
    
    // Etiqueta para SMMA
    if mostrar_smma and barstate.islast
    label.new(bar_index + pos_x_smma, smma * (1 + pos_y_smma), "SMMA " + str.tostring(smma_length) + ": " + str.tostring(smma, precio_formato),
    color=color_smma, textcolor=color.white, style=label.style_label_center)
    
    // Tendencia
    tendencia_alcista = close > smma
    tendencia_bajista = close < smma
    
    // Leyenda de tendencia ajustable
    if barstate.islast
    label.new(
    bar_index + pos_x_tendencia,
    high * (1 + pos_y_tendencia),
    text="Tendencia: " + (tendencia_alcista ? "ALCISTA" : "BAJISTA"),
    color=tendencia_alcista ? color_alcista : color_bajista,
    textcolor=color.white,
    style=label.style_label_center,
    size=size.large
    )
    #245029 quote
    Iván González
    Moderator
    Master

    Buenos días! Aquí tienes el código.
    Ten en cuenta que prorealtime sólo te deja visualizar los gráficos en el timeframe menor que tenga el código (y que sea múltiplo de los superiores).
    En este caso, sólo lo podrás visualizar en TF de 4 horas o menos.

    //-----------------------------------------//
    //PRC_Niveles clave
    //version = 0
    //19.03.2025
    //Iván González @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    //-----------------------------------------//
    // Inputs
    //-----------------------------------------//
    defparam drawonlastbaronly=true
    smaLength=200
    mostrarDiaAnterior=1
    mostrar4H=1
    mostrarSma=1
    //-----------------------------------------//
    // Calculos en timeframe diario
    //-----------------------------------------//
    timeframe(daily,updateonclose)
    //----- media movil
    if barindex<=smaLength+1 then
    sma=average[smaLength](close)
    else
    sma=(sma[1]*(smaLength-1)+close)/smaLength
    endif
    //----- tendencia
    once tendencia=1
    
    if close>sma then
    tendencia=1
    else
    tendencia=-1
    endif
    //----- máximo/minimo dia anterior
    prevHigh=high[1]
    prevLow=low[1]
    //-----------------------------------------//
    // Calculos en timeframe 4H
    //-----------------------------------------//
    timeframe(4h)
    //----- máximo/minimo 4H antes
    last4hHigh=high[1]
    last4hLow=low[1]
    //-----------------------------------------//
    // Salida
    //-----------------------------------------//
    // Dibujar la media
    if mostrarSma then
    ssma=sma
    else
    ssma=undefined
    endif
    // Mostrar niveles
    if islastbarupdate then
    
    if mostrarDiaAnterior then
    drawhline(prevHigh)coloured("red")
    drawhline(prevLow)coloured("green")
    endif
    
    if mostrar4H then
    drawhline(last4hHigh)coloured("orange")
    drawhline(last4hLow)coloured("blue")
    endif
    
    if tendencia=1 then
    drawtext("Tendencia Alcista",-100,-100)anchor(topright,xshift,yshift)coloured("green")
    drawrectangle(-180,-80,-20,-120)anchor(topright,xshift,yshift)coloured("green")fillcolor("green",40)
    else
    drawtext("Tendencia Bajista",-100,-100)anchor(topright,xshift,yshift)coloured("red")
    drawrectangle(-180,-80,-20,-120)anchor(topright,xshift,yshift)coloured("red")fillcolor("red",40)
    endif
    
    endif
    //-----------------------------------------//
    return ssma as "SMMA" coloured("purple")style(line,2)
    
    robertogozzi thanked this post
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Niveles Clave + Tendencia Ajustable Trading view


ProBuilder: Indicadores y Herramientas

New Reply
Author
author-avatar
Ibe9821 @ibe9821 Participant
Summary

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

Topic Details
Forum: ProBuilder: Indicadores y Herramientas
Language: Spanish
Started: 03/18/2025
Status: Active
Attachments: 2 files
Logo Logo
Loading...