English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
preview
Aprendiendo a diseñar un sistema de trading con ATR

Aprendiendo a diseñar un sistema de trading con ATR

MetaTrader 5Trading | 27 julio 2022, 07:50
627 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introducción

En este nuevo artículo, hablaremos de otro concepto más en el trading. La medición y el uso de dicho concepto nos resultará útil en el comercio. Hablamos de la volatilidad. Existen muchas herramientas diferentes para medir la volatilidad, y una de las más populares es el indicador técnico de rango medio verdadero (Average True Range, ATR). Saber qué ocurre con la volatilidad puede representar una diferencia dramática en el juego; precisamente de ello vamos a hablar en este artículo. Supondrá un factor importante, así como la base para la toma de decisiones.

Vamos a echar un vistazo a los distintos temas para analizar el indicador ATR. Además, si ha leído mis otros artículos, probablemente ya sepa que mi enfoque consiste en estudiar la esencia misma de las cosas, llegar a su raíz. Los siguientes temas abarcan todo lo que aprenderemos en el presente artículo sobre esta increíble herramienta:

  1. Escribiendo el código MQL5 en el MetaEditor
  2. Definiendo ATR
  3. Estrategia del indicador ATR
  4. Esquema de la estrategia del indicador ATR
  5. Sistema comercial ATR
  6. Conclusión

Esperamos que después de leer este artículo entienda mejor el indicador ATR y aprenda a usarlo en el trading. Juntos, aprenderemos qué supone el indicador ATR, qué mide y cómo se calcula: para ello, desglosaremos la fórmula con todo detalle e intentaremos realizar los cálculos nosotros mismos usando datos reales del mercado. La primera sección, «Definiendo ATR», está dedicada a ello. También veremos estrategias sencillas basadas en el concepto del indicador ATR. La meta del estudio de estas estrategias es comprender mejor el indicador. Encontrará todo esto en la sección «Estrategia del indicador ATR». Luego, se describirán las estrategias analizadas. Se trata de un paso muy útil a la hora de diseñar el sistema comercial, ya que permite visualizar la idea de cómo debe funcionar el programa. Por ello, representaremos los esquemas paso a paso en la sección «Esquema de la estrategia del indicador ATR». A continuación, aprenderemos a escribir el código de un sistema de trading basado en estas estrategias usando el lenguaje de programación MQL5. El resultado deberá ser un programa que pueda ejecutarse en la plataforma comercial MetaTrader 5. Esto se describe en la sección «Sistema comercial ATR».

Para escribir el código de la estrategia en MQL5, usaremos el editor MetaQuotes Language Editor (MetaEditor), incorporado en la plataforma comercial MetaTrader 5. Si no tiene instalada la plataforma, podrá descargarla desde este enlace: https://www.metatrader5.com/es/download.

La ventana de la plataforma comercial MetaTrader 5 tiene el aspecto que sigue:

Plataforma MetaTrader 5

Desde esta ventana, tenemos que abrir el MetaEditor pulsando la tecla F4. También podemos clicar en el botón del editor IDE en la barra de herramientas del terminal MetaTrader 5, como se muestra a continuación:

Abriendo el MetaEditor 2

Otra forma de abrirlo es seleccionando el menú "Herramientas" en el terminal MetaTrader 5 --> y luego seleccionando "/MetaQuotes Language Editor" en el menú, como se muestra en la siguiente figura:

Abriendo el MetaEditor 1 

Esto abrirá un editor para escribir programas, con el aspecto siguiente:

Interfaz del MetaEditor

Recomendamos al lector que trabaje por su cuenta cada fragmento de código presentado en este artículo, porque la práctica supone una parte esencial del aprendizaje.

¡Atención! Toda la información se ofrece "tal cual", únicamente con fines ilustrativos, y no está destinada a fines comerciales o de asesoramiento. El rendimiento pasado no supone una garantía de resultados futuros. Todo lo que ponga en práctica usando este artículo como base, lo hará bajo su propia cuenta y riesgo, el autor no garantiza ningún resultado en absoluto.

