Cómo pintar líneas de tendencia en Amibroker

por | Oct 15, 2023 | Amibroker, Premium, Sistemas | 0 Comentarios

Estoy convencido que pensabas que las líneas de tendencia las tenías que pintar a mano (eso pensaba yo hasta hace muy poco).

En el artículo de hoy vamos a ver la base para programar en Amibroker líneas de tendencia y directrices de forma automática.

Esto nos va a permitir disponer de indicadores visuales que nos adviertan de una ruptura de una directriz o incluso programar sistemas basados en la superación de directrices. Para ello vamos a repasar primero el concepto de directriz tanto alcista como bajista:

  • Una directriz bajista es una línea recta formada por al menos 2 máximos decrecientes, un mayor número de máximos que pasen por la recta, así como la duración de la misma le dará mayor fiabilidad a la linea de tendencia. La ruptura del precio sobre una directriz bajista implica unas altas posibilidades del inicio de un tramo alcista.
  • En cambio, la directriz alcista está formada por una sucesión de al menos 2 mínimos crecientes. De igual modo más de 2 puntos en la recta y una mayor extensión de la misma implica mayor fiabilidad de la estrategia.

En la siguiente imagen vamos a ver un ejemplo de directrices alcistas (en rojo) y bajistas (en verde) a partir del indicador que vamos a tratar de programar en este artículo.

Para programar el código vamos a ver cómo definir de forma matemática una recta obteniendo una ecuación en la que podamos obtener un precio a partir del número de barra en el que nos encontremos.

Para determinar una recta necesitamos al menos dos puntos que podemos definir como P1 a partir de sus coordenadas (x1,y1) y P2 (x2,y2). En nuestro caso recordamos que x1 se referirá al barindex en el punto P1 y y1 el valor del precio en ese punto.

Por otra parte, la recta podrá tener mayor o menor inclinación, esto nos lo determina la pendiente m. Calculada como:

Una pendiente positiva implica que la recta está creciendo, una pendiente negativa es una recta decreciendo. Una pendiente igual a cero implica una recta horizontal (soporte o resistencia).

Finalmente, si tenemos los dos puntos calculados podemos obtener una ecuación que nos permita calcular el valor de la recta en cualquier barra indicada, para eso utilizaremos la siguiente forma:

O lo que es lo mismo:

Donde x sería el número de barra e y el valor que tendría la recta en esta barra.

Ahora vamos al desarrollo del código en AFL.

En primer lugar, tendremos que ser capaces de determinar los máximos y mínimos a partir de los cuales podamos calcular las directrices.

Para ello, vamos a establecer una variable configurable (Cp) que sería la separación mínima (por delante y por detrás) entre dos mínimos o dos máximos.

Para determinar un máximo debemos obtener un precio y un número de barra. Para ello, determinaremos el último punto que cumpla que las Cp barras anteriores estén por debajo de este punto definiendo bi como el número de barra en el que nos encontramos.

Desbloquea todos los contenidos con la Zona Premium

Pero no basta con esta condición, también necesitamos que existan al menos Cp barras por detrás de este máximo calculado en el que el precio esté por debajo. O lo que es lo mismo, nos quedaremos con el último máximo calculado como maximoy y que además hayan pasado CP barras desde entonces y no haya aparecido un máximo nuevo.

Desbloquea todos los contenidos con la Zona Premium

Por otra parte, pretendemos en nuestro ejemplo guardar en variables los últimos 4 máximos (o mínimos) calculados. Para ello, cada vez que se produce un máximo nuevo le daremos al máximo más reciente anterior los valores de (maximo2x,maximo2y).

Esto lo haremos de nuevo con la instrucción ValueWhen de tal manera que cada vez que se produce ese evento le daremos el valor que tenía el último máximo en la barra anterior.

Desbloquea todos los contenidos con la Zona Premium

Tras esto tendremos 4 puntos en los que el punto P1 determinado por maximox1 y maximoy1 será el punto más reciente en el tiempo (mayor barindex) y el punto 4 (maximox4 y maximoy4) el más alejado (menor barindex)

Con estos 4 puntos tenemos una serie de combinaciones de rectas que pasen entre los cuatro puntos, sin embargo, no todas ellas constituyen una directriz, deberán cumplirse las siguientes condiciones para poder ser una directriz bajista

  • En primer lugar, para tratarse de una directriz bajista, uniendo máximos la pendiente deberá ser negativa (máximos decrecientes).
  • Además, como vamos a calcular la recta tomando dos puntos de los 4 que disponemos, necesitamos que los otros dos, o bien caigan dentro de la recta o que al menos estén por debajo de la recta.

Deberemos estudiar las siguientes posibilidades de recta:

  • Recta de P1 con P2
  • Recta de P1 con P3
  • Recta de P1 con P4
  • Recta de P2 con P3
  • Recta de P2 con P4
  • Recta de P3 con P4

Comenzando con la recta P1 con P2 tenemos adicionalmente los puntos P3 y P4 que como se mencionó deberían quedar o bien dentro o por debajo de la directriz bajista. Para verificar la condición podemos calcular el valor de la recta en las barras donde se producen estos máximos. El máximo real deberá coincidir o quedar por debajo de esta recta para cumplir la condición.

Esto lo hacemos para todas las combinaciones y también para las directrices alcistas en las cuales la pendiente deberá ser positiva (mínimos crecientes) y los dos puntos por los que no trazamos la recta deberán estar o bien contenidos en la misma, o por encima.

👀 Salidas Gráficas

Vamos a utilizar la herramienta GfxCircle para representar los máximos y los mínimos obtenidos mediante un círculo rojo o verde pudiendo configurar el radio desde la ventana de parámetros.

Para la representación de las líneas de tendencia utilizaremos la herramienta GfXPolyLine a partir de los puntos calculados. Para facilitar la representación le daremos una extensión en el tiempo mediante el parámetro “d” también configurable desde la ventana.

Finalmente vamos a representar también el mayor máximo y menor mínimo de los últimos 4 representados ya que se tratará siempre de una importante zona de resistencia y soporte que será conveniente tener en cuenta.

Esta será por tanto la ventana configurable con posibilidad de visualizar u ocultar cada tipo de directriz, configurar el factor de separación (Cp), el radio de representación de los máximos y mínimos y la prolongación de las directrices.

De esta manera tenemos un indicador que nos represente las directrices alcistas y bajistas a las que generalmente conviene tener en consideración.

👨‍💻 Código AFL de Amibroker

Como siempre, te dejo el código para puedas hacer todas las pruebas que quieras.

Desbloquea todos los contenidos con la Zona Premium

¿Eres de los míos y pensabas que las líneas de tendencia no se podían programar?

Este artículo fue cortesía de Sergio Meana para MKTSignals

Si te ha gustado no olvides dejarnos tu opinión 😉

La newsletter de MKTSignals

Si quieres estar al tanto de todas nuestras novedades, suscríbete a nuestra newsletter. ¡Es gratis!

¡Puntúa este artículo!

Total votos: 5. Promedio: 5

También te puede interesar:

¿Quieres acceder a todo el contenido Premium HOY?

+50 códigos de Amibroker

0 comentarios

Enviar un comentario

Loading...