Página 1 de 1

Indicador Pine Script

Publicado: 16 Jun 2022 17:26
por RicoSuave
Hola, buenas, quiero ver si me pueden ayudar con un indicador que estoy haciendo en Pine Script, estoy usando una EMA de 34 periodos y el precio actual, lo que hago es graficar cuando tienen un cruce alcista y bajista entre ellos, por otro lado, tengo una tabla con las temporalidades de 5 min, 15 min, 30 min, 1 h, 4 h, D, S y M y en otra columna llamada condición binaria asigno un 1 o un 0 dependiendo del ultimo cruce de cada temporalidad ya sea alcista o bajista y al final dependiendo de los 0 y 1 convierto el binario a decimal. En lo que requiero ayuda es en que como obtener unicamente el ultimo cruce de cada temporalidad automaticamente para que se vaya colocando y actualizando en mi tabla, espero puedan ayudarme, llevo aquí unos cuantos días leyendo documentación pero no encuentro una forma adecuada

Re: Indicador Pine Script

Publicado: 16 Jun 2022 17:28
por X-Trader
Hola RicoSuave, bienvenido al Foro

¿Puedes compartir el código para poder echarle un vistazo y hacer algunas pruebas?


Saludos,
X-Trader

Re: Indicador Pine Script

Publicado: 16 Jun 2022 19:32
por RicoSuave
X-Trader escribió: 16 Jun 2022 17:28 Hola RicoSuave, bienvenido al Foro

¿Puedes compartir el código para poder echarle un vistazo y hacer algunas pruebas?
Claro, lo tengo dividido en dos indicadores distintos,

Código: Seleccionar todo

//@version=4
study(title="EMA 34 Dif con Precio", shorttitle="EMA 34 y Precio ", overlay=true)
//DECLARACION DE VARIABLES DE CRUCE
crucepositivo = 0
crucenegativo = 0


//VARIABLES DE P Y EMA 34
int precio = input(title="EMA 10", type = input.integer, defval=6)
int periodo_34 = input(title="EMA 34", type = input.integer, defval=34)

p = ema(close,precio)
e34 = ema(close,periodo_34)

//FLECHAS ALCISTAS Y BAJISTAS


bajistas = crossunder(p, e34)
alcistas = crossover(p, e34)

plotshape(bajistas, title="Bajista", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="0", size = size.small)
plotshape(alcistas, title="Alcista", location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, text="1", size = size.small)



//PLOTS QUE IMPRIMEN EL PRECIO LA EMA DE 34 TEMPORALIDADES
plot(p, color=color.red, linewidth = 3)
plot(e34, color=color.orange, linewidth = 3)

//IF QUE DA VALOR A CRUCEPOSITIVO
if ( (p[2] <= e34[2]) and (p[1] > e34[1]) )
    crucepositivo := 1
else
    crucepositivo := 0
    
//IF QUE DA VALOR A CRUCENEGATIVO    
if ( (p[2] >=e34[2]) and (p[1] <e34[1]) )
    crucenegativo := 1
else
    crucenegativo := 0
// IF QUE PERMITE MOSTRAR LA FLECHA ARRIBA    
arrowup =  if (crucepositivo)
    true
else
    false

//bgcolor(color = cross(p, e34) ? color.green : na, transp =70)    
//PLOT QUE IMPRITE LA FLECHA ARRIBA    
//plotshape(series=arrowup, style=shape.triangleup, location = location.belowbar,color = color.green, size = size.small)
bgcolor(color = crossover(p, e34) ? color.green : na, transp =70)


// IF QUE PERMITE MOSTRAR LA FLECHA ABAJO
arrowdown = if (crucenegativo)
    true
else 
    false

//bgcolor(color = cross(p, e34) ? color.red : na, transp =70)
//PLOT QUE IMPRITE LA FLECHA ABAJO
//plotshape(series=arrowdown, style=shape.triangledown, location = location.abovebar, color = color.red, transp = 5, size = size.small)
bgcolor(color = crossunder(p, e34) ? color.red : na, transp =70)

Código: Seleccionar todo


//@version=4
study("Tabla Condiciones binarias", shorttitle = " TCB", overlay = true)
//variables
crucepositivo = 0
crucenegativo = 0


//inputs que muestran las condiciones binarias
c0 = input(inline = "Condicion", type= input.integer, defval = 0, title = " 5m: ")
c1 = input(inline = "Condicion", type= input.integer, defval = 0, title = " 15m: ")
c2 = input(inline = "Condicion", type= input.integer, defval = 0, title = " 30m: ")
c3 = input(inline = "Condicion", type= input.integer, defval = 0, title = " 1h: ")
c4 = input(inline = "Condicion", type= input.integer, defval = 0, title = " 4h: ")
c5 = input(inline = "Condicion", type= input.integer, defval = 0, title = " D: ")
c6 = input(inline = "Condicion", type= input.integer, defval = 0, title = " S: ")
c7 = input(inline = "Condicion", type= input.integer, defval = 0, title = " M: ")

