
Aprendiendo a diseñar un sistema de trading con Alligator
Introducción
Bienvenidos a un nuevo artículo de la serie dedicada a la creación de sistemas comerciales basados en indicadores técnicos populares. En esta parte hablaremos del indicador Alligator: aprenderemos qué es, qué mide, cómo calcularlo, cómo interpretarlo y cómo utilizarlo. A continuación, crearemos un sistema comercial basado en estrategias sencillas para ver cómo funciona el indicador en la práctica. Una vez más, el trabajo sobre el indicador se dividirá en varios temas:
- Definición del indicador Alligator
- Estrategias con el indicador Alligator
- Esquemas de estrategias con el indicador Alligator
- Sistema comercial con Alligator
- Conclusión
Recomendamos a todos los lectores que repitan todo comentado aquí y que escriban ellos mismos todos los códigos: es una práctica que desarrollará sus habilidades, además de mejorar su comprensión del tema. En este artículo, utilizaremos MetaTrader 5 y el MetaEditor incorporado para escribir el código MQL5. Si no sabe cómo descargar o usar MetaTrader 5, lea la sección "Escribiendo el código MQL5 en el MetaEditor" en uno de los artículos anteriores: allí se describe todo con detalle.
¡Atención! Toda la información del presente artículo se ofrece «tal cual», únicamente con fines ilustrativos, y no supone ningún tipo de recomendación. El artículo no garantiza ningún resultado en absoluto. 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 resultado alguno.
Definición del indicador Alligator
Alligator es un indicador técnico de seguimiento de tendencias creado por Bill Williams. El indicador se basa en la idea de que una tendencia no existe durante toda la vida de un instrumento financiero, sino solo entre el 15 y el 30% del tiempo, y que la mayor parte del tiempo, entre el 85% y el 70%, el precio del instrumento se mueve de forma lateral. Como resulta, a veces tenemos una tendencia alcista, a veces una tendencia bajista, pero la mayor parte del tiempo el movimiento es simplemente plano. En artículos anteriores, hemos hablado muchas veces sobre las tendencias. Por ejemplo, podemos leer una descripción detallada de las tendencias, sus tipos y cómo identificarlas en un artículo anterior que le resultará especialmente útil en el contexto actual. El indicador usa en sus cálculos los números de Fibonacci y es una combinación de tres medias móviles SMA suavizadas con periodos 5, 8 y 13. Estas tres medias suavizadas conforman los componentes del indicador Alligator:
- Las mandíbulas del caimán
- Los dientes del caimán
- Los labios del caimán
Las líneas indicadoras se calculan usando las siguientes fórmulas:
Mandíbulas del caimán = SMMA (precio medio, 13, 8)
Dientes del caimán = SMA (precio medio, 8, 5)
Labios del caimán = SMMA (precio medio, 5, 3)
Precio medio = (máximo + mínimo)/2
donde:
SMMA - media móvil suavizada
Median Price — precio mediano del instrumento
High — precio máximo
Low — precio mínimo
Este ha sido el cálculo de las líneas indicadoras. Sin embargo, en realidad no necesitaremos calcular el indicador manualmente, puesto que ya existe un indicador listo para usar en el terminal comercial MetaTrader 5, y todo lo que deberemos hacer es seleccionarlo de la lista.
Abra MetaTrader 5, elija el menú "Insertar" --> Indicadores --> Bill Williams --> Alligator.
Se abrirá una ventana con los parámetros del indicador:
1 - periodo de cálculo de la línea de la mandíbula
2 - desplazamiento horizontal de las mandíbulas
3 - periodo de cálculo de la línea de los dientes
4 - desplazamiento horizontal de los dientes
5 - periodo de cálculo de la línea de los labios
6 - desplazamiento de los labios en horizontal
7 - método de suavizado
8 - precio utilizado para los cálculos.
En la siguiente ventana podrá ajustar el estilo del indicador:
1 - color de la línea de la mandíbula
2 - tipo de la línea de la mandíbula
3 - grosor de la línea de la mandíbula
4 - color de la línea de los dientes
5 - tipo de línea de los dientes
6 - grosor de la línea de los dientes
7 - color de la línea de los labios
8 - tipo de línea de los labios
9 - grosor de la línea de los labios
Seleccionamos los parámetros necesarios del indicador, presionamos el botón OK y el indicador se iniciará en el gráfico como mostramos a continuación:
En la captura de pantalla anterior, podemos ver que el indicador se ha iniciado, y que aparecen tres líneas en el gráfico:
1 - línea de los labios del caimán
2 - línea de los dientes del caimán
3 - línea de la mandíbula del caimán
El indicador puede leerse analizando la posición de las líneas en relación con el precio. Si el precio está por encima de las líneas de los labios, los dientes y las mandíbulas del caimán, podremos hablar de una tendencia alcista. Si el precio está por debajo de estas líneas, podremos decir que la tendencia es bajista. Si el precio se mueve entre estas tres líneas, podremos decir que estamos en una tendencia lateral.
Estrategias con el indicador Alligator
Hay muchas formas diferentes de usar el indicador Alligator en el trading. En este artículo, analizaremos algunas estrategias sencillas, solo para ver cómo se puede utilizar el indicador. El propósito principal es estudiar el indicador, por lo que las estrategias no están destinadas a usarse en una cuenta real sin realizar las pruebas adecuadas. Además, puede que usted necesite optimizar dichas estrategias para encontrar el uso más adecuado.
Esta estrategia generará señales de tendencia alcista o bajista según determinadas condiciones establecidas. Si el valor de los labios es superior a los dos valores de los dientes y las mandíbulas, y al mismo tiempo el valor de los dientes es superior al de las mandíbulas, será una señal alcista. Por el contrario, si el valor de los labios está por debajo de los valores de dientes y las mandíbulas, y al mismo tiempo el valor de los dientes está por debajo de las mandíbulas, se trataría de una señal bajista.
Labios > Dientes, Labios > Mandíbulas y Dientes > Mandíbulas --> Señal alcista
Labios < Dientes, Labios < Mandíbulas y Dientes < Mandíbulas --> Señal bajista
En esta estrategia, obtendremos señales de compra y venta basadas en el cruce de las líneas de los labios, los dientes y las mandíbulas. Si el valor de los labios es superior al de los dientes y las mandíbulas, tendremos una señal de compra. De lo contrario, si el valor de los labios está por debajo del valor de los dientes y las mandíbulas, tendremos una señal de venta.
Labios > Dientes, Labios > Mandíbulas --> Compra
Labios < Dientes, Labios < Mandíbulas --> Venta
En esta estrategia, obtendremos señales de compra y venta basadas en el cruce de las líneas de los labios, los dientes y las mandíbulas, y en el cruce del precio de cierre y el valor de los dientes. Si la línea de los labios está por debajo de la línea de los dientes y las mandíbulas, y el precio de cierre está por encima de la línea de los dientes, tendremos una señal de compra. De lo contrario, si la línea de los labios está por encima de la línea de los dientes y las mandíbulas, y el precio de cierre está por debajo de la línea de los dientes, tendremos una señal de venta.
Labios < Dientes, Labios < Mandíbulas y Precio de Cierre > Dientes --> Compra
Labios > Dientes, Labios > Mandíbulas y Precio de cierre < Dientes --> Venta
Esquemas de estrategias con el indicador Alligator
Obviamente, podemos escribir sistemas comerciales usando como base estas estrategias, pero antes de hacerlo, crearemos varios esquemas paso a paso que resultarán muy útiles para desarrollarlas.
Con esta estrategia, crearemos un sistema comercial que podremos usar para generar señales de divergencia alcistas o bajistas. Para ello, el sistema comprobará los valores siguientes:
- El valor de Jaws
- El valor de Teeth
- El valor de Lips
El sistema comercial detectará la posición de estas líneas entre sí y generará una señal. Si la línea de los labios está por encima de la línea de los dientes, los labios están por encima de las mandíbulas y la línea de los dientes está por encima de la línea de las mandíbulas, el sistema comercial deberá devolver una señal en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- La señal alcista
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
En caso contrario, si la línea de los labios está por debajo de la línea de los dientes, los labios están por debajo de las mandíbulas y, al mismo tiempo, la línea de los dientes está por debajo de las mandíbulas, el sistema comercial debería devolver una señal bajista en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- La señal bajista
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Con esta estrategia, crearemos un sistema comercial que podrá utilizarse para generar señales de compra o venta. Para ello, el sistema comprobará constantemente los siguientes valores y determinará su posición relativa.
- El valor de los labios
- El valor de los dientes
- El valor de las mandíbulas
Si la línea de los labios está por encima de la línea de los dientes y la línea de los labios está por encima de la línea de las mandíbulas, el sistema comercial deberá devolver una señal de compra en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- Compra
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
En el caso contrario, si la línea de los labios está por debajo de la línea de los dientes y la línea de los labios está por debajo de la línea de las mandíbulas, el sistema comercial deberá devolver una señal de venta en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- Venta
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Con esta estrategia, crearemos un sistema comercial que podrá utilizarse para generar señales de compra o venta. Para ello, el sistema comprobará constantemente los siguientes valores y determinará su posición relativa.
- El valor de los labios
- El valor de los dientes
- El valor de las mandíbulas
- El precio de cierre
Si la línea de los labios está por debajo de la línea de los dientes, la línea de los labios está por debajo de la línea de las mandíbulas y el precio de cierre sube por encima de la línea de los dientes, el sistema comercial deberá devolver una señal en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- Compra
- Valor de Lips = n
- Valor de Teeth = n
- Precio de cierre: n
- Valor de Jaws = n
Si la línea de los labios está por encima de la línea de los dientes, la línea de los labios está por encima de la línea de las mandíbulas y el precio de cierre cae por debajo de la línea de los dientes, el sistema comercial deberá devolver una señal de venta en forma de comentario en el gráfico, así como los siguientes valores del indicador:
- Venta
- Valor de Lips = n
- Valor de Teeth = n
- Precio de cierre: n
- Valor de Jaws = n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Sistema comercial con Alligator
En esta parte, crearemos sistemas comerciales para cada una de las estrategias analizadas. Los sistemas se ejecutarán en MetaTrader 5 y generarán señales de forma automática. Empezaremos escribiendo un sistema comercial básico para generar una señal con los valores de los componentes de Alligator. Veamos cómo se escribe el código de una estrategia de este tipo paso a paso:
Primero crearemos arrays para cada uno de los componentes del caimán (labios, dientes, mandíbulas).
double jawsArray[]; double teethArray[]; double lipsArray[];
Luego, estableceremos la clasificación de los datos en el array usando la función ArraySetAsSeries: Parámetros de la función:
- array[]
- flag
ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true);
Después definiremos Alligator usando la función iAlligator. Parámetros de la función:
- symbol — nombre del símbolo; nosotros tenemos "_Symbol", es decir, calcularemos el indicador según el símbolo del gráfico actual.
- period — marco temporal para el cálculo; el valor "_Period" señalará que el indicador se calculará en el marco temporal actual.
- jaw_period — periodo medio para calcular la línea de las mandíbulas, utilizaremos 13.
- jaw_shift — establece el desplazamiento horizontal para la línea de las mandíbulas, aquí será 8.
- teeth_period — periodo medio para calcular la línea de los dientes, utilizaremos 8.
- teeth_shift — establece el desplazamiento horizontal para la línea de los dientes, usaremos 5.
- lips_period — periodo medio para calcular la línea de los labios, en nuestro caso, será 5.
- lips_shift — establece el desplazamiento horizontal para la línea de los labios, aquí será 3.
- ma_method — tipo de suavizado de la media móvil, MODE_SMA.
- applied_price — define el tipo de precio usado para el cálculo; utilizaremos el precio medio.
int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
A continuación, definiremos los datos y guardaremos los resultados utilizando la función CopyBuffer. Parámetros de la función:
- indicator_handle — manejador del indicador, alligatorDef
- buffer_num — número del búfer de indicador, 0 - mandíbulas, 1 - dientes, 2 - labios.
- start_pos — indica la posición del inicio del cálculo; estableceremos 0
- count — cantidad de datos a copiar; indicaremos 3.
- buffer[] — define el array de precios a copiar, tendremos jawsArray, teethArray, lipsArray.
CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray);
Luego obtendremos los valores de los tres componentes
double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5);
e imprimiremos un comentario con los valores resultantes de los componentes del indicador.
Comment("jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue);
El código completo de un sistema comercial de este tipo será como sigue:
//+------------------------------------------------------------------+ //| Simple Alligator System.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 jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray); //Getting value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //comment on the chart Comment("jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } //+------------------------------------------------------------------+
Después compilaremos el código del asesor experto, y este aparecerá en la ventana del Navegador, en el terminal MetaTrader 5:
Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Después de eso, aparecerá la ventana del asesor:
Permitimos el comercio automático "Allow Algo Trading", pulsamos OK y el programa se iniciará en el gráfico:
En la esquina superior derecha del gráfico, se mostrará una indicación de que el asesor se está ejecutando. Ahora estamos listos para recibir las señales generadas por el asesor. A continuación se muestra un ejemplo de una señal de este tipo obtenida durante las pruebas:
En el gráfico anterior, se muestra un comentario con los siguientes valores en la esquina superior izquierda del gráfico:
Valor de Jaws = n
Valor de Teeth = n
Valor de Lips = n
Vamos a crear un sistema comercial basado en esta estrategia. A continuación, le mostraremos el código completo de este sistema:
//+------------------------------------------------------------------+ //| Alligator Trend Identifier.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 three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //Getting value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
Diferencias en este código.
Condiciones de la estrategia para generar una señal alcista:
if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
En caso de una señal bajista:
if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
A continuación, compilaremos el código, buscaremos el archivo resultante en el Navegador del terminal y ejecutaremos el asesor en el gráfico del símbolo comercial:
Como podemos ver en el gráfico de arriba, tenemos un asesor ejecutándose en el gráfico: se muestra una indicación en la esquina superior derecha. Ahora podremos obtener señales alcistas o bajistas basándonos en esta estrategia. Más abajo podemos ver ejemplos de este tipo de señales.
Un ejemplo de señal alcista:
En el gráfico anterior, se muestra un comentario con los siguientes valores en la esquina superior izquierda del gráfico:
- La señal alcista
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
En caso de una señal bajista:
En el gráfico anterior, en la esquina superior izquierda del gráfico, se muestra un comentario con una señal bajista y los siguientes valores:
- La señal bajista
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
Tres líneas están por encima del precio, por lo que se ha formado una señal bajista.
El código completo del sistema comercial que opera según esta estrategia tendrá el aspecto siguiente:
//+------------------------------------------------------------------+ //| Alligator Signals System .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 three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //Getting value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue>teethValue && lipsValue>jawsValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
Diferencias en este código.
Las condiciones de esta estrategia.
Si hay una señal de compra:
if(lipsValue>teethValue && lipsValue>jawsValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
Si hay una señal de venta:
if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
Compilamos el código, buscamos el archivo del asesor resultante en el Navegador del terminal y ejecutamos el asesor en el gráfico del símbolo comercial:
En la esquina superior derecha del gráfico, veremos una indicación de que el asesor está funcionando. El asesor está funcionando y puede generar señales de compra y venta. A continuación, veremos varios ejemplos de pruebas.
Si hay una señal de compra:
Como podemos ver, la señal deseada se forma con los siguientes valores:
- Compra
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
Si hay una señal de venta:
Tenemos una señal con los siguientes valores:
- Venta
- Valor de Jaws = n
- Valor de Teeth = n
- Valor de Lips = n
Las tres líneas están por encima del precio, por lo que se ha formado una señal de venta.
El código completo del sistema comercial que opera según esta estrategia tendrá el aspecto siguiente:
//+------------------------------------------------------------------+ //| Alligator Signals System Enhancement.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 three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; MqlRates pArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); int Data=CopyRates(_Symbol,_Period,0,1,pArray); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //Getting value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
Diferencias en este código.
Ahora crearemos un array adicional para los precios utilizando la función MqlRates, que almacenará la información sobre el precio, el volumen y el spread.
MqlRates pArray[];
Luego recuperaremos los datos históricos de MqlRates utilizando la función CopyRates. Parámetros de la función:
- symbol — nombre del símbolo; en nuestro caso, _Symbol
- timeframe — periodo de tiempo a calcular (_period)
- start_pos — indica la posición del inicio del cálculo; estableceremos 0
- count — cantidad de datos para copiar; indicaremos 1
- rates_array[] — array al que copiamos los datos, pArray
int Data=CopyRates(_Symbol,_Period,0,1,pArray);
Condiciones de la estrategia.
Si hay una señal de compra:
if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
Si hay una señal de venta:
if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
Después de compilar el código y ejecutar el programa, el asesor comenzará a funcionar en el gráfico, generando señales de compra y venta:
El icono en la esquina superior derecha del gráfico nos muestra que el indicador está en funcionamiento y puede generar señales. A continuación, le mostraremos varios ejemplos de este tipo de señales.
Si hay una señal de compra:
En el gráfico anterior, se muestra un comentario con los siguientes valores en la esquina superior izquierda del gráfico:
- Compra
- Valor de Jaws = n
- Valor de Teeth = n
- Precio de cierre: n
- Valor de Lips = n
Si hay una señal de venta:
En el gráfico anterior, hay un comentario en la esquina superior izquierda:
- Venta
- Valor de Jaws = n
- Valor de Teeth = n
- Precio de cierre: n
- Valor de Lips = n
Aquí, las tres líneas están por debajo de los precios y el precio de cierre ha resultado por debajo de la línea de los dientes del caimán.
Conclusión
En este artículo, hemos analizado el indicador técnico Alligator, que puede utilizarse para confirmar una tendencia. Asimismo, hemos descubierto cómo calcularlo manualmente. También hemos visto ejemplos de estrategias simples para ver cómo se puede utilizar este indicador. Las estrategias son las siguientes:
- El identificador de tendencia Alligator, para generar señales alcistas o bajistas basadas en la posición de las tres líneas Alligator.
- El sistema de señales Alligator, que genera señales de compra y venta basadas en el cruce de tres líneas indicadoras.
- El sistema de señal Alligator avanzado, que genera señales de compra y venta basadas en el cruce de las tres líneas del indicador y la posición del precio de cierre en relación con el indicador.
Asimismo, hemos desarrollado esquemas paso a paso para cada estrategia analizada que nos serán útiles a la hora de escribir el código del sistema comercial. Además, hemos escrito asesores en MQL5 para cada estrategia, hemos obtenido programas que pueden funcionar en la plataforma comercial MetaTrader 5, y también hemos visto varios ejemplos de señales generadas para estas estrategias. Una vez más, resultará esencial que ponga a prueba cuidadosamente cualquier nuevo conocimiento antes de aplicarlo a su cuenta real: así se asegurará de que se adapte a su estilo y comprensión del comercio. Al fin y al cabo, lo que funciona para otros no tiene por qué funcionar para usted. Además, no olvides que el objetivo principal de las estrategias es ilustrativo.
Esperamos que el lector escriba su propio código repitiendo todo lo que hemos hablado en este artículo. Este enfoque le permitirá desarrollar sus habilidades de programación de forma más eficaz y también podrá aportarle nuevas ideas. Si le ha gustado este artículo, o si lo ha encontrado útil, por favor, lea mis artículos anteriores de la misma serie donde aprendemos a desarrollar sistemas comerciales basados en indicadores técnicos populares. Ya hemos analizado Stochastic, RSI, Bollinger Bands, Moving Averages, Envelopes, MACD, ADX y otros indicadores.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/11549





- 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