¿Está preparado para aprender sobre una nueva herramienta con la que podrá potenciar sus habilidades comerciales y mejorar sus resultados? Pues comencemos.


Definiendo ATR

En esta parte, analizaremos más de cerca el indicador ATR: qué mide y cómo se calcula, y también veremos ejemplos para entender mejor cómo se puede usar y qué beneficios se pueden obtener de él.

El indicador técnico Average True Range (ATR) fue desarrollado por Welles Wilder. Este indicador mide la volatilidad del mercado analizando el rango de precios durante un periodo determinado. El indicador ATR no muestra el precio o la dirección del mercado, solo mide la volatilidad.

Para medir la volatilidad, se calculan los siguientes pasos.

Primero debemos calcular el rango verdadero, que será el valor más alto entre los siguientes:

  • La diferencia entre el valor High y el valor Low actuales;
  • La diferencia entre el valor High actual y el valor Close anterior (magnitud absoluta);
  • La diferencia entre el valor Low actual y el valor Close anterior (magnitud absoluta).

Resulta que para calcular el indicador necesitamos los datos sobre los máximos, los mínimos y los precios de cierre. A continuación, se calcula el rango medio verdadero (ATR).

Ahora veremos un ejemplo con datos reales del mercado e intentaremos calcular nosotros mismos el ATR. A continuación, se muestran los datos de EURUSD:

Día Máximo Mínimo Cierre
Mar 17, 2022 1.1138 1.1008 1.1089
Mar 18, 2022 1.112 1.1003 1.1055
Mar 21, 2022 1.107 1.101 1.1014
Mar 22, 2022 1.1047 1.096 1.1027
Mar 23, 2022 1.1044 1.0963 1.1004
Mar 24, 2022 1.1014 1.0965 1.0996
Mar 25, 2022 1.1039 1.0979 1.0981
Mar 28, 2022 1.1 1.0944 1.0978
Mar 29, 2022 1.1137 1.097 1.1085
Mar 30, 2022 1.1171 1.1083 1.1156
Mar 31, 2022 1.1185 1.1061 1.1065
Apr 01, 2022 1.1077 1.1027 1.1053
Apr 04, 2022 1.1056 1.096 1.097
Apr 05, 2022 1.099 1.0899 1.0903
Apr 06, 2022 1.0939 1.0874 1.0893
Apr 07, 2022 1.0939 1.0864 1.0878
Apr 08, 2022 1.0892 1.0836 1.0876
Apr 11, 2022 1.0951 1.0872 1.0883
Apr 12, 2022 1.0905 1.0821 1.0826
Apr 13, 2022 1.0896 1.0809 1.0885
Apr 14, 2022 1.0925 1.0757 1.0827
Apr 15, 2022 1.0832 1.0796 1.0806
Apr 18, 2022 1.0822 1.0769 1.078
Apr 19, 2022 1.0815 1.0761 1.0786
Apr 20, 2022 1.0868 1.0783 1.085
Apr 21, 2022 1.0937 1.0824 1.0836
Apr 22, 2022 1.0853 1.077 1.0794
Apr 25, 2022 1.0842 1.0697 1.0711
Apr 26, 2022 1.0738 1.0635 1.0643
Apr 27, 2022 1.0655 1.0586 1.0602

Basándonos en estos datos, vamos a calcular el ATR paso a paso.

1. Calculamos el TR. Es el valor más alto entre los siguientes:

  • Máximo actual - Mínimo actual (diferencia entre el máximo y el mínimo),

H-L

  • Valor absoluto (High actual - Close anterior),

 absh-pc

  • Valor absoluto (Low actual - Close anterior),

 absl-pc

Por consiguiente, calcularemos los tres valores y encontraremos el más alto entre ellos: este será el TR (rango verdadero),

TR

2. Calculamos el rango medio verdadero (ATR) de 14 periodos

ATR

Después de repetir todos estos pasos, podremos calcular el indicador Average True Range de forma manual. Afortunadamente, en esta ocasión no hay que hacer eso, ya que el terminal comercial MetaTrader 5 ya tiene un indicador incorporado listo para usar. Todo lo que deberemos hacer es seleccionarlo de la lista de otros indicadores disponibles. A continuación, se muestra cómo hacerlo.