//tabla de 2 x 10
var table info = table.new(position.top_right, 2,10, border_width = 1)


//Función de conversión a decimal
binario(c0,c1,c2,c3,c4,c5,c6,c7) =>

    spot = c0 * pow(2,0) + c1 * pow(2,1) + c2 * pow(2,2) + c3 * pow(2,3) + c4 * pow(2,4) + c5 * pow(2,5) + c6 * pow(2,6) + c7 * pow(2,7)
    tostring(spot)
    
//variable que guarda el resultado de la funcion y manda los datos que ingrese el usuario
cd = binario( (c0), (c1), (c2), (c3), (c4), (c5), (c6), (c7) )


//condición para color verde alcitas color rojo bajistas
ca0 = (c0) > 0
ca1 = (c1) > 0
ca2 = (c2) > 0
ca3 = (c3) > 0
ca4 = (c4) > 0
ca5 = (c5) > 0
ca6 = (c6) > 0
ca7 = (c7) > 0

if barstate.islast 
    //titulos columnas
    table.cell(info, 0 ,0 , "Temporalidades", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 1 ,0 , "Condición Binaria", bgcolor= color.new(color.orange, 70), text_color = color.white )
    //Columna 1-filas
    table.cell(info, 0 ,1 , "5m", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,2 , "15m", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,3 , "30m", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,4 , "1h", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,5 , "4h", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,6 , "D", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,7 , "S", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,8 , "M", bgcolor= color.new(color.orange, 70), text_color = color.white )
    table.cell(info, 0 ,9 , "Decimal", bgcolor= color.new(color.black, 70), text_color = color.white )
    //Columna 2-filas
    table.cell(info, 1 ,1 , tostring(c0), bgcolor= ca0 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,2 , tostring(c1), bgcolor= ca1 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,3 , tostring(c2), bgcolor= ca2 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,4 , tostring(c3), bgcolor= ca3 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,5 , tostring(c4), bgcolor= ca4 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,6 , tostring(c5), bgcolor= ca5 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,7 , tostring(c6), bgcolor= ca6 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,8 , tostring(c7), bgcolor= ca7 ? color.new(color.green, 70) : color.new(color.red, 70), text_color = color.white )
    table.cell(info, 1 ,9 , cd , bgcolor= color.new(color.black, 70), text_color = color.white )

Re: Indicador Pine Script

Publicado: 17 Jun 2022 12:41
por X-Trader
Hola RicoSuave, revisando el código y la idea que planteas y, si no me equivoco, creo que el problema viene de que lo separas en dos indicadores. Recuerda que en Pine Script no se puede referenciar a otros indicadores. Por lo tanto, la solución grosso modo sería más o menos la siguiente (ojo, siempre todo desde un mismo indicador): por un lado, debes recorrer los diferentes timeframes en busca de cruces, y después, una vez almacenadas las condiciones, generar la tabla.

De todos modos este indicador que he encontrado en TradingView creo que te va a sacar de dudas:

https://www.tradingview.com/script/POZ0 ... -Strategy/

Revisa el código, verás que la idea es similar a lo que quieres hacer (aquí compara precio con media, en tu caso sería reemplazar comparaciones por cruces en el apartado llamado // Moving Average Vs Price Strategy).


Saludos,
X-Trader

Re: Indicador Pine Script

Publicado: 17 Jun 2022 22:30
por RicoSuave
X-Trader escribió: 17 Jun 2022 12:41 Hola RicoSuave, revisando el código y la idea que planteas y, si no me equivoco, creo que el problema viene de que lo separas en dos indicadores. Recuerda que en Pine Script no se puede referenciar a otros indicadores. Por lo tanto, la solución grosso modo sería más o menos la siguiente (ojo, siempre todo desde un mismo indicador): por un lado, debes recorrer los diferentes timeframes en busca de cruces, y después, una vez almacenadas las condiciones, generar la tabla.

De todos modos este indicador que he encontrado en TradingView creo que te va a sacar de dudas:

https://www.tradingview.com/script/POZ0 ... -Strategy/

Revisa el código, verás que la idea es similar a lo que quieres hacer (aquí compara precio con media, en tu caso sería reemplazar comparaciones por cruces en el apartado llamado // Moving Average Vs Price Strategy).
Muy bien, lo revisaré, me parece una muy buena opción, creo que es la clave !! muchas gracias!

Re: Indicador Pine Script

Publicado: 18 Jun 2022 21:24
por GeorgM
TradingView tiene su propio lenguaje de scripts, Pine Script, y un editor de scripts incorporado. El editor de scripts permite al usuario personalizar la visualización de los indicadores técnicos, la apariencia de las ventanas de negociación y otras características