Screener para buscar un máximo tras inversión de tendencia
Forums › ProRealTime foro Español › Soporte ProScreener › Screener para buscar un máximo tras inversión de tendencia
- This topic has 21 replies, 3 voices, and was last updated 7 months ago by Maricarmen.
-
-
12/21/2023 at 4:34 PM #225580
Hola.
No tengo conocimientos suficientes para programar los códigos de un screener que estoy buscando y que consiste en lo siguiente: busco, en un horizonte semanal, un screener que me localice el primer máximo más alto que el máximo anterior, tras una caída del valor en las 40 a 48 semanas previas en las que haya marcado un mínimo anual entre la semana 40-48.
Si no se puede poner un rango (40-48 semanas para el mínimo anual) podemos dejarlo en 46 semanas.
Tras ese mínimo anual el valor tiene que recuperarse y marcar un máximo superior al máximo anterior que se produjo durante la fase de caída.
Espero haber sido suficientemente claro y agradezco cualquier ayuda.
Saludos
12/26/2023 at 12:02 PM #225707¿Puedes dar un ejemplo numérico de lo que quieres?
12/26/2023 at 4:57 PM #225710Hola.
Supongamos un valor que lleva 15 meses bajando en el gráfico semanal. Su último mínimo, en mayo de 2023, ha sido 8,59
A partir de ahí cambia de tendencia y a mediados de julio de 2023 la EMA13 cruza al alza la EMA26 y poco después el precio se coloca por encima de ambas EMAs.
En septiembre de 2023 registra un máximo de 13,08 valor que está por encima del último máximo que fue 11,84 alcanzado a mediados de abril de 2023. El periodo entre ambos máximos (abril y sept 2023) fue de unas 20 semanas.
Aunque difiere ligeramente de lo planteado inicialmente, el screener debería buscar el máximo de 13,08 (en plena recuperación o tendencia alcista) que está por encima del máximo marcado en la tendencia bajista y que está en un periodo de unas 20 semanas previas.
Espero haberme explicado mejor con los números. Gracias.
12/27/2023 at 10:41 AM #225721La descripción general es mejor, pero necesito saber números precisos, 15 meses está bien, pero no puedo tomar meses individuales como referencia, tienes que decirme cuántas semanas (o barras) tengo que retroceder para verificar el tendencia bajista y a partir de cuántas semanas la tendencia debe haberse vuelto alcista nuevamente.
Si indico SEPTIEMBRE y ABRIL de 2023, el screener solo funcionará ahora, no siempre.
12/27/2023 at 4:49 PM #225737Lo primero gracias por tu interés y esfuerzo.
Entiendo tu planteamiento y lo veo lógico. Vamos a ver si a la tercera va la vencida y soy capaz de precisar:
– Condición 1: que el gráfico lleve 40 semanas bajando en el gráfico semanal.
-Condición 2: que se produzca un mínimo, dentro de dicha tendencia bajista, hace al menos 24 semanas.
– Condición 3: cruce al de la EMA13 sobre la EMA26 al menos hace 20 semanas.
– Condición 4: Hace al menos 32 semanas tuvo lugar el último máximo (M1) dentro de la tendencia bajista.
– Condición 5: Hace 12 semanas, y ya dentro de la tendencia alcista, se produce un máximo (M2) más alto que M1.
– Condición 6: la diferencia de tiempo entre M1 y M2 debe ser al menos de 20 semanas.
Si alguna o varias condiciones no puede ser “al menos”, al indicar semanas, se sustituye por semanas sin más, eliminando “al menos”.
De nuevo gracias.
12/28/2023 at 5:35 PM #225776“Condición 5: Hace 12 semanas, y ya dentro de la tendencia alcista, se produce un máximo (M2) más alto que M1”
¿Cómo debo determinar el final de la tendencia bajista y el comienzo de la alcista, con el cruce alcista de las dos medias exponenciales?
12/28/2023 at 5:51 PM #22577701/16/2024 at 5:31 PM #226434Ahi esta:
123456789101112131415161718192021222324252627282930N1 = 40N2 = 12N3 = 16N4 = 20P1 = 13P2 = 26LL = lowest[N1](low)Ema13 = average[P1](close)Ema26 = average[P2](close)HH1 = highest[N1](high)HH2 = highest[N2](high)M1 = 0M2 = 0FOR i = 0 TO (N1 - 1)IF (high[i] = HH2) AND M2 = 0 AND M1 = 0 THENM2 = i + 1ENDIFIF (high[i] = HH1) AND M2 > 0 AND M1 = 0 THENM1 = i + 1breakENDIFNEXTc1 = close < close[N1]c2 = (LL = lowest[N3](low[N1 - N3])) AND (LL < lowest[N1 - N3 - 1](low))c3 = (summation[N4](Ema13 > Ema26) = N4)c4 = (HH1 >= highest[N1 - N2](high[N2]))c5 = HH2 > HH1c6 = (M1 - M2) >= N4Cond = c1 AND c2 AND c3 AND c4 AND c5 AND c6SCREENER[Cond]Me gustaría señalar que no pude encontrar ninguna acción con los parámetros que indicaste.
01/16/2024 at 6:32 PM #22643701/17/2024 at 9:58 AM #226455Hola.
Estoy dándole vueltas a una variante que no sé si se podrá hacer.
Supongamos que tenemos un máximo/pico reciente (máximo1) y quisiera buscar valores con dicho máximo más alto que el último máximo (máximo2) en un periodo dado.
Así:
period=50
Maximo1=highest[period](close)
Maximo2=???
No sé cómo poner el máximo anterior al actual en dicho periodo.
Agradecería la ayuda. Un saludo.
01/18/2024 at 6:49 PM #226548Este es el código.
Al final Máximo1 tendrá el valor mayor y Máximo2 el menor de los dos:12345678910111213141516171819202122232425Period = 50Maximo1 = 0Maximo2 = 0FOR i = (Period - 1) DOWNTO 0IF Maximo1 = 0 THENMaximo1 = high[i]Maximo2 = high[i]ENDIFIF high[i] < high[i+1] THENIF high[i+1] > Maximo1 THENMaximo2 = Maximo1Maximo1 = high[i+1]ELSIF high[i+1] > Maximo2 THENMaximo2 = high[i+1]ENDIFENDIFIF i = 0 THENIF high[i] > Maximo1 THENMaximo2 = Maximo1Maximo1 = high[i]ELSIF high[i] > Maximo2 THENMaximo2 = high[i]ENDIFENDIFNEXTEste es el mismo código colocado en un indicador, que imprime un segmento entre los dos valores:
123456789101112131415161718192021222324252627282930313233343536DEFPARAM DrawOnLastBarOnly = truePeriod = 50Maximo1 = 0Maximo2 = 0FOR i = (Period - 1) DOWNTO 0IF Maximo1 = 0 THENMaximo1 = high[i]Maximo2 = high[i]Bar1 = BarIndex[i]Bar2 = BarIndex[i]ENDIFIF high[i] < high[i+1] THENIF high[i+1] > Maximo1 THENBar2 = Bar1Maximo2 = Maximo1Maximo1 = high[i+1]Bar1 = BarIndex[i+1]ELSIF high[i+1] > Maximo2 THENMaximo2 = high[i+1]Bar2 = BarIndex[i+1]ENDIFENDIFIF i = 0 THENIF high[i] > Maximo1 THENBar2 = Bar1Maximo2 = Maximo1Maximo1 = high[i]Bar1 = BarIndex[i]ELSIF high[i] > Maximo2 THENMaximo2 = high[i]Bar2 = BarIndex[i]ENDIFENDIFNEXTDrawSegment(Bar1,Maximo1,Bar2,Maximo2) style(line,5) coloured("Fuchsia")RETURN01/18/2024 at 7:21 PM #22655303/23/2024 at 2:20 PM #230321Se podría hacer dicho segmento para mínimos.
Gracias,
03/23/2024 at 3:43 PM #230323Ahi esta:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980DEFPARAM DrawOnLastBarOnly = truePeriod = 50Maximo1 = 0Maximo2 = 0Minimo1 = 0Minimo2 = 0// MaximoFOR i = (Period - 1) DOWNTO 0IF Maximo1 = 0 THENMaximo1 = high[i]Maximo2 = high[i]Bar1 = BarIndex[i]Bar2 = BarIndex[i]ENDIFIF high[i] < high[i+1] THENIF high[i+1] > Maximo1 THENBar2 = Bar1Maximo2 = Maximo1Maximo1 = high[i+1]Bar1 = BarIndex[i+1]ELSIF high[i+1] > Maximo2 THENMaximo2 = high[i+1]Bar2 = BarIndex[i+1]ENDIFENDIFIF i = 0 THENIF high[i] > Maximo1 THENBar2 = Bar1Maximo2 = Maximo1Maximo1 = high[i]Bar1 = BarIndex[i]ELSIF high[i] > Maximo2 THENMaximo2 = high[i]Bar2 = BarIndex[i]ENDIFENDIFNEXTdifMax = (Maximo2 - Maximo1) / (max(1,Bar2 - Bar1))FutBars = (Barindex + 1) - Bar2FutMax = Maximo2 + (difMax * FutBars)// MinimoFOR i = (Period - 1) DOWNTO 0IF Minimo1 = 0 THENMinimo1 = low[i]Minimo2 = low[i]BarX = BarIndex[i]BarY = BarIndex[i]ENDIFIF low[i] > low[i+1] THENIF low[i+1] < Minimo1 THENBarY = BarXMinimo2 = Minimo1Minimo1 = low[i+1]BarX = BarIndex[i+1]ELSIF low[i+1] < Minimo2 THENMinimo2 = low[i+1]BarY = BarIndex[i+1]ENDIFENDIFIF i = 0 THENIF low[i] < Minimo1 THENBarY = BarXMinimo2 = Minimo1Minimo1 = high[i]BarX = BarIndex[i]ELSIF low[i] < Minimo2 THENMinimo2 = low[i]BarY = BarIndex[i]ENDIFENDIFNEXTdifMin = (Minimo2 - Minimo1) / (max(1,BarY - BarX))FutBars = (Barindex + 1) - BarYFutMin = Minimo2 + (difMin * FutBars)////DrawSegment(Bar1,Maximo1,Bar2,Maximo2) style(line,5) coloured("Fuchsia")//DrawSegment(BarX,Minimo1,BarY,Minimo2) style(line,5) coloured("Cyan")DrawSegment(Bar1,Maximo1,BarIndex + 1,FutMax) style(line,5) coloured("Fuchsia")DrawSegment(BarX,Minimo1,BarIndex + 1,FutMin) style(line,5) coloured("Cyan")RETURNSi no desea que los segmentos se extiendan, debe eliminar las dos barras de comentarios de las 2 primeras líneas de DRAWSEGMENT y colocarlas en las dos líneas siguientes.
03/23/2024 at 5:22 PM #230329Muchas gracias por tu respuesta tan rápida. Supera expectativas
-
AuthorPosts
Find exclusive trading pro-tools on