
Aprendiendo a diseñar un sistema de trading con ATR
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:
- Escribiendo el código MQL5 en el MetaEditor
- Definiendo ATR
- Estrategia del indicador ATR
- Esquema de la estrategia del indicador ATR
- Sistema comercial ATR
- 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:
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:
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:
Esto abrirá un editor para escribir programas, con el aspecto siguiente:
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),
- Valor absoluto (High actual - Close anterior),
- Valor absoluto (Low actual - Close anterior),
Por consiguiente, calcularemos los tres valores y encontraremos el más alto entre ellos: este será el TR (rango verdadero),
2. Calculamos el rango medio verdadero (ATR) de 14 periodos
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:
Después de elegir Average True Range, se abrirá una ventana para configurar los parámetros del indicador:
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:
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:
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:
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:
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:
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:
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 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:
Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico, y aparecerá la siguiente ventana:
Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:
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:
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:
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):
Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:
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:
Y hay un comentario sobre este gráfico: Weak ATR (ATR débil) y una línea aparte para el valor de ATR:
Y en este ejemplo, solo hay una línea de comentario con el valor actual de ATR, porque su fuerza es neutra:
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:
Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico. La ventana del asesor volverá a aparecer:
Permitimos el trading algorítmico, pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra a continuación:
La figura siguiente muestra un ejemplo de señales generadas partiendo de esta estrategia.
Cuando el indicador ATR crece:
Cuando el ATR disminuye:
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:
Clique dos veces en el archivo o arrástrelo y suéltelo en el gráfico, y se abrirá la siguiente ventana:
Pulse OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:
La figura siguiente muestra un ejemplo de señales generadas partiendo de esta estrategia.
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





- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso