
Aprendiendo a diseñar un sistema de trading con Awesome Oscillator
Introducción
Bienvenidos a un nuevo artículo de la serie dedicada al análisis de indicadores técnicos populares y la creación de sistemas comerciales basados en ellos. En este artículo, trabajaremos con el indicador Awesome Oscillator: estudiaremos con detalle qué es y qué mide, y también veremos cómo utilizarlo, usando estrategias simples como ejemplos. También crearemos nuestros propios sistemas comerciales basados en las estrategias discutidas.
Para estudiar el indicador con detalle, como siempre, dividiremos el trabajo en varias subsecciones:
- Definición del indicador Awesome Oscillator
- Estrategias según el indicador Awesome Oscillator
- Esquemas de estrategias según Awesome Oscillator
- Sistemas comerciales basados en Awesome Oscillator
- Conclusión
Los códigos de este artículo se escribirán en MQL5 (MetaQuotes Language 5), y las aplicaciones resultantes se ejecutarán en el terminal comercial MetaTrader 5. El lenguaje MQL5 está integrado en la plataforma MetaTrader 5. Si quiere saber más sobre cómo instalarlos y utilizarlos, le recomiendo que lea "Escribiendo el código MQL5 en el MetaEditor" en uno de los artículos anteriores. Recomendamos a todos los lectores a que descarguen y apliquen por su cuenta todo lo discutido aquí: precisamente con la práctica logrará desarrollar sus habilidades.
¡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 Awesome Oscillator
En esta sección, aprenderemos con detalle qué es el indicador Awesome Oscillator (AO). El indicador AO fue desarrollado por Bill Williams para medir el impulso, y se puede utilizar para concretar qué fuerza domina el mercado: el lado de los compradores o el de los vendedores. El indicador mide el impulso comparando el impulso de las últimas cinco barras/velas con el impulso de las últimas 34 barras/velas en un marco temporal mayor, en otras palabras, compara el impulso reciente con el impulso de un marco temporal mayor. En cuanto al análisis técnico, resulta más útil obtener la confirmación de una señal AO de otro indicador o instrumento. Las señales son más precisas cuando se usan varios instrumentos juntos. Para entender mejor lo que mide este indicador, echaremos un vistazo a los componentes que integran el cálculo. Para ello, calcularemos manualmente el valor del indicador.
El indicador AO supone la diferencia entre una media móvil simple de 5 periodos y una media móvil simple de 34 periodos. Para calcular el AO, utilizaremos el precio mediano.
MEDIAN PRICE = (HIGH + LOW) / 2
AO = SMA (MEDIAN PRICE, 5) - SMA (MEDIAN PRICE, 34)
donde:
MEDIAN PRICE — precio mediano del instrumento
HIGH — precio máximo
LOW — precio mínimo
AO — valor de Awesome Oscillator
SMA = media móvil simple
Pero no hay necesidad de calcular el indicador manualmente, ya que tenemos un Awesome Oscillator listo para usar en el terminal comercial MetaTrader 5: todo lo que tenemos que hacer es seleccionarlo de la lista de indicadores.
Veamos cómo se ejecuta el indicador en el gráfico. Abrimos MetaTrader 5, clicamos en "Insertar" --> Indicadores --> Bill Williams --> Awesome Oscillator
Después de ello, se abrirá una ventana con los parámetros del indicador.
donde:
1 — color para las lecturas ascendentes
2 — grosor del histograma del indicador
3 — color para las lecturas descendentes
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:
Como podemos ver en el gráfico anterior, ha aparecido una ventana de indicador adicional en la parte inferior, con las columnas del histograma fluctuando alrededor de cero.
Estrategias según el indicador Awesome Oscillator
En esta parte, veremos sencillas estrategias ilustrativas y utilizaremos el indicador AO como ejemplo. En general, antes de usar cualquiera de los desarrollos en una cuenta real, siempre deberá ponerlo a prueba para asegurarse de que resulte adecuado para usted. Para las estrategias analizadas, podría ser necesario realizar una optimización. Al fin y al cabo, el objetivo principal de su desarrollo es el aprendizaje, mostrar cómo podemos utilizar el indicador en la práctica. También resultará útil usar este indicador junto con otras herramientas técnicas para obtener más información y ver el panorama general. Esta es una de las mejores características del análisis técnico, ya que nos permite usar una combinación de diferentes conceptos y obtener más información sobre un instrumento desde diferentes perspectivas. En este artículo, probaremos el indicador junto con una media móvil: esta combinación debería generar señales de compra y venta más fiables.
Esta estrategia producirá una señal alcista o bajista basada en el cruce entre el valor actual de AO y el nivel cero. Si el valor actual de AO es superior a cero, tendremos una señal alcista. Si el valor actual de AO es inferior a cero, tendremos una señal bajista.
Esquemáticamente:
Valor actual AO > 0 --> Alcista
Valor actual de AO < 0 --> Bajista
Según esta estrategia obtendremos una señal de la fuerza del movimiento de AO basada en la posición del AO actual y el valor medio de las últimas lecturas durante 5 periodos. Si el valor actual de AO es superior a la media, esto será una señal de la fuerza del movimiento de AO. Si el valor actual de AO es inferior a la media, esto será una señal de un movimiento débil de AO.
Esquemáticamente:
Valor actual de AO > AVG en 5 periodos AO --> AO fuerte
Valor actual de AO < AVG en 5 periodos AO --> AO débil
Según esta estrategia, recibiremos señales de compra o venta basadas en el cruce del indicador AO actual y el nivel cero, y también analizaremos la posición del precio de cierre con respecto a una media móvil exponencial de 50 periodos. Si el AO actual está por encima del nivel cero y el precio de cierre se encuentra por encima de la EMA de 50 periodos, tendremos una señal de compra. Si el AO actual está por debajo del nivel cero y el precio de cierre se encuentra por debajo de la EMA de 50 periodos, tendremos una señal de venta.
Esquemáticamente:
AO actual > nivel cero Y precio de cierre > EMA de 50 periodos --> señal de compra
AO actual < nivel cero Y precio de cierre < EMA de 50 periodos --> señal de venta
Esquemas de estrategias según Awesome Oscillator
A continuación, desarrollaremos esquemas paso a paso para cada una de las estrategias analizadas; esto nos ayudará a desarrollar sistemas comerciales basados en ellas.
Como parte de esta estrategia, crearemos un sistema comercial que genere señales alcistas o bajistas comparando constantemente dos valores: el AO actual y el nivel cero del indicador. Partiendo de las posiciones de estos valores en relación con los demás, se sacará una conclusión sobre la situación del mercado. Si el valor de AO es superior a cero, el sistema comercial deberá mostrar un comentario en el gráfico con los siguientes valores:
- Alcista
- Valor AO: n
En el escenario opuesto, si el valor de AO está por debajo de cero, el sistema comercial debería mostrar un comentario en el gráfico con los siguientes valores:
- Bajista
- Valor AO: n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Como parte de esta estrategia, crearemos un sistema comercial que generare señales sobre la fuerza de AO comparando continuamente dos valores: el AO actual y la media del rendimiento del indicador en los cinco periodos anteriores. Compararemos los dos valores y determinaremos su posición en relación con el otro. Si el valor actual es superior a la media, el sistema comercial mostrará un comentario en el gráfico con los siguientes valores (se trata de la propia señal y de los valores a partir de los cuales se ha generado la señal):
- El movimiento de AO es fuerte
- AO CurrVal : n
- AO FirstVal : n
- AO SecondVal : n
- AO ThirdVal : n
- AO FourthVal : n
- AO FifthVal : n
- AO AvgVal : n
Si el valor de AO actual es inferior a la media, el sistema comercial mostrará un comentario diferente en el gráfico:
- El movimiento de AO es débil
- AO CurrVal : n
- AO FirstVal : n
- AO SecondVal : n
- AO ThirdVal : n
- AO FourthVal : n
- AO FifthVal : n
- AO AvgVal : n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Según la descripción de la estrategia en la sección anterior, crearemos un sistema comercial que se pueda utilizar para generar un comentario con señales de compra y venta. Esto requerirá un análisis continuo de cuatro valores, a saber:
- El valor actual de AO
- El nivel cero del indicador AO
- El precio de cierre
- Una media móvil de 50 periodos
Si el valor actual de AO es superior a cero y el precio de cierre está por encima de la media de 50 periodos, el sistema comercial mostrará un comentario en el gráfico con los siguientes valores:
- Compra
- Precio de cierre: n
- Valor AO: n
- Valor MA: n
En el escenario opuesto, si el valor AO es inferior a cero y el precio de cierre está por debajo de la media de 50 periodos, el sistema comercial deberá mostrar un comentario en el gráfico con los siguientes valores:
- Venta
- Precio de cierre: n
- Valor AO: n
- Valor MA: n
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Sistemas comerciales basados en Awesome Oscillator
Así que ya hemos llegado a la parte más interesante del artículo: la creación de sistemas comerciales para las estrategias comentadas anteriormente. En primer lugar, escribiremos un programa sencillo que mostrará un comentario en el gráfico con el valor actual del indicador AO. Esto servirá como base para todos los demás sistemas.
Vamos a ver paso a paso la creación de un sistema comercial de este tipo.
Para ello, crearemos el array aoArray usando la función "double":
double aoArray[];
Luego estableceremos la bandera de clasificación como en la serie temporal AS_SERIES usando la función ArraySetAsSeries, que retornará true o false: Parámetros de la función:
- array[] — es un array; en nuestro caso, aoArray.
- flag — establece la bandera "true" para indicar la dirección de indexación en el array.
ArraySetAsSeries(aoArray,true);
A continuación, definiremos el indicador AO usando la función iAO, que retornará el manejador del indicador. Parámetros de la función:
- symbol — símbolo sobre el que se calcula el indicador; utilizaremos el actual (_Symbol).
- period — periodo del cálculo del indicador; utilizaremos el periodo actual (_period).
int aoDef = iAO(_Symbol,_Period);
Luego recuperaremos los datos del búfer del indicador AO usando la función CopyBuffer. Parámetros de la función:
- indicator_handle — manejador estándar del indicador aoDef
- buffer_num — número del búfer de indicador; lo estableceremos en 0.
- 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, en nuestro caso, será aoArray
CopyBuffer(aoDef,0,0,3,aoArray);
Después definiremos el valor de AO; para ello, crearemos la variable double aoVal para él y normalizaremos utilizando la función NormalizeDouble. Parámetros de la función Normalizedouble:
- value — número normalizado; en nuestro caso, aoArray[0].
- digits — número de dígitos después del punto decimal. Utilizaremos (7).
double aoVal = NormalizeDouble(aoArray[0],7);
Luego generaremos un comentario en el gráfico con el valor actual de AO utilizando la función Comment:
Comment("AO Value is ",aoVal);
A continuación, le mostramos el código completo para crear la estrategia mencionada:
//+------------------------------------------------------------------+ //| Simple AO.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" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void OnTick() { double aoArray[]; ArraySetAsSeries(aoArray,true); int aoDef = iAO(_Symbol,_Period); CopyBuffer(aoDef,0,0,3,aoArray); double aoVal = NormalizeDouble(aoArray[0],7); Comment("AO Value is ",aoVal); } //+------------------------------------------------------------------+
Después de ello, compilaremos el código del asesor. Si todo es correcto y el programa se ha compilado correctamente, el archivo del asesor aparecerá en la ventana del Navegador en el terminal:
Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Esto hará que aparezca la ventana del asesor así:
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 veremos una indicación de que el asesor está funcionando. Ahora estamos listos para recibir las señales generadas por el asesor. A continuación, le mostraremos un ejemplo de dicha señal:
En el gráfico anterior, la señal con el valor AO actual generado por el asesor se muestra como un comentario en la esquina superior izquierda.
Vamos a crear un sistema comercial basado en esta estrategia de cruce del valor AO y el nivel cero. A continuación, le mostraremos el código completo de este sistema:
//+------------------------------------------------------------------+ //| AO Zero Crossover.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() { double aoArray[]; ArraySetAsSeries(aoArray,true); int aoDef = iAO(_Symbol,_Period); CopyBuffer(aoDef,0,0,3,aoArray); double aoVal = NormalizeDouble(aoArray[0],7); if(aoVal > 0) { Comment("Bullish","\n" "AO Value is ",aoVal); } if(aoVal < 0) { Comment("Bearish","\n" "AO Value is ",aoVal); } } //+------------------------------------------------------------------+
Diferencias en este código.
Condiciones de esta estrategia.
En el caso de una señal alcista:
if(aoVal > 0) { Comment("Bullish","\n" "AO Value is ",aoVal); }
En caso de una señal bajista:
if(aoVal < 0) { Comment("Bearish","\n" "AO Value is ",aoVal); }
Después de ello, compilaremos el código del asesor. Si todo es correcto y el programa se compila correctamente, el archivo del asesor aparecerá en la ventana del Navegador en el terminal, lo ejecutaremos como el programa anterior. En el gráfico, tendrá el aspecto siguiente:
La indicación en la esquina superior derecha del gráfico mostrará que el asesor ha sido iniciado y se está ejecutando en el gráfico. El asesor funciona y genera 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:
- Alcista
- El valor actual de AO
Ejemplo de señal bajista:
El comentario del gráfico muestra los siguientes valores:
- Bajista
- El valor actual de AO
Por lo tanto, la estrategia funciona y genera las señales alcistas y bajistas correspondientes.
A continuación, le mostramos el código completo para crear la estrategia mencionada:
//+------------------------------------------------------------------+ //| AO 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() { double aoArray[]; ArraySetAsSeries(aoArray,true); int aoDef = iAO(_Symbol,_Period); CopyBuffer(aoDef,0,0,6,aoArray); double aoCurrVal = NormalizeDouble(aoArray[0],6); double aoFifthVal = NormalizeDouble(aoArray[1],6); double aoFourthVal = NormalizeDouble(aoArray[2],6); double aoThirdVal = NormalizeDouble(aoArray[3],6); double aoSecondVal = NormalizeDouble(aoArray[4],6); double aoFirstVal = NormalizeDouble(aoArray[5],6); double aoAvgVal = NormalizeDouble((aoFifthVal+aoFourthVal+aoThirdVal+aoSecondVal+aoFirstVal)/5,6); if(aoCurrVal > aoAvgVal) { Comment("AO Movement is strong","\n", "AO CurrVal : ",aoCurrVal,"\n", "AO FirstVal : ",aoFifthVal,"\n", "AO SecondVal : ",aoFourthVal,"\n", "AO ThirdVal : ",aoThirdVal,"\n", "AO FourthVal : ",aoSecondVal,"\n", "AO FifthVal : ",aoFirstVal,"\n", "AO AvgVal : ",aoAvgVal ); } if(aoCurrVal < aoAvgVal) { Comment("AO Movement is Weak","\n", "AO CurrVal : ",aoCurrVal,"\n", "AO FirstVal : ",aoFifthVal,"\n", "AO SecondVal : ",aoFourthVal,"\n", "AO ThirdVal : ",aoThirdVal,"\n", "AO FourthVal : ",aoSecondVal,"\n", "AO FifthVal : ",aoFirstVal,"\n", "AO AvgVal : ",aoAvgVal ); } } //+------------------------------------------------------------------+
Diferencias en este código:
Usando la función NormalizeDouble, determinaremos los valores del valor actual de AO y los cinco valores anteriores:
double aoCurrVal = NormalizeDouble(aoArray[0],6); double aoFifthVal = NormalizeDouble(aoArray[1],6); double aoFourthVal = NormalizeDouble(aoArray[2],6); double aoThirdVal = NormalizeDouble(aoArray[3],6); double aoSecondVal = NormalizeDouble(aoArray[4],6); double aoFirstVal = NormalizeDouble(aoArray[5],6);
Luego encontraremos el valor medio de AO en cinco periodos:
double aoAvgVal = NormalizeDouble((aoFifthVal+aoFourthVal+aoThirdVal+aoSecondVal+aoFirstVal)/5,6);
Las condiciones de esta estrategia.
Ejemplo de movimiento de AO fuerte:
if(aoCurrVal > aoAvgVal) { Comment("AO Movement is strong","\n", "AO CurrVal : ",aoCurrVal,"\n", "AO FirstVal : ",aoFifthVal,"\n", "AO SecondVal : ",aoFourthVal,"\n", "AO ThirdVal : ",aoThirdVal,"\n", "AO FourthVal : ",aoSecondVal,"\n", "AO FifthVal : ",aoFirstVal,"\n", "AO AvgVal : ",aoAvgVal ); }
Ejemplo de movimiento de AO débil:
if(aoCurrVal < aoAvgVal) { Comment("AO Movement is Weak","\n", "AO CurrVal : ",aoCurrVal,"\n", "AO FirstVal : ",aoFifthVal,"\n", "AO SecondVal : ",aoFourthVal,"\n", "AO ThirdVal : ",aoThirdVal,"\n", "AO FourthVal : ",aoSecondVal,"\n", "AO FifthVal : ",aoFirstVal,"\n", "AO AvgVal : ",aoAvgVal ); }
Después de ello, compilaremos el código del asesor. Si el programa se ha compilado sin errores, localizaremos el archivo del asesor en la ventana del Navegador y lo ejecutaremos en el gráfico. Veremos lo siguiente:
Como podemos ver en la captura de pantalla, en la esquina superior derecha del gráfico se muestra una indicación de que el asesor está funcionando.
Ejemplo de una señal de AO fuerte:
En la esquina superior izquierda del gráfico, aparecerá un comentario con la señal y los siguientes valores:
- El movimiento de AO es fuerte
- AO CurrVal : n
- AO FirstVal : n
- AO SecondVal : n
- AO ThirdVal : n
- AO FourthVal : n
- AO FifthVal : n
- AO AvgVal : n
Ejemplo de una señal de AO débil:
En la esquina superior izquierda del gráfico, aparecerá un comentario con la señal y los siguientes valores:
- El movimiento de AO es débil
- AO CurrVal : n
- AO FirstVal : n
- AO SecondVal : n
- AO ThirdVal : n
- AO FourthVal : n
- AO FifthVal : n
- AO AvgVal : n
Por lo tanto, el asesor para esta estrategia funciona y genera las señales correspondientes.
Para este sistema comercial, el código será el siguiente:
//+------------------------------------------------------------------+ //| AO & MA Strategy.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() { MqlRates pArray[]; double aoArray[]; double maArray[]; int Data=CopyRates(_Symbol,_Period,0,1,pArray); ArraySetAsSeries(aoArray,true); ArraySetAsSeries(maArray,true); int aoDef = iAO(_Symbol,_Period); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE); CopyBuffer(aoDef,0,0,3,aoArray); CopyBuffer(maDef,0,0,3,maArray); double closingPrice = pArray[0].close; double aoVal = NormalizeDouble(aoArray[0],7); double maVal = NormalizeDouble(maArray[0],7); if(aoVal > 0 && closingPrice > maVal) { Comment("Buy","\n" "Closing Price is ",closingPrice,"\n", "AO Value is ",aoVal,"\n", "MA Value is ",maVal); } if(aoVal < 0 && closingPrice < maVal) { Comment("Sell","\n" "Closing Price is ",closingPrice,"\n", "AO Value is ",aoVal,"\n", "MA Value is ",maVal); } } //+------------------------------------------------------------------+
Diferencias en este código.
Crea tres arrays: pArray, aoArray y maArray. Usaremos la función double para aoArray y maArray, y para pArray utilizaremos la función MqlRates para almacenar la información sobre el precio, el volumen y el spread.
MqlRates pArray[]; double aoArray[]; double maArray[];
Luego estableceremos la bandera AS_SERIES para los arrays aoArray y maArray. Después utilizaremos la función CopyRates para rellenar el array y obtener los datos históricos de MqlRates. Parámetros de la función:
- symbol_name — nombre del símbolo; indicaremos _Symbol para usar el actual
- period — periodo de cálculo del indicador; usaremos el periodo actual (_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 en la que se copian los datos
int Data=CopyRates(_Symbol,_Period,0,1,pArray); ArraySetAsSeries(aoArray,true); ArraySetAsSeries(maArray,true);
A continuación, definiremos AO y MA:
Para el indicador AO, usaremos la función iOA.
Para la media móvil MA, utilizaremos la función iMA con estos parámetros:
- symbol — nombre del símbolo; en nuestro caso, _Symbol
- period — periodo; en nuestro caso, _period
- ma_period — periodo para calcular la media; para nosotros será 50
- ma_shift — desplazamiento horizontal; lo estableceremos en 0
- ma_method — tipo de suavización de la media móvil; utilizaremos la exponencial.
- applied_price — define el tipo de precio utilizado para el cálculo; nosotros utilizaremos el precio de cierre
int aoDef = iAO(_Symbol,_Period); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
Vamos a recuperar los datos del búfer de los indicadores AO y MA usando la función "CopyBuffer".
CopyBuffer(aoDef,0,0,3,aoArray); CopyBuffer(maDef,0,0,3,maArray);
A continuación, definiremos el precio de cierre, aoArray y maArray.
double closingPrice = pArray[0].close; double aoVal = NormalizeDouble(aoArray[0],7); double maVal = NormalizeDouble(maArray[0],7);
Las condiciones de la estrategia.
Con una señal de compra
if(aoVal > 0 && closingPrice > maVal) { Comment("Buy","\n" "Closing Price is ",closingPrice,"\n", "AO Value is ",aoVal,"\n", "MA Value is ",maVal); }
Señal de venta
if(aoVal < 0 && closingPrice < maVal) { Comment("Sell","\n" "Closing Price is ",closingPrice,"\n", "AO Value is ",aoVal,"\n", "MA Value is ",maVal); }
Luego compilaremos el código del asesor y este aparecerá en la ventana del Navegador en el terminal, desde donde lo ejecutaremos en el gráfico:
Podemos ver que el asesor experto está adjunto al gráfico, así como el icono correspondiente en la esquina superior derecha. El asesor está listo para generar señales.
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
- Precio de cierre: n
- Valor AO: n
- Valor MA: n
Ejemplo de señal de venta:
En el gráfico aparecerá un comentario con los valores de la señal y de los indicadores:
- Venta
- Precio de cierre: n
- Valor AO: n
- Valor MA: n
Conclusión
En el artículo de hoy, hemos analizado el indicador Awesome Oscillator y todos sus detalles: qué es, qué mide y cómo se puede calcular manualmente. Asimismo, hemos visto cómo encontrar y ejecutar en el gráfico el indicador incorporado en MetaTrader 5. Asimismo, hemos visto cómo usarlo con estrategias sencillas basadas en su concepto básico. Hemos analizado las tres estrategias siguientes:
- La primera estrategia es "Cruce de AO y el Nivel Cero", que sirve para obtener señales alcistas y bajistas basadas en el cruce del nivel cero.
- La segunda estrategia es "Fuerza de AO", que señala la fuerza del movimiento de AO basándose en la posición del valor de AO y el valor medio de las cinco lecturas anteriores.
- La tercera estrategia es "Señales según AO y MA", que genera señales de compra y venta basadas en la posición de AO actual respecto al nivel cero, y del precio de cierre respecto a la EMA de 50 periodos.
Después de eso, hemos creado planes paso a paso para desarrollar cada una de las estrategias discutidas. Dichos planes ayudan a desarrollar organizadamente ideas en forma de esquemas comprensibles. Por último, hemos creado sistemas automáticos basados en cada una de las estrategias comentadas. Estos han sido diseñados para funcionar en el terminal comercial MetaTrader 5.
Esperamos que escriba su propio código repitiendo todo lo que hemos hablado en este artículo. En primer lugar, le ayudará a entender mejor las ideas analizadas, y en segundo lugar, podrá encontrar nuevas ideas mientras trabaja en las 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.
Si le ha gustado este artículo y lo ha encontrado útil, lea los artículos anteriores de la misma serie para aprender a desarrollar un sistema comercial basado en los indicadores técnicos más populares.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/11468





- 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
Nuevo artículo Aprenda a diseñar un sistema de trading por Awesome Oscillator ha sido publicado:
Autor: Mohamed Abdelmaaboud
Gracias por su gran trabajo, por favor haga uno basado en Fractales Williams.
De nada, lo intentaré.
Gracias @Mohamed Abdelmaaboud por estos maravillosos artículos. Desafortunadamente, tengo una cuenta con Oanda y no permiten MT5 porque estoy en Europa (Irlanda) dijeron.Me preguntaba si sería tan amable de crear este artículo para MQL4. Como estoy aprendiendo a codificar algunos EAs, Creo que este sería un gran punto de partida. Traté de poner algo de este código en MQL4 y tiene algunos errores de compilación. He escrito algunos EAs yo mismo, pero no han tenido éxito en las cuentas de demostración. ¿Cómo pruebas normalmente estos EAs? ¿Es a través de Metatrader Test suite en sí o utiliza un paquete de software de pruebas por separado como Forex Tester 5? Me gustaría entender cómo probar correctamente un EA y ver lo bien que funciona en diferentes condiciones de mercado. Sería genial saber que el EA funciona bien en algunas condiciones de mercado antes de probarlo en una demo, etc Tal vez usted podría crear un artículo separado sobre cómo se puede lograr esto. Gracias de nuevo por sus contribuciones aquí.
Muchas gracias Brian Tansey por tu amable comentario.
Desafortunadamente, no puedo proporcionar aquí nuevos artículos de MQL4 ya que no están disponibles o no son compatibles ahora. Usted puede probar cualquier estrategia codificada por el probador de estrategia de MetaTrader como yo. Lo puedes encontrar en la pestaña Ver de MetaTrader --> Probador de Estrategias o presionando Ctrl+R mientras abres el MetaTrader.
Se ha publicado un nuevo artículo Aprenda a diseñar un sistema de trading basado en el Awesome Oscillator:
Autor: Mohamed Abdelmaaboud