TradingView
Aporio
16 de Sep. de 2019 20:28

Combinar dos indicadores CCI + RSI 

STOXX 50TVC

Descripción

Hola, intento combinar el cci + rsi en un mismo indicador pero no me lo pinta. Puede alguien echarle un vistazo?
Saludos
Luis
//RSI
study(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2)
//CCI
study(title="Commodity Channel Index", shorttitle="CCI", format=format.price, precision=2)
//RSI
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//CCI
length = input(20, minval=1)
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))

plot(rsi, color=color.purple)
plot(cci, color=color.olive)
//rsi
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
//cci
band1 = hline(175, color=color.gray, linestyle=hline.style_dashed)
band0 = hline(-175, color=color.gray, linestyle=hline.style_dashed)
fill(band1, band0, color=color.olive)
Comentarios
NovatoMaximo
Así de primeras veo varios errores, por ejemplo el "study" sólo se declara una vez ( es algo así como el encabezado ).
Por otra parte no puedes mencionar varias veces la misma variable por ejemplo src, llámalo de diferente manera por ejemplo srcRSI y srcCCI, si ambas variables tienen lo mismo puedes mencionarlo una vez
Aporio
@NovatoMaximo, Gracias, voy a probar. Un saludo
Aporio
@NovatoMaximo, Nada, hice los retoques que me dijiste y sigue sin pintar el CCI y el RSI en el mismo indicador. Mira como quedó
//RSI
study(title="RSI+CCI", shorttitle="RSI+CCI", format=format.price, precision=2)

//RSI
srcRSI = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//CCI
length = input(20, minval=1)
srcCCI = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))

plot(rsi, color=color.purple)
plot(cci, color=color.olive)
//rsi
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
//cci
band1 = hline(175, color=color.gray, linestyle=hline.style_dashed)
band0 = hline(-175, color=color.gray, linestyle=hline.style_dashed)
fill(band1, band0, color=color.olive)
NovatoMaximo
@Aporio, Así a groso modo tienes algunas variables aún repetidas como band1.
El mejor indicador en bolsa es el no invertir en bolsa, he probado cientos de indicadores y algunos los he creado yo, pero no hay manera

Aquí tienes el código, Saludos

study(title="CCI+RSI", shorttitle="CCI+RSI", format=format.price, precision=2)

// CCI
length = input(20, minval=1)
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
plot(cci, color=color.olive)
band1 = hline(100, color=color.gray, linestyle=hline.style_dashed)
band0 = hline(-100, color=color.gray, linestyle=hline.style_dashed)
fill(band1, band0, color=color.olive)
// FIN CCI

// RSI
srcRSI = close, lenRSI = input(14, minval=1, title="Length")
up = rma(max(change(srcRSI), 0), lenRSI)
down = rma(-min(change(srcRSI), 0), lenRSI)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=color.purple)
bandRSI1 = hline(70)
bandRSI0 = hline(30)
fill(bandRSI1, bandRSI0, color=color.purple, transp=90)
// FIN RSI
Aporio
@NovatoMaximo, Te agradezco te tomes la molestia de ayudarme. He copiado el código y lo he guardado. Me da un error "error de compilación".
No crees que debe ser algo de las escalas? . Igual, diciendo al código que debe separar los indicadores, uno que lleve los niveles a la derecha y el otro los niveles a la izquierda y que pinte cada uno en su propia escala.
Recuerdo que en lenguajes como el afl, que alguna vez lo ví, había que decirle lo de su propia escala.
Saludos
Luis
NovatoMaximo
@Aporio, prueba con este otro.

study(title="CCI+RSI", shorttitle="CCI+RSI")

// CCI
length = input(20, minval=1)
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
plot(cci, color=olive)
band1 = hline(100, color=gray)
band0 = hline(-100, color=gray)
fill(band1, band0, color=olive)
// FIN CCI

// RSI
srcRSI = close, lenRSI = input(14, minval=1, title="Length")
up = rma(max(change(srcRSI), 0), lenRSI)
down = rma(-min(change(srcRSI), 0), lenRSI)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=purple)
bandRSI1 = hline(70)
bandRSI0 = hline(30)
fill(bandRSI1, bandRSI0, color=purple, transp=90)
// FIN RSI
Aporio
@NovatoMaximo, Gracias por tu ayuda. Mira que tengo ganas de instalarlo por el tiempo que eché y fuí incapaz! Estoy de viaje y regreso el jueves. Hasta entonces no podré ver si funciona. Repito, gracias!
Un saludo
Luis
Aporio
@NovatoMaximo, hola , de vuelta de viaje, lo primero que he hecho ha sido instalar el indicador. Sigue sin verse. No sé si estoy haciendo algo mal.
No podrías instalarlo tú en tu tradingview para comprobarlo?
No crees que se podría poner la escala de un indicador a la derecha y otro a la izquierda?. O si existe la función en su propia escala?
Gracias y siento dar tantas vueltas.
Un saludo
Luis
Aporio
@NovatoMaximo, Veo en el editor pine en color rojo estos errores
Errores
Line9: Undeclared indentifier olive;
Line10: Undeclared indentifier gray;
Line11: Undeclared indentifier gray;
Line12; Undeclared indentifier band1;
Line12: Undeclared indentifier band0;
Line12: Undeclared indentifier olive;
Line20: Undeclared indentifier purple;
Line23: Undeclared indentifier purple;
Más