Hola, tengo un indicador que me indica divergencias en el precio con respecto al MACD y me gustaria hacer un screener para detectar cuando la barra del histograma pasa del valor 0 a 1. Como pueden ver en la captura el indicador tiene una linea central que es 0 y cuando detecta divergencia la barra se pone en verde marcando 1, he probado hacer un screener con el sistema simplificado de Proreal pero siempre me salen todos los valores. Solo necestio que salgan los valores que a precio de cierre actual la barra haya marcado al cierre 1 no antes, exactamente el dia de cierre. Muchas gracias.
¿Qué datos devuelve el indicador? Si solo devuelve 0 o 1 o -1, puede escribir así:
a = CALL MyIndicator
screener[a]
en mi ejemplo parámetros no indicados para el indicador, si están previstos debe indicarlos. Busque CALL y encontrará las instrucciones para hacerlo.
¿Qué datos devuelve el indicador? Si solo devuelve 0 o 1 o -1, puede escribir así:
Press CTRL+C to Copy, CTRL+V to Paste
|
|
a = CALL MyIndicator
screener[a]
|
en mi ejemplo parámetros no indicados para el indicador, si están previstos debe indicarlos. Busque CALL y encontrará las instrucciones para hacerlo.
Gracias por responder, no se nada de programacion. Los datos que devuelve el indicador son esos (1,-1 ó 0), ya introduje la funcion CALL pero me da este error:
“La funcion MACD Divergencia llamada desde MiScreener devuleve 2 valores pero su codigo necesita 1”
Escribe así:
a, b = CALL MyIndicator
Se le devolverán dos valores.
Escribe así:
Se le devolverán dos valores.
¿Y el apartado screener como iria?
Screener [a] [b]
Escribe así:
Se le devolverán dos valores.
¿Y el apartado screener como iria?
Screener [a] [b]
Yo mismo me respondo seria screener [a and b]
Muchas gracias.
No sé, necesitas saber el indicador, ¿qué es exactamente? ¿Es de la biblioteca o es una parte integrada de la plataforma ProRealTime?
/// Detector de divergencias
///Por jose7674
///La variable N es el numero de barras hacia atras que utilizamos para encontrar una divergencia
///MACD 5-131
miMACD = exponentialAverage[5](close) - exponentialAverage[13](close)
cero = 0
////Comenzamos el detector
IF (BarIndex > 10+1+20) THEN
IF (miMACD[1]>miMACD AND miMACD[1]>miMACD[2]) THEN
extremum2=miMACD[1]
extremum1=highest[20](miMACD)
preciomax2=close[1]
preciomax=Highest[20](close)
ENDIF
IF (miMACD[1]<miMACD AND miMACD[1]<miMACD[2]) THEN
extremum22=miMACD[1]
extremum11=lowest[20](miMACD)
preciomin2=close[1]
preciomin=lowest[20](close)
ENDIF
REM aseguramos que el maximo actual es inferior al maximo de las N barras previas
IF(extremum2<extremum1 AND preciomax2>preciomax[1]) THEN
signal = -1
ELSE
signal = 0
ENDIF
IF(extremum22>extremum11 AND preciomin2<preciomin[1]) THEN
signal = 1
ENDIF
ENDIF
Return cero as "0", signal as "Divergencia"
/// Si Divergencia = 1, hay divergencia alcista. Si D =-1, divergencia bajista
///FIN
Este es el codigo del indicador, una vez hecho se le aplica en configuracion la caracteristica de que se vea como histograma.
Tienes que exigir “CALL” así:
ignored,a = CALL MyIndicator
porque el primer valor devuelto siempre es CERO y no importa. Es el segundo valor que es importante y debe usarlo con el screener de este modo:
SCREENER[a](a AS "Divergencia")
Me va bien. Molte grazie per il tuo tempo.