Aprendiendo a diseñar un sistema de trading con la desviación estándar

Mohamed Abdelmaaboud | 7 septiembre, 2022

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. Esta vez estudiaremos una nueva herramienta técnica, y veremos cómo se puede usar en el trading y cómo puede resultarnos de utilidad. Para entenderlo mejor, veremos algunas estrategias simples. La herramienta de la que hablaremos es el indicador de desviación estándar. Para estudiar el indicador con mayor detalle, dividiremos nuevamente el trabajo en varias subsecciones:

  1. Definición de la desviación estándar
  2. Estrategia de la desviación estándar
  3. Esquema de desarrollo de la estrategia de desviación estándar
  4. Sistema comercial de la desviación estándar
  5. Conclusión

En la sección "Definición de la desviación estándar", aprenderemos con detalle qué significa dicha desviación, qué hace y cómo se puede calcular manualmente. La información detallada sobre el cálculo nos ayudará a comprender mejor la esencia del indicador y luego nos permitirá usarlo de manera más eficiente. Para una mejor comprensión, analizaremos un ejemplo de cálculo. Luego pasaremos al siguiente tema, en el que aprenderemos a utilizar la desviación estándar usando el ejemplo de estrategias simples basadas en el concepto básico del indicador. Además, desarrollaremos esquemas paso a paso para cada estrategia analizada, que servirán como una base excelente para crear un sistema comercial que generará automáticamente señales de desviación estándar en MetaTrader 5. Y finalmente, veremos la parte más interesante de este artículo: la creación de un sistema comercial basado en las estrategias de indicadores que hemos analizado. Los sistemas resultantes generarán señales de forma automática.

En este artículo, utilizaremos MetaTrader 5 y el MetaEditor incorporado para escribir el código MQL5. Si no sabe cómo instalar MetaTrader 5 o usar el MetaEditor, lea la sección "Escribiendo el código MQL5 en el MetaEditor" de uno de mis artículos anteriores.

Le recomiendo que trate de emular todo lo que lea y estudie. En primer lugar, esto le servirá para comprender el concepto al completo, así como para beneficiarse de los materiales del artículo y, en segundo lugar, lo ayudará a encontrar nuevas ideas. Una vez más, resultará esencial que ponga a prueba cuidadosamente cualquier nuevo conocimiento antes de aplicarlo a su cuenta real, para asegurarse así 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.

¡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.

Comencemos a estudiar un nuevo indicador en nuestro arsenal.


Definición de la desviación estándar

En la primera sección, nos familiarizaremos con la idea misma del indicador de desviación estándar, descubriremos qué mide y cómo podemos calcularlo manualmente. Asimismo, analizaremos el cálculo del indicador con la ayuda de un ejemplo concreto, para una mejor comprensión.

La desviación estándar es un término de la estadística. Mide la varianza alrededor de la media. Pero, ¿qué es la varianza? En términos simples, esta es la diferencia entre cualquier valor real y el promedio. Cuanto mayor sea la varianza, mayor será la desviación estándar. Cuanto menor sea la varianza, menor será la desviación estándar. El indicador de desviación estándar mide la volatilidad del precio.

Ahora veamos cómo se puede calcular el indicador. Para ello, seguiremos estos pasos:

1. Calculamos el valor promedio para el periodo deseado.

2. Calculamos la desviación restando cada precio de cierre del promedio.

3. Elevamos al cuadrado cada desviación calculada.

4. Sumamos las desviaciones al cuadrado y dividimos por el número de valores.

5. Calculamos la desviación estándar como la raíz cuadrada del resultado del cuarto paso.

Veamos el cálculo de todos estos pasos usando un ejemplo. Supongamos que tenemos los siguientes datos para un instrumento:

# Precio de cierre
1 1.05535
2 1.05829
3 1.0518
4 1.04411
5 1.04827
6 1.04261
7 1.04221
8 1.02656
9 1.01810
10 1.01587
11 1.01831

Paso uno: calculamos una media móvil de 10 periodos, suponiendo que todas las MA hasta la décima sean la misma media móvil. Entonces, obtenemos el siguiente resultado del cálculo.