En el terminal seleccione el menú "Insertar", luego seleccione Indicadores --> Osciladores --> Average True Range:

Insertamos ATR

Después de elegir Average True Range, se abrirá una ventana para configurar los parámetros del indicador:

Ventana para insertar ATR

1 - periodo de indicador deseado.

Este valor del periodo puede variar de un marco temporal a otro y de un instrumento a otro: todo dependerá de la volatilidad de cada periodo o instrumento. Cuanto más largo sea el ATR, mejor servirá para obtener señales precisas, porque habrá una media más suave.

2 - color de la línea ATR.

3 - estilo de línea ATR.

4 - grosor de la línea ATR.

Una vez ajustados los parámetros del indicador ATR, este se ejecutará en el gráfico y tendrá el aspecto siguiente:

ATR en el gráfico

En la captura de pantalla, podemos ver que el indicador se ejecuta en una ventana gráfica adicional, en esta ventana, el indicador ATR de 14 periodos está representado por una línea que mide la volatilidad del instrumento EURUSD en el marco temporal de horas.

Como ya hemos dicho, el indicador ATR mide la volatilidad. En consecuencia, analizaremos los valores de la ventana del indicador ATR: cuanto más bajo sea su valor, menor será la volatilidad del instrumento. Y al contrario, cuanto más alto sea el valor del indicador ATR, mayor será la volatilidad del símbolo comercial.

A continuación, mostramos cómo interpretar el gráfico del indicador:

Interpretación de ATR

Cuando en el gráfico de ATR se forma una depresión, esto indicará una baja volatilidad, y por el contrario, cuando el indicador ATR muestre valores altos, esto indicará una alta volatilidad.

Como podemos deducir del cálculo, el indicador en sí no resulta adecuado para generar señales de trading precisas, pues solo tiene en cuenta el tamaño del rango. Sin embargo, eso también constituye su punto fuerte: es una de las mejores herramientas a la hora de determinar el tamaño de la posición, el stop-loss y el take-profit adecuados.

Recordamos de nuevo que el ATR solo mide la volatilidad y no determina la tendencia o la dirección del mercado. Así que no se confunda: si la curva de ATR se mueve hacia arriba, no significará que la tendencia sea alcista, y viceversa, si la curva de ATR se mueve hacia abajo, no significará que la tendencia sea bajista. Son otras herramientas, como el indicador ADX, las pueden determinar si existe o no una tendencia.

Podrá encontrar la definición de tendencia en el artículo anterior de esta serie.

La siguiente figura demuestra una vez más que el indicador ATR no muestra la dirección de la tendencia:

Interpretación de ATR 2

Podemos ver zonas en las que el indicador se mueve hacia arriba y el precio se mueve hacia abajo al mismo tiempo y viceversa: El ATR se desplaza hacia abajo, al tiempo que el precio sube. Por consiguiente, es muy importante recordar esto: El ATR mide la volatilidad, pero no muestra la dirección del mercado.


Estrategia del indicador ATR

En esta parte, veremos estrategias simples basadas en el concepto del indicador ATR. La esencia del indicador ATR es que solo mide la volatilidad del mercado, no la dirección del precio.

1. Sistema ATR simple - Fuerza de ATR:

Con esta estrategia, compararemos el valor actual de ATR con ciertos valores y determinaremos si el ATR es fuerte o no. Debemos señalar que estos valores concretos pueden variar de un instrumento a otro y de un periodo a otro. Así, comprobaremos el valor del indicador ATR y usaremos este para determinar su fuerza. Si el valor actual de ATR es superior a 0,0024, significará que el ATR es fuerte, y si el valor actual es inferior a 0,0014, significará que el ATR es débil. Si el valor de ATR se encuentra entre 0,0014 y 0,0024, significará que el indicador es neutro y solo se retornará el valor actual.

  • Valor ATR actual > 0,0024 = ATR fuerte
  • Valor ATR actual < 0,0014 = ATR débil
  • Valor ATR actual > 0,0014 y < 0,0024 = valor ATR actual


2. Sistema ATR simple - Movimiento de ATR:

Según esta estrategia, compararemos el valor actual de ATR con el valor anterior de ATR y luego sacaremos una conclusión sobre el movimiento: si la línea de ATR se está moviendo hacia arriba, significará que el valor actual de ATR es mayor que el valor anterior, y por lo tanto el ATR (y la volatilidad) estará aumentando. Los movimientos bajistas se darán cuando el valor actual de ATR sea menor que el valor anterior.

  • Valor ATR actual > valor ATR anterior = ATR crece
  • Valor ATR actual < valor ATR anterior = ATR disminuye


3. Sistema ATR simple - niveles de Stop Loss y Take Profit:

En esta estrategia usaremos los valores de ATR para determinar el nivel dinámico de stop-loss y take-profit basado en el valor actual de ATR y el cálculo específico de stop-loss y take-profit para las posiciones de compra y venta.

En el caso de la posición de compra en el gráfico, se deberá mostrar:

  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • La cuarta línea será el valor del stop-loss según el cálculo específico para las posiciones de compra.
  • La quinta línea será el valor del take-profit según el cálculo específico para las posiciones de compra.

En el caso de la posición de venta en el gráfico, se deberá mostrar:

  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • La cuarta línea será el valor del stop-loss según el cálculo específico para las posiciones de venta.
  • La quinta línea será el valor del take-profit según el cálculo específico para las posiciones de venta.

Obviamente, existen muchas estrategias más avanzadas que usan el indicador ATR, pero aquí solo veremos algunas muy simples para ayudarle a entender el indicador. Y ya usando como base estos datos, podrá aprender a utilizar el indicador ATR incluso en estrategias muy complejas.


Esquema de la estrategia del indicador ATR

En esta parte, aprenderemos paso a paso lo necesario para crear un sistema comercial para las tres estrategias que hemos analizado con la ayuda de un plan/esquema detallado. En general, este es un paso muy importante que precede a la programación de sistemas basados en ideas comerciales. Aquí veremos esquemas que le ayudarán a escribir un programa o asesor sencillo que mostrará comentarios con el valor actual de ATR. De hecho, estos comentarios mostrarán las tres estrategias que hemos discutido anteriormente. Este será el esquema general:

Esquema de un sistema sencillo con el indicador ATR

1. Sistema ATR simple - Fuerza de ATR:

  • Valor ATR actual > 0,0024 = ATR fuerte
  • Valor ATR actual < 0,0014 = ATR débil
  • Valor ATR actual > 0,0014 y < 0,0024 = valor ATR actual

El programa deseado deberá comparar el valor de ATR actual con el valor de referencia = 0,0024. Si el ATR es mayor que este valor, entonces el rango medio verdadero será actualmente fuerte. Si el ATR no es mayor que 0,0024, el programa deberá comprobar si el ATR es menor que el otro valor = 0,0014. Esto significaría que el ATR es débil. Si el valor de ATR tampoco es inferior a 0,0014, estará entre 0,0014 y 0,0024, y esto significaría que el indicador es neutro. En este caso, el programa debería simplemente mostrar el valor actual.

A continuación, podrá ver un esquema de esta estrategia que muestra la fuerza de ATR:

Sistema ATR simple - Gráfico de la estrategia de ATR Strength

2. Sistema ATR simple - Movimiento de ATR:

  • Valor ATR actual > valor ATR anterior = ATR crece
  • Valor ATR actual < valor ATR anterior = ATR disminuye

Así que, esta vez, el asesor comparará el valor de ATR actual con el valor de ATR anterior, y luego sacará una conclusión sobre el movimiento: si el valor de ATR actual es mayor que el valor anterior, significará que el ATR está creciendo. Si el valor actual de ATR es inferior al valor anterior, significará que el ATR está disminuyendo.

A continuación, le presentamos un esquema de esta estrategia que muestra el movimiento de ATR:

Sistema ATR simple - Gráfico de estrategia de ATR Movement

3. Sistema ATR simple - niveles de Stop Loss y Take Profit:

En ambos casos, deberá aparecer un comentario en el gráfico.

Serán las posiciones de compra y venta:

  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • La cuarta línea será el valor del nivel de stop-loss.
  • La quinta línea será el valor del nivel de take-profit.


Este será el plan de esta estrategia con los niveles de stop-loss y take-profit de ATR:

Sistema ATR simple - Niveles de stop-loss y take-profit:

Sistema comercial ATR

Por último, en esta parte llegaremos al fondo de la cuestión: escribiremos el código de las estrategias y crearemos sistemas comerciales basados en cada una de ellas. El resultado final deberá ser un programa que ejecute automáticamente los pasos necesarios. Vamos a comenzar con el código de un asesor que mostrará automáticamente los comentarios con el valor de ATR en el gráfico.

Además, veremos paso a paso cómo escribir el código de la primera estrategia ATR simple.

  • Bien, para ello, creamos un array de precios usando la función double:
double PriceArray[];
  • Luego, establecemos la clasificación de los datos en el array usando la función ArraySetAsSeries:
ArraySetAsSeries(PriceArray,true);
  • A continuación, definimos el ATR usando la función iATR y un valor int para el valor de retorno:
int ATRDef=iATR(_Symbol,_Period,14);
  • Después, definimos los datos y guardamos los resultados usando la función CopyBuffer:
CopyBuffer(ATRDef,0,0,3,PriceArray);
  • Obtenemos los valores de los datos actuales: retornamos el valor double utilizando la función NormalizeDouble:
double ATRValue=NormalizeDouble(PriceArray[0],5);
  • Finalmente, generamos y mostramos un comentario con el valor de ATR en el gráfico:
Comment("ATR Value = ",ATRValue);

El código completo de esta estrategia tiene el aspecto que sigue Puede copiarlo y utilizarlo en sus propios proyectos:

//+------------------------------------------------------------------+
//|                                                   Simple ATR.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //creating price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

Compilamos el código del asesor experto, y este aparecerá en la ventana del Navegador del terminal MetaTrader 5, desde donde se podrá ejecutar en el gráfico:

ATR en el Navegador

Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico, y aparecerá la siguiente ventana:

Ventana de ATR simple

Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

ATR simple en el gráfico

El programa se ejecutará entonces según las condiciones que le hayamos asignado. A continuación, ofrecemos varios ejemplos de los resultados de las pruebas:

Señal ATR simple

A continuación, escribiremos sistemas comerciales para cada estrategia analizada.

1. Sistema ATR simple - Fuerza de ATR:

  • Valor ATR actual > 0,0024 = ATR fuerte 
  • Valor ATR actual < 0,0014 = ATR débil
  • Valor ATR actual > 0,0014 y < 0,0024 = valor ATR actual

Este es el aspecto que tendría el código de este asesor basado en el Sistema Simple ATR System - ATR Strength:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR strength.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //creating price array
   double PriceArray[];
   
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart with ATR strength as per its value
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

Qué ha cambiado en el código en comparación con el anterior:

  • Para mostrar un comentario, el programa compara el valor actual de ATR con el nivel 0,0024:
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);

  • Además se compara con el nivel 0,0014
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);

  • Si el valor actual de ATR es > 0,0014 y < 0,0024
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);

Después de la compilación, el asesor experto aparecerá en la ventana del Navegador en MetaTrader 5:

ATR en el Navegador 1

Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico. A continuación, aparecerá la ventana del asesor (en la ventana siempre permitimos el comercio automático para el asesor):

Ventana de ATR Strength

Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

Sistema de ATR Strength en el gráfico

La figura siguiente muestra un ejemplo de señales generadas partiendo de esta estrategia.

Como podemos ver, hay un comentario en el gráfico: Strong ATR (ATR fuerte) y una línea aparte para el valor de ATR:

Sistema de fuerza de ATR en el gráfico - ATR fuerte

Y hay un comentario sobre este gráfico: Weak ATR (ATR débil) y una línea aparte para el valor de ATR:

Sistema de fuerza de ATR en el gráfico - ATR débil

Y en este ejemplo, solo hay una línea de comentario con el valor actual de ATR, porque su fuerza es neutra:

Sistema de fuerza de ATR en el gráfico - neutro

2. Sistema ATR simple - Movimiento de ATR: 

  • Valor ATR actual > valor ATR anterior = ATR crece
  • Valor ATR actual < valor ATR anterior = ATR disminuye

A continuación, mostramos el código de este asesor experto basado en el Sistema Simple ATR System - ATR Movement, que muestra el movimiento de ATR:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR movement.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //creating arrays
   double PriceArray0[];
   double PriceArray1[];
   
   //sort price array from current data
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14); 
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
      
  }
//+------------------------------------------------------------------+


Qué ha cambiado en el código en comparación con el anterior:

  • Aquí creamos dos arrays de precios (el valor ATR actual (PriceArray0), y el valor ATR anterior (PriceArray1)):
   double PriceArray0[];
   double PriceArray1[];

  • Ordenamos los dos arrays de precios empezando por los datos actuales y retrocediendo en el tiempo:
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);

  • Definimos los datos y guardamos el resultado para los dos arrays
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);

  • Obtenemos el valor de los datos actuales para dos valores (actual y anterior):
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

  • Para mostrar un comentario, el programa compara el valor ATR actual con el valor ATR anterior.
    • Si el valor ATR actual es mayor que el valor ATR anterior:
   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);

    • Si el valor ATR actual es menor que el valor ATR anterior:
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);

Después de la compilación, el asesor experto aparecerá en la ventana del Navegador en MetaTrader 5:

ATR en el Navegador 2

Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico. La ventana del asesor volverá a aparecer:

Ventana de la estrategia ATR Movement

Permitimos el trading algorítmico, pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra a continuación:

Sistema de ATR Movement en el gráfico

La figura siguiente muestra un ejemplo de señales generadas partiendo de esta estrategia.

Cuando el indicador ATR crece:

ATR Movement - crecimiento

Cuando el ATR disminuye:

ATR Movement - disminución


3. Sistema ATR simple - niveles de Stop Loss y Take Profit:

En el caso de la posición de compra en el gráfico, se deberá mostrar: 

  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • Nueva línea con el valor del stop-loss para la posición de compra.
  • Nueva línea con el valor del take-profit para la posición de compra.

En el caso de la posición de venta en el gráfico, se deberá mostrar: 

  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • Nueva línea con el valor del stop-loss para la posición de venta.
  • Nueva línea con el valor del take-profit para la posición de venta.

A continuación, le mostramos el código de este asesor basado en el sistema Simple ATR System - niveles de SL y TP:

//+------------------------------------------------------------------+
//|                             Simple ATR System - SL&TP levels.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //define Ask price&Bid
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //creating price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
   
   //comment on the chart
   Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
   "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
  }
//+------------------------------------------------------------------+

