![Aprendiendo a diseñar un sistema de trading con Williams PR](https://c.mql5.com/2/49/learnhow_williams_pr_600x314.jpg)
Aprendiendo a diseñar un sistema de trading con Williams PR
Introducción
Aquí tenemos un nuevo artículo de nuestra serie destinada a la creación de sistemas comerciales basados en indicadores técnicos populares. Esta vez vamos a crear sistemas comerciales sencillos basados en las lecturas del indicador Williams %R (%R, Rango Porcentual de Williams). Además de un examen exhaustivo del indicador técnico en sí mismo, veremos diferentes opciones de uso eficaz partiendo de su concepto interno. Creo que si entendemos la esencia de las cosas, no solo podremos utilizarlas con mayor eficacia, sino también encontrar nuevas ideas sobre el concepto analizado o incluso alguna otra herramienta relacionada directa o indirectamente con lo que estamos estudiando. En cualquier caso, nuestro principal objetivo será aprender a comerciar de forma más eficiente. Así que adoptaremos un enfoque en el que abordaremos la esencia, las raíces del material, para así entender mejor las cosas.
Al estudiar el indicador, el trabajo se dividirá de nuevo en varios temas:
- Definición del indicador Williams %R
- Estrategia del indicador Williams %R
- Esquema de desarrollo de la estrategia de Williams %R
- Sistema comercial del indicador Williams' %R
- Conclusión
En la primera sección, aprenderemos qué es el indicador de rango porcentual de Williams, cómo se construye, cómo se puede calcular y qué mide. Después, descubriremos cómo se puede usar. Para ello, en el apartado "Estrategia del indicador Williams %R", veremos ejemplos de algunas estrategias sencillas basadas en el concepto de este indicador. A continuación, desarrollaremos un plan paso a paso para cada estrategia analizada, que nos ayudará a abordar la tarea más importante dentro de este artículo: la escritura del código para un sistema comercial basado en este indicador. El plan para escribir el sistema lo crearemos en la sección "Esquema de desarrollo de la estrategia de Williams %R". Por último, llegaremos al tema más interesante de este artículo: la creación de un sistema comercial basado en las estrategias de indicadores que hemos analizado.
Creo que todos estos temas podrán enseñarnos los fundamentos de esta herramienta técnica y, lo que es más, mostrarnos cómo crear un sencillo sistema comercial basado en ella. El sistema comercial creado podrá utilizarse en la plataforma MetaTrader 5 para generar señales automáticamente. Por nuestra parte, creemos que lectores deberían poner en práctica por sí mismos todo lo que dice este artículo para comprender mejor el material. Una vez más: resulta de vital importancia probar a fondo cualquier señal antes de aplicarla a una cuenta real.
En este artículo utilizaremos la plataforma comercial MetaTrader 5, el editor de código incorporado MetaEditor y el lenguaje de programación MQL5 (MetaQuotes Language) para escribir asesores. Si no sabe cómo instalar MetaTrader 5 o utilizar el MetaEditor, le recomiendo que lea "Escribiendo el código MQL5 en el MetaEditor" en mi artículo anterior.
¡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.
Ahora procederemos explorar este tema, dando un paso más en nuestro camino hacia un comercio más eficiente.
Definición del indicador Williams %R
Así que, como hemos mencionado en la introducción, vamos a estudiar con detalle el indicador Williams %R. El rango porcentual de Willams (Williams' %R, WPR) es un indicador de impulso desarrollado por Larry Williams. Se podría decir que WPR es lo contrario de Stochastic porque la diferencia entre ambos radica en la forma de medirlos. También podríamos decir que WPR se puede utilizar de la misma forma que Stochastic. Si quiere saber más sobre Stochastic, le recomiendo que lea mi artículo "Aprendiendo a diseñar un sistema comercial basado en el Oscilador Estocástico". El indicador WPR mide la relación entre el precio de cierre y el rango de máximos y mínimos. Las puntuaciones de WPR fluctúan entre 0 y -100. Como WPR es un indicador de impulso, también podrá utilizarse para medir la fuerza de una tendencia. En artículos anteriores, hemos hablado muchas veces de las tendencias. Por ejemplo, podrá leer una descripción detallada de la tendencia en el artículo del enlace. Así, tendrá sentido vigilar los niveles importantes del indicador: -80, -20 y la mitad del rango de -50.
Deberíamos intentar combinar alguna otra herramienta técnica con este indicador, por ejemplo, herramientas de acción de precios, modelos gráficos, instrumentos de volumen y medias móviles. Haremos esto un poco más adelante en el artículo. En general, resulta muy útil compartir ideas, ya que de este modo podremos abordar más perspectivas a la hora de tomar decisiones comerciales adecuadas.
Veamos ahora cómo podemos calcular el indicador WPR. Para calcular el indicador, deberemos seguir algunos pasos:
- Calcular el máximo más alto = el valor más alto de los máximos en el periodo calculado
- Calcular el mínimo más bajo = el valor más bajo del mínimo del periodo de cálculo.
- WPR = (Máximo más alto - Cierre)/(Máximo más alto - Mínimo más bajo) * -100
Para entender mejor el cálculo, veremos un ejemplo de cálculo basado en datos reales. Tenemos este conjunto de datos de un instrumento.
Periodo | Máximo | Mínimo | Cierre |
---|---|---|---|
1 | 1.078 | 1.0678 | 1.0733 |
2 | 1.0788 | 1.0726 | 1.0777 |
3 | 1.0766 | 1.0697 | 1.0727 |
4 | 1.0733 | 1.0662 | 1.0724 |
5 | 1.074 | 1.0642 | 1.068 |
6 | 1.0749 | 1.0661 | 1.0734 |
7 | 1.0698 | 1.0558 | 1.0689 |
8 | 1.0599 | 1.0532 | 1.056 |
9 | 1.0608 | 1.046 | 1.0586 |
10 | 1.0565 | 1.046 | 1.0466 |
11 | 1.0556 | 1.0429 | 1.0547 |
12 | 1.0444 | 1.0388 | 1.0431 |
13 | 1.0421 | 1.035 | 1.0411 |
14 | 1.053 | 1.0353 | 1.0379 |
15 | 1.0577 | 1.0502 | 1.0511 |
16 | 1.0586 | 1.0525 | 1.0527 |
17 | 1.0594 | 1.0495 | 1.0555 |
18 | 1.0601 | 1.0482 | 1.0551 |
19 | 1.0642 | 1.0493 | 1.054 |
20 | 1.0632 | 1.0505 | 1.0621 |
21 | 1.0579 | 1.0491 | 1.052 |
22 | 1.0567 | 1.0491 | 1.051 |
23 | 1.0602 | 1.0381 | 1.0547 |
24 | 1.0509 | 1.0359 | 1.0443 |
25 | 1.0486 | 1.0396 | 1.0414 |
26 | 1.052 | 1.04. | 1.0408 |
27 | 1.0644 | 1.0505 | 1.0515 |
28 | 1.0775 | 1.0611 | 1.0614 |
29 | 1.0749 | 1.0671 | 1.0714 |
30 | 1.0715 | 1.0652 | 1.0699 |
Vamos a dar los pasos necesarios para calcular los valores de WPR. Tenga en cuenta que usaremos la configuración por defecto del periodo de 14.
1 - obtenemos el máximo más alto.
2 - obtenemos el mínimo más bajo.
3 - encontramos WPR.
Así que ya hemos calculado los valores de WPR. Obtendremos una línea que oscila entre los niveles 0 y -100 para la medición del impulso. Pero ahora no necesitamos calcular el indicador manualmente, ya que existe un indicador listo para usar en el terminal comercial MetaTrader 5: todo lo que tenemos que hacer es seleccionarlo de la lista de indicadores.
Después de ello, se abrirá la ventana de parámetros del asesor experto: Tendrá este aspecto:
1 — establecemos el periodo deseado para el cálculo.
2 — seleccionamos el color de la línea WPR.
3 — estilo de línea WPR.
4 — grosor de la línea WPR.
Además, podemos ajustar adicionalmente los niveles de los indicadores en la pestaña Levels, como mostramos a continuación:
En la figura anterior, podemos ver que tenemos dos niveles: -80 y -20. Son niveles importantes para identificar los valores altos y bajos. Además, podemos añadir otros niveles que pueden resultar útiles en el análisis, como el nivel -50. Para añadirlos, pulsaremos "Añadir" y seleccionaremos el nivel que se mostrará en la ventana del indicador en el gráfico.
Una vez definidos todos los parámetros necesarios, pulsaremos "OK" y el indicador se ejecutará en el gráfico como se muestra a continuación.
Como podemos ver en la figura anterior, la línea negra de la ventana inferior del gráfico oscila entre los niveles 0 y -100: está midiendo el impulso. Además, el nivel medio del rango de -50 es un nivel importante, y ofrece información significativa sobre el movimiento de los precios, porque cuando WPR cruza el nivel de -50 de abajo a arriba, significa que el precio está cotizando en la mitad superior del rango formado entre el máximo y el mínimo del periodo de cálculo. Por el contrario, cuando WPR cruza el nivel -50 de arriba a abajo, significará que el precio está cotizando en la mitad inferior del rango. Además, si las lecturas del indicador están por debajo de -80, se tratará de una lectura baja que indicará que el precio está cotizando cerca de su mínimo. Si el indicador está por encima del nivel -20, esto indicará un valor alto, lo cual indicará que el precio está cotizando cerca de su máximo. Estos niveles de -80 y -20 forman zonas muy importantes que indican que el precio ha alcanzado el territorio de sobrecompra o sobreventa.
Estrategia del indicador Williams %R
En esta parte aprenderemos a usar el indicador Williams %R según su concepto, usando como ejemplo estrategias simples. Asimismo, analizaremos tres estrategias diferentes basadas en la idea del indicador. La primera estrategia se llamará Williams %R - OB and OS (zonas de sobrecompra y sobreventa); la segunda, Williams %R - crossover (cruce); y la tercera, Williams %R - MA. Vamos determinar cómo podemos utilizar estas estrategias.
- Estrategia uno: Williams %R - OB and OS (zonas de sobrecompra y sobreventa)
El indicador permite determinar cuándo un instrumento comercial está sobrecomprado o sobrevendido según una determinada condición. Cuando Williams %R está por debajo del nivel -80, será una señal de sobreventa. Cuando Williams %R está por encima del nivel -20, será una señal de sobrecompra.
Esta estrategia identificará los momentos en los que el precio alcanza las zonas de sobrecompra o sobreventa, y entonces podremos esperar el próximo movimiento según el valor del impulso.
Valor de WPR < -80 --> sobreventa
Valor de WPR > - 20 --> sobrecompra
- Estrategia dos: Williams %R — crossover (cruce)
Según esta estrategia, podemos recibir las señales de compra o venta generadas al darse el cruce entre el Williams %R actual, el valor anterior y el nivel -50. Cuando el valor de WPR anterior está por debajo de -50 y el valor actual es superior a -50, se tratará de una señal de compra. Cuando el valor de WPR anterior está por encima de -50 y el valor actual es inferior al nivel -50, se tratará de una señal de venta.
Esta estrategia genera señales de compra y venta basadas en el cruce con un nivel importante de -50, será más efectiva si se combina con otra herramienta técnica para confirmar estas señales.
WPR anterior < -50 y WPR actual > -50 --> señal de compra
WPR anterior > -50 y WPR actual < -50 --> señal de venta
- Estrategia tres: Williams %R - MA
Con esta estrategia, se nos notificará cuando se genere una señal de compra o de venta. Pero esta vez se utilizará una condición diferente: se formará una señal de compra cuando el precio Ask supere la media móvil y Williams %R se sitúe por encima del nivel -50. Se generará una señal de venta cuando el precio de compra se encuentre por debajo de la media móvil y el valor de Williams %R esté por debajo de la media móvil.
Esta estrategia nos permitirá obtener señales de compra y venta más seguras, ya que hemos añadido otra herramienta técnica, la media móvil, que confirma la señal actual y filtra las falsas rupturas.
Ask > valor MA y WPR > -50 --> señal de compra
Bid < valor MA y WPR < -50 --> señal de venta
Esquema de desarrollo de la estrategia de Williams %R
En esta sección, desarrollaremos un plan paso a paso para crear un sistema comercial basado en cada una de las estrategias analizadas. Considero este paso de mucha importancia en la creación de cualquier sistema comercial, ya que nos ayuda a entender lo que debemos hacer mostrando para ello pasos organizados.
- Estrategia uno: Williams %R - OB and OS (zonas de sobrecompra y sobreventa)
Según esta estrategia, escribiremos un plan paso a paso para crear un sistema comercial. Nuestro objetivo es crear un programa experto que compruebe y compare los tres valores en cada tick, determinando la posición de cada uno con respecto al otro. Estos son los valores del WPR actual, el nivel -80 y el nivel -20. Si el WPR actual está por debajo del nivel -80, el asesor debería mostrar un comentario en el gráfico indicando que se han formado las condiciones de sobreventa. De lo contrario, si el WPR actual está por encima del nivel -20, el asesor debería mostrar un comentario en el gráfico indicando que se han formado las condiciones de sobrecompra en el mercado.
La siguiente figura muestra el esquema de esta estrategia:
- Estrategia dos: Williams %R — crossover (cruce)
Según esta estrategia, el asesor debe generar señales de compra y venta basadas en el análisis de tres valores: el WP anterior, el WPR actual y el nivel -50. Para generar la señal correspondiente, el software deberá comparar estos tres valores en cada tick y determinar las posiciones del WPR anterior y actual en relación con el nivel -50. Si el valor del WPR anterior está por debajo de -50 y el valor del WPR actual está por debajo de -50, el asesor deberá crear y mostrar una señal de compra y también mostrar los valores del Williams %R actual y el anterior. Si el valor del WPR anterior está por encima de -50 y valor del WPR actual está por encima de -50, el asesor también deberá generar y mostrar una señal de venta y de nuevo mostrar un comentario con los valores del Williams %R actual y anterior.
A continuación, le mostramos el esquema de esta estrategia.
- Estrategia tres: Williams %R - MA
Vamos a crear un sistema comercial que genere señales de compra y venta según un conjunto de condiciones y una confirmación adicional. El asesor deberá comprobar continuamente los niveles de Ask y Bid, el valor WPR, la media actual y el nivel -50. Si el asesor determina que el precio Ask está por encima de la media móvil y el valor WPR está por encima del nivel -50, debería generar una señal de compra y también mostrar un comentario en el gráfico con los valores de Williams %R y de la media móvil exponencial. Si el precio Bid está por debajo de la media móvil y WPR está por debajo de -50, el asesor debería generar una señal de venta y mostrar el Williams %R y la media exponencial en el gráfico.
Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:
Sistema comercial del indicador Williams' %R
En esta parte, veremos cómo crear un sistema comercial basado en las estrategias analizadas: esta será la parte más interesante del artículo. En primer lugar, escribiremos un sencillo programa que mostrará un comentario en el gráfico con el valor del indicador Williams' %R. Esto servirá de base para todos los demás sistemas.
Así pues, vamos a ver cómo escribir el código de un sistema comercial de este tipo:
- Primero, crearemos un array utilizando una función de tipo double que represente valores de punto flotante.
double WPArray[];
- Luego clasificaremos el array de precios creado partiendo de los datos actuales, para ello, usaremos la función ArraySetAsSeries: esta retornará true en caso de éxito o false en caso de fallo (bool). Los parámetros de esta función serán array[] y una bandera.
ArraySetAsSeries(WPArray,true);
- Después, definiremos las propiedades del indicador Williams %R usando la función iWPR. Para ello, crearemos una variable entera WPDef para definir el Williams %R. La función iWPR retornará el manejador del indicador Williams' Percent Range. Los parámetros serán el nombre del símbolo, el periodo y el periodo del promedio.
- Utilizaremos _Symbol, el trabajo con el símbolo del gráfico actual, y _Period, el marco temporal del gráfico actual.
int WPDef = iWPR(_Symbol,_Period,14);
- A continuación, copiaremos los datos de precio en el array creado usando la función CopyBuffer. Esta retorna la cantidad de datos copiados o -1 en caso de error. Los parámetros de la función serán el manejador del indicador, el búfer de indicador, la posición inicial, la cantidad de datos a copiar y el array de destino a copiar.
CopyBuffer(WPDef,0,0,3,WPArray);
- Después de ello, obtendremos los valores del indicador Williams %R para los datos actuales usando la función NormalizeDouble. Para ello, crearemos la variable double WPValue, que obtendrá el valor. Los parámetros de la función NormalizeDouble serán: el número normalizado y el número de decimales.
double WPVal = NormalizeDouble(WPArray[0],2);
- Con la ayuda de la función Comment, mostraremos un comentario con el valor de Williams %R.
Comment("Williams' %R Value is",WPVal);
Este será el aspecto del código completo de este programa, que contendrá todas las funciones comentadas:
//+------------------------------------------------------------------+ //| Simple Williams%R.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 WPArray[]; ArraySetAsSeries(WPArray,true); int WPDef = iWPR(_Symbol,_Period,14); CopyBuffer(WPDef,0,0,3,WPArray); double WPVal = NormalizeDouble(WPArray[0],2); Comment("Williams' %R Value is",WPVal); } //+------------------------------------------------------------------+
Una vez compilado, el asesor aparecerá en la ventana del Navegador en MetaTrader 5, en la subcarpeta "Expert Advisors", como se muestra en la siguiente captura de pantalla:
Arrastramos nuestro programa desde el Navegador al gráfico y lo soltamos. Se abrirá una ventana como esta:
Pulsamos OK en la ventana y el programa se iniciará en el gráfico.
A continuación, mostramos un ejemplo de las señales generadas por este sistema comercial durante las pruebas.
Como podemos ver en este ejemplo, el asesor ha generado un comentario en la esquina superior izquierda del gráfico con el valor WPR actual. Para comprobar que la señal generada coincide con el indicador incorporado en MetaTrader 5, podemos mirar la siguiente imagen.
Como podemos ver en la captura de pantalla, el asesor experto y el indicador se están ejecutando en el gráfico, y ambos están generando el mismo valor. En la esquina superior derecha, podemos ver que el asesor Simple Williams %R se está ejecutando en el gráfico, y en la esquina superior izquierda se ve un comentario con la señal generada por él. El valor del indicador es -78,15, que es el mismo que el valor del indicador incorporado ejecutado en el gráfico en la ventana del indicador adicional: el mismo valor se muestra sobre la línea WPR en el lado izquierdo.
- Estrategia uno: Williams %R - OB and OS (zonas de sobrecompra y sobreventa)
Basándonos en esta estrategia, crearemos un sistema comercial capaz de generar señales e informarnos automáticamente cuando el precio alcance las zonas de sobrecompra o sobreventa. A continuación, le mostramos el código completo para crear la estrategia mencionada:
//+------------------------------------------------------------------+ //| Williams%R - OB & OS.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 WPArray[]; ArraySetAsSeries(WPArray,true); int WPDef = iWPR(_Symbol,_Period,14); CopyBuffer(WPDef,0,0,3,WPArray); double WPVal = NormalizeDouble(WPArray[0],2); if(WPVal<-80) { Comment("Over Sold"); } if(WPVal>-20) { Comment("Over Bought"); } } //+------------------------------------------------------------------+
En este código, hemos añadido nuevas partes a las funciones existentes.
Condiciones de sobreventa:
if(WPVal<-80) { Comment("Over Sold"); }
Condiciones de sobrecompra:
if(WPVal>-20) { Comment("Over Bought"); }
Para ejecutar el código compilado en la plataforma MetaTrader 5 y generar automáticamente la señal, haremos lo siguiente:
Localizamos el archivo del asesor en la ventana del navegador.
Lo arrastramos y lo soltamos en el gráfico cuyas señales necesitamos recibir. La ventana de inicio tendrá el aspecto siguiente:
Permitimos de nuevo el comercio automático «Allow Algo» y pulsamos OK. El asesor se iniciará en el gráfico.
La siguiente captura de pantalla muestra un ejemplo con las señales generadas al realizar pruebas basadas en esta estrategia.
Sobrecompra:
En esta captura de pantalla, podemos ver que el asesor ha generado una señal de sobrecompra, porque en la ventana adicional el indicador WPR ha subido por encima del nivel -20, lo cual indica que los precios están cotizando cerca del máximo de los últimos 14 periodos.
Sobreventa
En este ejemplo, el valor ha caído por debajo del nivel -80, es decir, los precios están cotizando cerca de su mínimo, por lo que se ha generado una señal de sobreventa.
- Estrategia dos: Williams %R — crossover (cruce)
Un sistema basado en esta estrategia debería mostrar un comentario en el gráfico con las señales de compra y venta basadas en los niveles de cruce. El código completo de un sistema comercial basado en esta estrategia es el siguiente:
//+------------------------------------------------------------------+ //| Williams%R - 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 WPArray[]; ArraySetAsSeries(WPArray,true); int WPDef = iWPR(_Symbol,_Period,14); CopyBuffer(WPDef,0,0,3,WPArray); double WPVal = NormalizeDouble(WPArray[0],2); double WPPrevVal = NormalizeDouble(WPArray[1],2); if(WPPrevVal<-50 && WPVal>-50) { Comment("Buy signal","\n", "Williams % R Value is",WPVal,"\n", "Williams % R Previous Value is",WPPrevVal); } if(WPPrevVal>-50 && WPVal<-50) { Comment("Sell signal","\n", "Williams % R Value is",WPVal,"\n", "Williams % R Previous Value is",WPPrevVal); } } //+------------------------------------------------------------------+
En este código, hemos añadido nuevas partes a las funciones existentes.
Obtenemos el valor de Williams' %R anterior usando la función NormalizeDouble. Utilizamos la variable double WPPrevValue creada para obtener este valor. Los parámetros de la función NormalizeDouble serán: el número normalizado y el número de decimales.
double WPPrevVal = NormalizeDouble(WPArray[1],2);
Condiciones de la estrategia de cruce de Williams%R.
Condiciones para una señal de compra:
if(WPPrevVal<-50 && WPVal>-50) { Comment("Buy signal","\n", "Williams % R Value is",WPVal,"\n", "Williams % R Previous Value is",WPPrevVal); }
Condiciones para una señal de venta:
if(WPPrevVal>-50 && WPVal<-50) { Comment("Sell signal","\n", "Williams % R Value is",WPVal,"\n", "Williams % R Previous Value is",WPPrevVal); }
Después de ello, compilaremos el código del asesor experto, y este aparecerá en la ventana del Navegador, en el terminal de MetaTrader 5:
Clicamos dos veces en el archivo para iniciar el programa en el gráfico del que deseamos recibir las señales. Se abrirá la ventana del asesor.
Después de clicar en "OK", el programa aparecerá en el gráfico:
La captura de pantalla muestra un ejemplo de las señales generadas al realizar pruebas basadas en esta estrategia.
Señal de compra:
Podemos ver en el gráfico que el asesor ha generado una señal de compra; también en el comentario, en la esquina superior izquierda, podemos ver los valores de Williams %R actuales y anteriores. En este caso, podemos ver que se han formado las condiciones para dicha señal: WPR = -55.93, es decir, está por debajo del nivel -50, mientras que el valor WPR actual = -41.09, lo cual es superior a este nivel -50.
Señal para Sell:
En este ejemplo, se genera una señal de venta basada en esta estrategia: en la esquina superior izquierda del gráfico se muestra el comentario correspondiente, así como el WPR actual y el WPR anterior.
En el gráfico se han formado las condiciones para esta señal: el valor anterior = -29,95, que está por encima del nivel -50, y el WPR actual = -58,8, que está por debajo del nivel -50.
- Estrategia tres: Williams %R - MA
Veamos el código completo para crear dicha estrategia:
//+------------------------------------------------------------------+ //| Williams%R & MA.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 WPArray[]; double MAArray[]; double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); ArraySetAsSeries(WPArray,true); ArraySetAsSeries(MAArray,true); int WPDef = iWPR(_Symbol,_Period,14); int MADef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE); CopyBuffer(WPDef,0,0,3,WPArray); CopyBuffer(MADef,0,0,3,MAArray); double WPVal = NormalizeDouble(WPArray[0],2); double MAVal = NormalizeDouble(MAArray[0],2); if(Ask>MAVal && WPVal>-50) { Comment("Buy signal","\n", "Williams % R Value is",WPVal,"\n", "EMA Value is",MAVal); } if(Bid<MAVal && WPVal<-50) { Comment("Sell signal","\n", "Williams % R Value is",WPVal,"\n", "EMA Value is",MAVal); } } //+------------------------------------------------------------------+
En este código, hemos añadido nuevas partes a las funciones existentes.
Creamos los arrays para los valores de WP y MA.
double WPArray[]; double MAArray[];
Obtenemos los valores de Ask y Bid en las variables double creadas para ellos.
double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
Clasificamos estos arrays como una serie temporal, empezando por los datos actuales:
ArraySetAsSeries(WPArray,true); ArraySetAsSeries(MAArray,true);
Determinamos Williams' PR con la ayuda de la función iWPR y la media móvil con la ayuda de la función iMA. Ya hemos mencionado antes los parámetros de iWPR. Los parámetros de iMA son el símbolo, el periodo, el periodo de suavizado, el desplazamiento horizontal, el tipo de suavizado y el tipo de precio.
int WPDef = iWPR(_Symbol,_Period,14); int MADef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);
A continuación, copiaremos los datos de precio en el array creado usando la función CopyBuffer.
CopyBuffer(WPDef,0,0,3,WPArray); CopyBuffer(MADef,0,0,3,MAArray);
Luego obtendremos los valores del RP Williams actual y de la media móvil.
double WPVal = NormalizeDouble(WPArray[0],2); double MAVal = NormalizeDouble(MAArray[0],2);
Condiciones de la estrategia.
Con una señal de compra:
if(Ask>MAVal && WPVal>-50) { Comment("Buy signal","\n", "Williams % R Value is",WPVal,"\n", "EMA Value is",MAVal); }
Con una señal de venta:
if(Bid<MAVal && WPVal<-50) { Comment("Sell signal","\n", "Williams % R Value is",WPVal,"\n", "EMA Value is",MAVal); }
Después de ello, compilaremos el código del asesor experto, y este aparecerá en la ventana del Navegador, en el terminal de MetaTrader 5:
Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Después de eso, la ventana del asesor aparecerá nuevamente:
Permitimos el comercio automático "Allow Algo Trading", pulsamos OK y el programa se iniciará en el gráfico:
Ejemplos de señales generadas al poner a prueba esta estrategia.
Con una señal de compra:
La señal generada y la información adicional se muestran en la esquina superior izquierda del gráfico.
- Señal de compra:
- Valor de WPR
- Valor de EMA
Las condiciones se cumplen. El precio Ask es superior a la MA y el WPR está por encima del nivel -50
Con una señal de venta:
La señal generada y la información adicional se muestran en la esquina superior izquierda del gráfico.
- Señal de venta
- Valor de WPR
- Valor de EMA
Las condiciones se cumplen. El precio Bid es inferior a la MA y el WPR está por debajo del nivel -50
Conclusión
El rango porcentual de Williams (Williams' PR) es una importante herramienta técnica y uno de los indicadores más populares usados para medir el impulso. También podemos combinarlo con otros indicadores técnicos para aprovechar al máximo sus ventajas. En general, ésta es una de las características más importantes del análisis técnico: poder usar más de una herramienta para obtener más de una perspectiva y tomar una decisión más calculada.
En este artículo, nos hemos familiarizado con el indicador técnico Williams PR: hemos aprendido qué es, qué mide y cómo se calcula. Para entenderlo mejor, hemos analizado un ejemplo de cálculo. También hemos aprendido a utilizarlo en un gráfico y a leer sus valores.
Asimismo, hemos visto cómo usarlo con estrategias sencillas basadas en su concepto básico. Hemos analizado las tres estrategias siguientes:
- Williams %R - OB y OS: generación de señales de sobrecompra y sobreventa cuando los precios alcanzan sus respectivas zonas.
- Williams %R - cruce de niveles: generación de señales de compra y venta cuando se cruzan ciertos niveles.
- Williams %R - MA: generación de señales de compra y venta basadas en WPR y la media móvil exponencial.
Después de ello, hemos desarrollado un plan paso a paso para cada estrategia analizada, cosa que debería ayudarnos a crear un sistema comercial. Después de eso, hemos visto el desarrollo de varios sistemas comerciales: hemos creado un asesor experto en MQL5 para cada estrategia, hemos obtenido un programa que puede funcionar en la plataforma comercial MetaTrader 5, y también hemos visto ejemplos de las señales generadas.
En general, el artículo muestra ejemplos sencillos sobre cómo podemos usar la programación. El trading algorítmico es una herramienta increíble que puede ayudarnos a hacer del comercio algo más fácil y eficiente. Si actuamos correctamente, podemos conseguir una herramienta que funcione mientras dormimos. Así que sería útil para todos estudiar la programación de estrategias comerciales y tratar de encontrar una herramienta que ayude a aumentar los beneficios.
Una vez más, resulta vital que el lector pruebe a fondo los materiales antes de aplicarlos a una cuenta real. Al fin y al cabo, lo que funciona para otros no tiene por qué funcionar para usted. Sobre todo porque el principal objetivo de este artículo es enseñar algo nuevo al lector. En cualquier caso, las estrategias requieren de optimización. Realmente esperamos que intente usted escribir el código por sí mismo y ponga en práctica lo que ha aprendido de este artículo. También esperamos que el artículo le sea útil y le ayude a obtener mejores resultados en su comercio. 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/11142
![Aprendiendo a diseñar un sistema de trading con la desviación estándar](https://c.mql5.com/2/48/why-and-how.png)
![Aprendiendo a diseñar un sistema de trading con Ichimoku](https://c.mql5.com/2/47/why-and-how__3.png)
![Aprendizaje automático y data science (Parte 06): Descenso de gradiente](https://c.mql5.com/2/47/data_science_articles_series__1.png)
![Redes neuronales: así de sencillo (Parte 18): Reglas asociativas](https://c.mql5.com/2/48/Neural_networks_made_easy_018.png)
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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