Paso 1

Paso dos: calculamos la desviación. Obtenemos estos resultados.

Paso 2

Paso tres: calculamos las desviaciones al cuadrado.

Paso 3

Paso cuatro: calculamos el valor promedio de la desviación al cuadrado durante 10 periodos.

Paso 4

Paso cinco: calculamos la desviación estándar = raíz cuadrada del resultado del cuarto paso.

Paso 5

Repitiendo todos estos pasos, podemos calcular el indicador de desviación estándar manualmente. Afortunadamente, no necesitamos calcular el indicador manualmente, pues existe uno listo para usar que viene de serie con la plataforma MetaTrader 5. Todo lo que deberemos hacer es elegirlo de la lista con otros indicadores disponibles. Aquí vemos dónde encontrarlo:

En la plataforma comercial MetaTrader 5, seleccionamos el menú "Insertar" --> Indicadores --> Tendencia --> Standard Deviation.

 Inicio del indicador Std Dev

Después de ello, se abrirá una ventana con los parámetros del indicador.

 Parámetros de Std Dev

1 - periodo de cálculo del indicador.

2 - desplazamiento horizontal de la línea del indicador, que podemos configurar si queremos

3 - tipo de media móvil

4 - tipo de precio usado en los cálculos

5 - color de la línea del indicador

6 - estilo de línea del indicador

7 - grosor de la línea del indicador.

Después de configurar los parámetros, el indicador aparecerá en el gráfico como mostramos a continuación.

 Indicador Std Dev en el gráfico

En la figura anterior vemos que el indicador ha sido iniciado en el gráfico y que se muestra en una ventana adicional como una línea dibujada según los valores de la desviación estándar.


Estrategia de la desviación estándar

Después de familiarizarnos con el concepto del indicador y cómo se calcula, vamos a ver cómo se puede usar la desviación estándar. Para ello, analizaremos ejemplos de tres estrategias sencillas. La primera estrategia simple es "Volatilidad de la desviación estándar", para medir la volatilidad del mercado. La segunda estrategia es "Desviación estándar y media móvil". Como su nombre indica, combinaremos dos indicadores y obtendremos señales de compra y venta. La tercera estrategia es "Desviación estándar, volatilidad, media móvil". Primero se valora la volatilidad, y luego se genera una señal de compra o venta.

En esta estrategia, medimos la volatilidad. Para ello, compararemos la desviación estándar actual (Std) y el promedio de las cinco desviaciones anteriores (AVG). Si la desviación estándar actual es mayor que el promedio de los cinco periodos, será una señal de alta volatilidad. Si la desviación estándar actual es menor que el promedio de los cinco periodos, será una señal de baja volatilidad.

Std actual > Std AVG --> alta volatilidad

Std actual < Std AVG --> baja volatilidad

Esta estrategia puede generar señales de compra y venta basadas en condiciones determinadas. Si la desviación estándar actual es mayor que el valor anterior y el precio Ask es mayor que la media móvil, será una señal de compra. Si la desviación estándar actual es mayor que el valor anterior y el precio Bid es menor que la media móvil, será una señal de compra.

Std actual > Std anterior y Ask > MA --> Señal de compra

Std actual > Std anterior y Bid < MA --> Señal de venta

Esta estrategia generará señales de compra y venta basadas en otras condiciones. Si la desviación estándar actual es mayor que el promedio de los valores anteriores y el precio Ask es mayor que la media móvil, será una señal de compra. Si la desviación estándar actual es mayor que el promedio de los valores anteriores y el precio Bid está por debajo de la media móvil, esto será una señal de compra.

Std actual > Std Avg y Ask > MA --> Señal de compra

Std actual > Std Avg y Bid < MA --> Señal de venta

Estas estrategias son ejemplos simples de cómo usar el indicador de desviación estándar para medir la volatilidad y generar señales de compra y venta basadas en distintas condiciones. También lo hemos usado junto con otros indicadores técnicos para observar la situación del mercado desde varios ángulos a la vez.


Esquema de desarrollo de la estrategia de desviación estándar

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. Este paso es muy importante, ya que ayuda a organizar las ideas de forma que resulte más fácil convertirlas en un sistema comercial. Bien, echemos un vistazo al esquema, o las instrucciones de lo que debe hacer exactamente el programa resultante.

Según esta estrategia, el sistema comercial deberá verificar y comparar constantemente dos valores. Estos son los valores de la desviación estándar actual y el promedio de las cinco desviaciones anteriores. Deberemos determinar cuál de los valores es más alto. Si el actual es mayor que el promedio de cinco periodos, se mostrará un comentario sobre la alta volatilidad y los siguientes valores en el gráfico:

Si la Std Dev actual está por debajo del promedio de cinco periodos, se mostrará un comentario sobre la baja volatilidad y los siguientes valores en el gráfico:

La siguiente figura muestra un plan paso a paso de una estrategia simple de desviación estándar y volatilidad.

Esquema de la estrategia: Desviación estándar y volatilidad

Según esta estrategia, el sistema comercial deberá verificar y comparar constantemente cuatro valores. Hablamos de los valores de la desviación estándar actual y anterior, el precio Ask y la media móvil. Usando estos valores como base, se deberá determinar si se han formado las condiciones apropiadas para la señal.

Si la desviación estándar actual es mayor que el valor anterior y el precio Ask es mayor que la media móvil, el programa deberá mostrar un comentario en el gráfico con los siguientes valores:

Si la desviación estándar actual es mayor que el valor anterior y el precio Bid es menor que la media móvil, el programa deberá mostrar un comentario en el gráfico con los siguientes valores:

La siguiente figura muestra un plan paso a paso para una estrategia simple de desviación estándar y media móvil.

 Esquema de la estrategia Simple Std Dev - Std _ MA

Según esta estrategia, el sistema comercial deberá verificar y comparar constantemente cuatro valores y, en base a la comparación de estos valores, generar una señal determinada. Estos valores son: la desviación estándar actual, el promedio de desviaciones estándar, el precio Ask y la media móvil.

Si la desviación estándar actual es mayor que el promedio de las desviaciones estándar y el precio Ask es mayor que la media móvil, el programa deberá generar una señal y mostrar un comentario en el gráfico con los siguientes valores:

Si la desviación estándar actual es mayor que el promedio de las desviaciones estándar y el precio Bid es menor que la media móvil, el programa deberá generar otra señal y, además, mostrar un comentario con los siguientes valores en el gráfico:

La siguiente figura muestra un plan paso a paso para desarrollar dicha estrategia.

Esquema de la estrategia Simple Std Dev - Std Dev _ AVG _ MA

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. 


Sistema comercial de la desviación estándar

Vamos a ver cómo escribir sistemas comerciales en MQL5 basados en los valores de este indicador, cómo usarlos en MetaTrader 5. Primero, escribiremos un programa simple que muestre un comentario con el valor de la desviación estándar en el gráfico del instrumento deseado. Esto servirá como base para todos los demás sistemas.  

double StdDevArray[];
ArraySetAsSeries(StdDevArray,true);
int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
CopyBuffer(StdDevDef,0,0,3,StdDevArray);
double StdDevVal = NormalizeDouble(StdDevArray[0],6);
Comment("StdDev Value is",StdDevVal);

 Compilamos el código; no debería haber errores ni advertencias. Después de eso, el asesor compilado debería aparecer en la ventana del Navegador:

Std Dev en el Navegador 1

Lo arrastramos desde el Navegador hasta el gráfico para iniciarlo. Se abrirá una ventana como esta:

Ventana del programa Simple Std Dev

Permitimos el comercio automático "Allow Algo Trading", pulsamos OK y el programa se iniciará en el gráfico:

 Programa Simple Std Dev en el gráfico

Como podemos ver, ha aparecido una indicación en la esquina superior derecha del gráfico señalando que el asesor está funcionando en el gráfico.

A continuación, le mostramos ejemplos de comentarios generados al probar esta estrategia.