Cuáles son las diferencias aquí:

  • La determinación de los precios de compra y venta para calcular el stop-loss y el take-profit:
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

  • El cálculo del stop-loss y el take-profit para las posiciones de compra y venta:
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);

  • La muestra del comentario correspondiente en el gráfico:
  • El precio Ask actual
  • La segunda línea será el precio Bid actual.
  • La tercera línea será el valor de ATR actual.
  • La cuarta línea será el valor del nivel de stop-loss.
  • La quinta línea será el valor del nivel de take-profit.
  •    Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
       "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
    
    

    Después de la compilación, el asesor experto aparecerá en la ventana del Navegador en MetaTrader 5:

    ATR en el Navegador 3

    Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico, y se abrirá la siguiente ventana:

    Ventana de la estrategia ATR SL_TP

    Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

    ATR SL_TP en el gráfico

    La figura siguiente muestra un ejemplo de señales generadas partiendo de esta estrategia.

    ATR niveles de SL-TP

    Conclusión

    Se supone que a estas alturas ya conocerá bien el concepto de rango medio verdadero medido por el indicador ATR. Hemos aprendido qué es el ATR y qué mide, así como la forma de calcularlo manualmente. Además, hemos visto un ejemplo de cálculo basado en datos reales del mercado. También hemos estudiado algunas estrategias sencillas basadas en el concepto de ATR. Hemos visto qué estrategias pueden medir la fuerza y el movimiento del indicador ATR y calcular los niveles de stop-loss y take-profit de las posiciones usando ATR como base. Además, como en los otros artículos de esta serie, hemos desarrollado un esquema de trabajo que permitirá desarrollar paso a paso un sistema comercial para cada estrategia. Después, usando este esquema, escribiremos el código de los sistemas comerciales para cada estrategia en el lenguaje MetaQuotes Languages (MQL5). Como resultado, tendremos programas que se pueden ejecutar en la plataforma MetaTrader 5.

    Si ha comprendido todos estos temas y ha practicado lo aprendido, ya debería ser capaz de usar el rango medio verdadero (ATR) según el concepto que usa como base. También debería ser capaz de leer el indicador y utilizarlo para determinar la volatilidad de un instrumento comercial.

    Una vez más, resulta esencial probar todos los nuevos conocimientos a fondo antes de aplicarlos a una cuenta real para asegurarse de que se adaptan a su estilo de comercio y a su comprensión. Al fin y al cabo, lo que funciona para otros no tiene por qué funcionar para usted. Por eso, siempre hay que realizar pruebas y comprobar todo por uno mismo. No existe otra forma de estar seguros.

    Bueno, y como deseo al final del artículo, esperamos que le resulte útil. Tal vez le ayude a encontrar nuevas ideas comerciales, quizá no relacionadas directamente con el tema del artículo. Y puede que estas ideas le ayuden a mejorar los resultados comerciales. Además, esperamos haber convencido al lector sobre la importancia de la programación mostrándole cómo la escritura de ideas en código programático puede hacer que el comercio resulte más fácil y preciso.

    Traducción del inglés realizada por MetaQuotes Ltd.
    Artículo original: https://www.mql5.com/en/articles/10748

    Aprendiendo a diseñar un sistema comercial basado en Parabolic SAR Aprendiendo a diseñar un sistema comercial basado en Parabolic SAR
    Esta es la continuación de una serie de artículos en los que aprendemos cómo crear sistemas comerciales usando los indicadores más populares. En el presente artículo, analizaremos el indicador Parabolic SAR. También desarrollaremos un sistema comercial para la plataforma MetaTrader 5 usando algunas estrategias simples.
    Aprendiendo a diseñar un sistema comercial basado en Momentum Aprendiendo a diseñar un sistema comercial basado en Momentum
    En el artículo anterior, mencionamos la importancia de detectar las tendencias, es decir, de determinar la dirección del movimiento del precio. En este artículo, hablaremos sobre otro concepto importante en el trading, que también existe en forma de indicador: el impulso del precio o el indicador Momentum. Asimismo, desarrollaremos nuestro propio sistema comercial basado en este indicador.
    Redes neuronales: así de sencillo (Parte 15): Clusterización de datos usando MQL5 Redes neuronales: así de sencillo (Parte 15): Clusterización de datos usando MQL5
    Continuamos analizando el método de clusterización. En este artículo, crearemos una nueva clase CKmeans para implementar uno de los métodos de clusterización de k-medias más extendidos. Según los resultados de la prueba, el modelo ha podido identificar alrededor de 500 patrones.
    DoEasy. Elementos de control (Parte 6): Control «Panel», cambio automático del tamaño del contenedor según el contenido interno DoEasy. Elementos de control (Parte 6): Control «Panel», cambio automático del tamaño del contenedor según el contenido interno
    En este artículo, continuaremos trabajando en el control "Panel" del objeto WinForms e implementaremos su cambio automático de tamaño según las dimensiones generales de los objetos Dock colocados dentro del panel. Además, añadiremos nuevas propiedades al objeto de biblioteca "Símbolo".