Comentarios de Simple Std Dev

Podemos ver otro ejemplo en la siguiente figura. En el gráfico se inicia un experto de este sistema comercial para la generación automática de señales y, al mismo tiempo, se añade el indicador estándar Standard Deviation. Podemos comprobar que ambos valores StdDev son iguales.

 Valores iguales de Simple Std Dev

 

Ahora vamos a escribir el código para la primera estrategia analizada que muestra la volatilidad del indicador. El código completo de esta estrategia tendrá el aspecto que sigue

//+------------------------------------------------------------------+
//|                                  Simple Std Dev - Volatility.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 StdDevArray[];

   ArraySetAsSeries(StdDevArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

  }
//+------------------------------------------------------------------+

En este código, hemos añadido nuevas partes a las funciones existentes.

Aquí determinaremos no solo el valor Std Dev actual, sino también los cinco valores anteriores usando para ello la misma función de desviación estándar. Sin embargo, el parámetro en NormalizeDouble será diferente.

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);

A continuación, deberemos calcular el promedio de los cinco anteriores.

double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

Condiciones de la estrategia.

Si hay alta volatilidad

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

Si hay baja volatilidad

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

Después compilaremos el código del asesor, y este aparecerá en la ventana del Navegador, en el terminal de MetaTrader 5:

 Std Dev en el Navegador 2

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:

 Ventana de la estrategia Simple Std Dev - Volatility

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

Estrategia Simple Std Dev - Volatility en el gráfico

De nuevo, podemos ver que el asesor se ha iniciado en el gráfico: el icono correspondiente ha aparecido en la esquina superior derecha del gráfico.

Estos son los ejemplos de señales generadas que obtenemos al probar el sistema comercial:

Ejemplo de señal de alta volatilidad

 Simple Std Dev - Volatility - volatilidad alta

En la captura de pantalla se ve cómo se muestra un comentario de tres líneas en la esquina superior izquierda del gráfico:

Ejemplo de señal de volatilidad baja

Simple Std Dev - Volatility - volatilidad baja

El comentario de tres líneas se muestra nuevamente en la esquina superior izquierda del gráfico. Esta vez los valores serán:

Básicamente, esta estrategia mide la volatilidad según la desviación estándar y la muestra en un gráfico.

A continuación, le mostramos el código de una estrategia que genera señales de compra y venta basadas en la desviación estándar y los valores de la media móvil:

//+------------------------------------------------------------------+
//|                                    Simple Std Dev - Std & 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 Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,3,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

   double MAValue = NormalizeDouble(PArray[0],6);


   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }

//+------------------------------------------------------------------+

Cuáles son las diferencias en este código:

Hemos determinado los valores Ask y Bid, creando variables double para ellos; asimismo, hemos usado la función NormalizeDouble para retornar un valor double y también hemos usado SymbolInfoDouble como un número normalizado para devolver la propiedad correspondiente de un símbolo en particular. Los parámetros de SymbolInfoDouble son:

double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

Creamos otro array de precios.

double PArray[];

Clasificamos el array a partir de los datos actuales.

ArraySetAsSeries(PArray,true);

Determinamos la media móvil usando la función iMA. Para hacer esto, creamos la variable entera MADef.

int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

Copiamos los datos de precio en el array creado.

CopyBuffer(MADef,0,0,10,PArray);

Determinamos el valor anterior de Std Dev.

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

Determinamos el valor de la media móvil.

double MAValue = NormalizeDouble(PArray[0],6);

Condiciones de la estrategia.

Si hay una señal de compra:

   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

Si hay una señal de venta:

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

Después compilamos el código del asesor, y este aparecerá en la ventana del Navegador, en el terminal de MetaTrader 5:

 Std Dev en el Navegador 3

Clicamos dos veces sobre el archivo o lo arrastramos y lo soltamos para iniciar el asesor. Se abrirá la ventana de inicio del experto:

Ventana del programa Simple Std Dev MA

Permitimos el comercio automático "Allow Algo Trading", pulsamos OK y el programa se iniciará en el gráfico:

Programa Simple Std Dev en el gráfico

A continuación, le mostramos ejemplos de señales generadas por esta estrategia durante las pruebas.

Señal de compra:

 Simple Std Dev - Std _ MA - señal de compra

Además de la señal de compra en sí, en la esquina superior izquierda, en los comentarios del gráfico, se muestran valores adicionales:

Si hay una señal de venta:

 Simple Std Dev - Std _ MA - señal de venta

En la esquina superior izquierda del gráfico se muestra un comentario que consta de cinco líneas:

Este era el código de una estrategia que mide la volatilidad según la desviación estándar, y que también comprueba la posición de los precios Ask y Bid en relación con la media móvil y genera la señal correspondiente: compra o venta.

El código completo del sistema comercial que opera según esta estrategia se ve así:

//+------------------------------------------------------------------+
//|                  Simple Std Dev - Std Dev & AVG Std Dev & 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 Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);
   double MAValue = NormalizeDouble(PArray[0],6);

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }
  
//+------------------------------------------------------------------+

Qué ha cambiado en el código con respecto al anterior:

Condiciones de la estrategia.

Señal de compra:

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

Señal de venta:

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

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

 Std Dev en el Navegador 4

Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. A continuación, aparecerá la ventana del asesor (en la ventana siempre permitimos el comercio automático para el asesor):

Ventana del programa Simple Std Dev - Std Dev _ AVG _ MA

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

 Programa Simple Std Dev - Std Dev _ AVG _ MA en el gráfico

Como podemos ver, ha aparecido una indicación en la esquina superior derecha del gráfico señalando que el asesor está funcionando en el gráfico.

Veamos ejemplos de señales generadas por la estrategia durante la prueba:

Señal de compra:

Simple Std Dev - Std Dev _ AVG _ MA - señal de compra

En la captura de pantalla anterior, en la esquina superior izquierda del gráfico, se muestra un comentario que consta de cinco líneas:

Señal de venta:

 Simple Std Dev - Std Dev _ AVG _ MA - señal de venta

Y de nuevo un comentario en el gráfico, esta vez con la señal de venta y los valores de indicador:

Eso es todo, ya hemos creado sistemas automáticos basados en cada una de las estrategias analizadas. Todos ellos generan señales según las instrucciones mostradas en los esquemas anteriores.


Conclusión

Hemos dedicado este artículo al indicador de desviación estándar. Asimismo, hemos aprendido qué mide, para qué sirve y cómo se calcula, y también hemos visto un ejemplo de cálculo con datos reales. Usando el ejemplo de varias estrategias simples, hemos visto cómo podemos usar la desviación estándar en el comercio. Así, hemos analizado una estrategia que mide la volatilidad según el valor de la desviación estándar. También hemos visto que, en combinación con indicadores adicionales (MA) y otros valores, el indicador se puede usar para generar señales de compra y venta. Después, hemos desarrollado esquemas paso a paso para cada una de las estrategias analizadas, que luego se usan para desarrollar sistemas comerciales basados en ellas. Finalmente, hemos creado sistemas comerciales en MQL5 basados en las estrategias consideradas. Dichos sistemas deben usarse en la plataforma MetaTrader 5 para la generación automática de señales. Los sistemas nos ayudarán a ahorrar tiempo, obtener señales más precisas y evitar los errores derivados de las emociones y la subjetividad: esta es la ventaja de la programación.

Asimismo, resulta de gran utilidad útil combinar este indicador con otras herramientas técnicas para obtener más información y ver el panorama general. Esta es una de las características del análisis técnico en el desarrollo de sistemas comerciales que nos permite obtener mucha más información.

Una vez más, como en artículos anteriores, insistimos en que es muy importante probar a fondo todo el material antes de aplicarlo a una cuenta real. Al fin y al cabo, lo que funciona para otros no tiene por qué funcionar para usted. Esperamos que este artículo lo ayude a mejorar un poco su comercio y le ofrezca nuevas ideas. ¡Le deseo un comercio rentable!

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.