Aprendiendo a diseñar un sistema comercial basado en Parabolic SAR

28 julio 2022, 09:51
Mohamed Abdelmaaboud
0
374

Introducción

En este artículo, centraremos nuestra atención en otro indicador técnico útil que podemos usar en el comercio. Este indicador se denomina Parabolic SAR - Sistema Parabólico de Tiempo/Precio. Asimismo, aprenderemos cómo diseñar un sistema comercial y escribir un código de estrategia comercial en MQL5 usando el editor MetaQuotes Language Editor integrado en MetaTrader 5. El programa resultante se podrá iniciar en la plataforma comercial. Si no está familiarizado con la plataforma y el editor, le recomendamos leer la sección "Cómo escribir código MQL5 en el MetaEditor" en uno de los artículos anteriores. En dicha sección describimos con detalle cómo instalar el terminal y dónde encontrar el editor de código. Como en todos los artículos anteriores, analizaremos el indicador dividiendo el tema en varias secciones:

  1. Definición del indicador Parabolic SAR
  2. Estrategia de Parabolic SAR
  3. Esquema de la estrategia con el indicador Parabolic SAR
  4. Sistema comercial de Parabolic SAR
  5. Conclusión

A lo largo de estas secciones, analizaremos el indicador, y también aprenderemos a desarrollar un sistema comercial basado en estrategias simples del indicador Parabolic SAR y el concepto detrás de él. En la sección "Definición de Parabolic", aprenderemos con detalle qué significa el indicador, qué hace y cómo se puede calcular (los detalles del cálculo le ayudarán a comprender mejor la esencia del indicador y luego le permitirán usarlo de forma más eficiente). Luego, aprenderemos a usar el indicador Parabolic SAR con estrategias simples basadas en el concepto del propio indicador, en la sección Estrategia de Parabolic SAR. Después de ello, desarrollaremos un esquema de funcionamiento de estas estrategias. Posteriormente, este esquema nos ayudará a desarrollar un sistema comercial paso a paso. Y finalmente, pasaremos al tema más interesante de este artículo: la escritura del código del sistema comercial. El programa analizará las condiciones y retornará una señal según las estrategias seleccionadas, y hará todo esto de forma automática y precisa. El programa desarrollado constituirá un asesor comercial automático.

Antes de proceder al estudio de estos temas, querríamos ofrecer algunos consejos. Primero: intente aplicar y repetir por sí mismo todo lo que aprenda. Esta es la única manera de comprender verdaderamente el tema. Segundo: asegúrese de probar todas las estrategias antes de usarlas en operaciones reales, sobre todo si toma estas estrategias de materiales educativos. Con frecuencia, las estrategias resultan completamente inapropiadas para su estilo comercial específico.

¡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, comencemos el estudio.


Definición del indicador Parabolic SAR

El indicador Parabolic SAR fue creado por Welles Wilder. El nombre Parabolic proviene de la formación del gráfico, y SAR significa Stop And Reverse («parada e inversión», un precio indicativo por debajo del cual el precio real no debería caer). En el libro «Nuevos conceptos de sistemas comerciales técnicos» Wilder lo llama Parabolic Time/Price system (Sistema parabólico de tiempo/precio).

Parabolic SAR es un indicador de tendencia, por lo que se usa en mercados con tendencia. Este indicador determina automáticamente la dirección del movimiento del precio según una cierta cantidad de periodos de análisis, y los puntos SAR se pueden usar para mover los niveles stop. Por ello, podemos decir que la aplicación principal del indicador consiste en establecer los niveles stop según la dirección o tendencia actual del mercado. Por cierto, en uno de mis artículos anteriores, se da la definición de tendencia, y también se describen sus tipos.

En otras palabras, el objetivo principal de Parabolic SAR es crear trailing-stops. El stop supone una función de dos elementos: el tiempo y el precio. Dependiendo de la función de precio, el trailing-stop puede desplazarse hacia arriba o hacia abajo, de acuerdo con el movimiento del precio. La función de precio hace que el trailing-stop se desplace cada periodo independientemente de la dirección del precio.

Por consiguiente, para empezar, antes de usar el indicador Parabolic, será necesario determinar la tendencia. Bien, ya hemos aprendido qué indica Parabolic SAR y qué información puede proporcionar. Ahora, para comprender mejor el propio concepto del indicador, vamos a ver cómo podemos calcularlo manualmente. 

Ya hemos visto antes lo que hace este indicador. Partiendo de ello, podemos ver que primero necesitamos determinar la tendencia/dirección del mercado y, según esto, dividir los métodos de cálculo en dos casos específicos: primero, calcularemos Parabolic SAR en un mercado alcista, y esto retornará el SAR ascendente; luego realizaremos un cálculo similar para las condiciones del mercado bajista y obtendremos el SAR descendente. Es decir, calcularemos dos opciones: el SAR ascendente en un mercado alcista y el SAR descendente en un mercado bajista.

  • SAR ascendente:
    1. Determinamos el valor SAR anterior: este será el valor SAR para el periodo anterior.
    2. Determinamos el extremo (EP) = el valor más alto del máximo de la tendencia alcista actual.
    3. Determinamos el coeficiente de aceleración (AF) = un valor de 0,02 a 0,20. Después de determinar el primer valor mínimo de 0,02, el valor se determinará según el extremo (EP): el coeficiente de aceleración aumentará en 0,02 cada vez que el extremo EP forme un nuevo máximo, acercándose al valor máximo de 0,20, independientemente de cuánto tiempo continúe la tendencia.
    4. Valor Parabolic SAR actual = SAR anterior (paso 1) + AF (coeficiente de aceleración) anterior * (extremo EP anterior - SAR anterior).

Veamos un ejemplo de un SAR ascendente de este tipo: realizaremos los cálculos usando datos reales del mercado:

Día Máximo Mínimo
1 45 43
2 44 43.5
3 46 43
4 47 42
5 48 42.5
6 47.5 42.75
7 48 42.60
8 47.75 42.5
9 48 43
10 49 42.5
11 48.75 42.60
12 50 42
13 51 42.5
14 52 43
15 51.5 42.5
16 51 42
17 52 43
18 53 44
19 54 45

Ahora necesitamos calcular el crecimiento de SAR; este se calcula como mostramos a continuación:

  1. Determinamos el valor SAR anterior: este es el valor SAR del periodo anterior; en nuestro ejemplo, será el primer valor resaltado en amarillo. Para simplificar, aquí será igual a 42.
  2. Determinamos el extremo (EP) = el valor más alto del máximo de la tendencia alcista actual. En nuestro caso, el valor será 48.
  3. Calculamos la diferencia entre EP y SAR. Tenemos que 48-42=6.
  4. Determinamos el coeficiente de aceleración (AF) = un valor de 0,02 a 0,20; su primer valor será 0,02.
  5. Multiplicamos el coeficiente de aceleración AF por la diferencia entre EP y SAR, obteniendo así un valor de 0,12
  6. Calculamos el SAR actual sumando el resultado de la multiplicación del AF anterior por la diferencia entre EP y SAR; este será el resultado del quinto paso anterior. Obtenemos el valor 42.12.

La siguiente es una imagen de todos los valores calculados del ejemplo:

Ejemplo de SAR ascendente

Como podemos ver en la columna de SAR, los valores SAR aumentan todos los días durante el periodo.

  • SAR descendente:
    1. Determinamos el valor SAR anterior: este será el valor SAR para el periodo anterior.
    2. Determinamos el extremo (EP) = el mínimo más bajo de la tendencia bajista actual.
    3. Determinamos el coeficiente de aceleración (AF) = un valor de 0,02 a 0,20. Después de determinar el primer valor mínimo de 0,02, el valor se determinará según el extremo (EP): el coeficiente de aceleración aumentará en 0,02 cada vez que el extremo EP forme un nuevo mínimo, acercándose al valor máximo de 0,20, independientemente de cuánto tiempo continúe la tendencia.
    4. Valor Parabolic SAR actual = SAR anterior (paso 1) - AF (coeficiente de aceleración) anterior * (EP extremo anterior - SAR anterior).

Veamos un ejemplo de un SAR descendente de este tipo: realizaremos el cálculo usando datos de mercado:

Día Máximo Mínimo
1 54 45
2 53 44
3 52 43
4 51 42
5 51.5 42.5
6 52 43
7 51 42.5
8 50 42
9 48.75 42.6
10 49 42.5
11 48 43
12 47.75 42.50
13 48 42.60
14 47.50 42.75
15 48 42.50
16 47 42
17 46 43
18 44 43.50
19 45 43

Ahora calcularemos el SAR descendente para el periodo especificado; este se calcula como mostramos a continuación:

  1. Determinamos el valor SAR anterior: este es el valor SAR del periodo anterior; en nuestro ejemplo, será el primer valor resaltado en amarillo. Para simplificar, aquí será igual a 51.
  2. Determinamos el extremo (EP) = el mínimo más bajo de la tendencia bajista actual, será igual a 42.
  3. Calculamos la diferencia entre EP y SAR. Tenemos que 51-42=9.
  4. Determinamos el coeficiente de aceleración (AF) = un valor de 0,02 a 0,20; su primer valor será 0,02.
  5. Multiplicamos el coeficiente de aceleración AF por la diferencia entre EP y SAR, obteniendo un valor de 0,18
  6. Calculamos el SAR actual restando el SAR anterior del resultado del paso 5. Obtendremos el valor 50.82.

La siguiente figura muestra los valores calculados para los datos para el periodo seleccionado:

Como podemos ver en la columna de SAR, los valores SAR descienden todos los días durante el periodo.

Afortunadamente, en la práctica, no resulta necesario hacer todo esto, es decir, no tenemos que calcular manualmente Parabolic SAR ni ningún otro indicador porque este indicador está integrado en la plataforma comercial MetaTrader 5. Por consiguiente, todo lo que necesitamos hacer es seleccionar un indicador de la lista de indicadores disponibles en la plataforma. Así tenemos que hacerlo:

En el terminal, seleccionamos el menú "Insertar", luego seleccionamos Indicadores --> Tendencia --> Parabolic SAR:

Insertamos SAR

Después de eso, se abrirá la ventana de parámetros del indicador, que mostramos a continuación:

Parámetros de SAR

1 - paso del coeficiente de aceleración AF con el que aumentará el valor cada vez que el precio fije un nuevo máximo o mínimo.

2 - valor máximo del coeficiente de aceleración AF. El valor por defecto es 0,20.

3 - color del indicador.

4 - estilo de indicador.

Seleccionamos los parámetros necesarios del indicador, presionamos el botón OK y el indicador Parabolic SAR se iniciará en el gráfico como mostramos a continuación:

Indicador Parabolic SAR en el gráfico

Como podemos ver en la imagen de arriba, durante un movimiento alcista, Parabolic SAR se mueve por debajo de los precios y continúa ascendiendo de acuerdo con los precios, y viceversa, durante un movimiento bajista, el indicador se mueve por encima del precio y continúa moviéndose hacia abajo de acuerdo con el movimiento del precio.


Estrategia de Parabolic SAR

En esta parte, analizaremos algunas estrategias simples basadas en Parabolic SAR. No olvide que antes de usar cualquier estrategia en su cuenta real, deberá ponerla a prueba. Además, el principal fin de este artículo es enseñar. Estamos estudiando el concepto principal de un instrumento técnico y aprendiendo a desarrollar un sistema comercial.

Como ya hemos dicho, el indicador Parabolic SAR sigue la tendencia. En consecuencia, solo podremos utilizarlo durante los mercados de tendencia, alcista y bajista. Por lo tanto, primero deberemos determinar la tendencia, y solo entonces podremos usar Parabolic SAR como corresponde.

  • Estrategia uno: tendencia alcista

Según esta estrategia, en cada tick, deberemos comparar el valor de Parabolic SAR con los precios y decidir si se ha formado o no una señal de compra. Entenderemos la señal de compra como la situación en que el valor de Parabolic SAR es menor que el valor del precio más bajo. A continuación, se generará la siguiente señal de take-profit: esto sucederá cuando el valor SAR supere el precio más alto.

Valor SAR < precio mínimo = comprar

Valor SAR > precio máximo = take-profit

  • Estrategia dos: tendencia bajista

Esta estrategia es lo opuesto a la estrategia de tendencia alcista. Según esta estrategia, en cada tick, deberemos comparar el valor de Parabolic SAR con los precios y decidir si se ha formado o no una señal de venta. Entenderemos la señal de venta como la situación en que el valor de Parabolic SAR es mayor que el valor del precio más alto. A continuación, se generará la siguiente señal de take-profit: esto sucederá cuando el valor SAR quede por debajo del precio más bajo.

Valor SAR > precio máximo = señal de venta

Valor SAR < precio mínimo = take-profit

  • Estrategia tres: señal de compra con estrategia de trailing-stop

Según esta estrategia, en cada tick, deberemos comparar el valor de Parabolic SAR con los precios y decidir si se ha formado o no una señal de compra, y también determinar en cada tick el valor del trailing-stop de acuerdo con el valor del indicador. Cuando el valor de SAR es inferior al precio mínimo, se tratará de una señal de compra y el valor del indicador se usará como nivel de trailing-stop.

Valor SAR < precio mínimo = señal de compra --> valor de trailing-stop según el valor SAR

  • Estrategia cuatro: señal de venta con estrategia de trailing-stop

Según esta estrategia, deberemos comparar en cada tick el valor de Parabolic SAR con los precios y decidir si se ha formado una señal de venta o no, y también determinar el valor del trailing-stop en cada tick según el valor del indicador. Cuando el valor SAR esté por encima del precio máximo, se tratará de una señal de venta y el valor del indicador se utilizará como nivel de trailing-stop.

Valor SAR > precio máximo = señal de venta --> valor de trailing-stop según el valor SAR


Esquema de la estrategia con el indicador Parabolic SAR

En esta parte, desarrollaremos en forma de esquema las estrategias analizadas anteriormente. Esto nos ayudará a definir claramente y paso a paso lo que queremos del futuro programa, lo que deberá hacer. Tendremos un esquema de trabajo aparte para cada estrategia analizada.

  • Estrategia uno: tendencia alcista

Informaremos al asesor de las instrucciones sobre lo que debe comprobar y lo que debe retornar si se cumplen las condiciones. En esta estrategia particular, el asesor verificará el valor SAR y lo comparará con el nivel de precios. Entonces, deberemos definir: ¿El valor SAR es inferior al precio mínimo o no? Si no lo es, el asesor no debería hacer ni retornar nada. En caso afirmativo, el asesor debería retornar una señal de compra. Luego, deberemos comparar nuevamente los dos valores. Si el valor SAR no es superior al precio máximo, no haremos nada. Si el indicador se encuentra ahora por encima del máximo, el asesor deberá retornar una señal de take-profit.

Valor SAR < precio mínimo = comprar

Valor SAR > precio máximo = take-profit

 SAR - plan de estrategia de tendencia alcista

  • Estrategia dos: tendencia bajista

En esta estrategia, el asesor verificará el valor SAR y lo comparará con el nivel de precios. Entonces, deberemos definir: ¿El valor SAR es superior al precio máximo o no? Si no lo es, el asesor no debería hacer ni retornar nada. En caso afirmativo, el asesor debería retornar una señal de venta. Luego, deberemos comparar nuevamente los dos valores. Si el valor SAR no es inferior al precio mínimo, no haremos nada. Si el indicador está por debajo del mínimo, el asesor debería retornar una señal de take-profit.

Valor SAR > precio máximo = señal de venta

Valor SAR < precio mínimo = take-profit

SAR - Esquema de estrategia de tendencia bajista

  • Estrategia tres: señal de compra con estrategia de trailing-stop
  • Para esta estrategia, el asesor comprobará el valor de SAR y retornará el valor del trailing-stop. Compararemos este valor con el máximo y el mínimo y determinaremos si el valor SAR está por debajo del precio mínimo o no. Si no es así, el asesor retornará solo el trailing-stop. Si está por debajo del mínimo, el asesor retornará una señal de compra y el valor de trailing-stop. 

    Solo nivel de trailing-stop --> valor SAR < precio mínimo = comprar --> valor de trailing-stop según el valor SAR

    Estrategia de compra con stops

    • Estrategia cuatro: señal de venta con estrategia de trailing-stop

    Para esta estrategia, el asesor comprobará el valor SAR y retornará el valor del trailing-stop; compararemos este valor con el máximo y el mínimo y determinaremos: ¿el valor SAR es mayor que el precio máximo o no? Si no es así, el asesor retornará solo el trailing-stop. Si es superior al máximo, el asesor retornará una señal de venta y el valor del trailing-stop.

    solo el valor del trailing-stop --> valor SAR > precio máximo = vender --> valor de trailing-stop según el valor SAR

    Estrategia de venta con stops

    Sistema comercial de Parabolic SAR

    Finalmente, en esta parte, llegamos a la esencia misma del artículo: vamos a codificar las estrategias analizadas en el lenguaje de programación MQL5 y a crear sistemas comerciales basados en cada una de ellas. Como resultado, deberíamos obtener un programa que ejecute automáticamente los pasos necesarios en la plataforma MetaTrader 5.

    Comenzaremos escribiendo el código de un sistema comercial simple que retornará un comentario con el valor de Parabolic SAR. Para escribir este sencillo asesor experto, seguiremos estos pasos.

    • Creamos una matriz para los valores de Parabolic SAR, para ello, usaremos la función double:
    double SARArray[];
    • Clasificamos el array de precios creado a partir 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).
    ArraySetAsSeries(SARArray,true);
    • Determinamos el indicador SAR usando la función "iSAR":
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • Llenamos la matriz SARArray con valores usando la función "CopyBuffer":
    CopyBuffer(SARDef,0,0,3,SARArray);
    • Calculamos el valor SAR usando la función NormalizeDouble después de crear una variable para el valor SAR usando la función double:
    double SARValue=NormalizeDouble(SARArray[0],5);
    • Mostramos un comentario con el valor SAR en el gráfico usando la función comment:
    Comment("Parabolic SAR value is ",SARValue);

    El código completo del programa resultante tendrá el aspecto siguiente:

    //+------------------------------------------------------------------+
    //|                                  Simple Parabolic SAR 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()
      {    
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
    
       //chart comment with the signal
       Comment("Parabolic SAR value is ",SARValue);
      }
    //+------------------------------------------------------------------+
    
    

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

    Sistema Parabolic SAR simple en el Navegador

    Iniciamos el programa resultante clicando dos veces en el archivo o arrastrándolo al gráfico. Después de eso, la ventana del asesor aparecerá nuevamente:

     Sistema simple de Parabolic SAR - ventana de configuración

    Permitimos el comercio algorítmico ("Allow Algo Trading"), clicamos en aceptar y el programa (asesor) se iniciará en el gráfico como mostramos en la siguiente figura:

    Sistema Parabolic SAR simple - en el gráfico

    Ya la siguiente figura muestra un ejemplo de señales generadas por este sistema:

    Sistema de Parabolic SAR simple

    • Estrategia uno: tendencia alcista

    Como hemos mencionado en esta estrategia, necesitaremos establecer las condiciones para el sistema comercial de modo que genere una señal de compra cuando el valor SAR sea menor que el precio mínimo y genere una señal de take-profit cuando el valor SAR sea mayor que el precio máximo. A continuación, explicamos cómo codificar una estrategia de este tipo:

    • Creamos una variable de cadena para la señal usando la función string:
    string signal="";
    • Usando la función MqlRates, creamos un array de precios, almacenamos la información sobre los precios, los volúmenes y el spread:
    MqlRates PriceArray[];
    • Clasificamos el array de precios a partir de los datos actuales. Para hacer esto, usaremos la función ArraySetAsSeries:
    ArraySetAsSeries(PriceArray,true);
    • Llenamos la matriz con los datos de precios usando la función CopyRates: esta función recibe los datos históricos de la estructura MqlRates después de guardar los datos como un número entero:
    int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
    • Creamos otro array para los valores SAR usando la función double:
    double SARArray[];
    • Clasificamos el array de valores SAR a partir de los datos actuales. Para hacer esto, usaremos la función ArraySetAsSeries:
    ArraySetAsSeries(SARArray,true);
    • Definimos el indicador SAR para el asesor utilizando la función iSAR: esta retorna el identificador del indicador Parabolic SAR después de guardar SARDef como un valor integer:
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • Llenamos el array SARArray con valores usando la función CopyBuffer: esta obtiene los datos de un búfer específico de un indicador concreto:
    CopyBuffer(SARDef,0,0,3,SARArray);
    • Calculamos el valor SAR con los datos más recientes usando la función NormalizeDouble, que retorna el tipo de valor double
    double SARValue=NormalizeDouble(SARArray[0],5);
    • Establecemos las condiciones de la señal de compra usando la función if: si el valor SAR es menor que el precio mínimo, el asesor debería retornar una señal de compra:
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
    
    
    • Establecemos las condiciones para la señal de take-profit utilizando la función if: si el valor SAR es mayor que el precio máximo, el asesor debería retornar una señal de take-profit:
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
    
    
    • Mostramos la señal generada en el gráfico usando la función Comment:
    Comment("The signal is ",signal);

    Estos son todos los pasos: ya hemos creado un sistema comercial. El código completo para este sistema tiene el aspecto siguiente:

    //+------------------------------------------------------------------+
    //|                      Parabilic SAR System - Uptrend 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()
      {  
       //create a string variable for signal
       string signal="";
       
       //create an array for price
       MqlRates PriceArray[];
       
       //sort array from current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
       
       //comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    
    

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

    Tendencia alcista de SAR - En el Navegador

    Lo iniciamos clicando dos veces en el archivo o arrastrándolo al gráfico, después de lo cual aparecerá la siguiente ventana:

     Ventana de la estrategia SAR Uptrend

    Clicamos en Aceptar y el programa (asesor) se ejecutará en el gráfico como mostramos en la siguiente figura:

    Estrategia de tendencia alcista SAR en el gráfico

    Las señales se mostrarán como comentarios en el gráfico. En la siguiente figura, mostramos un ejemplo con una prueba de la estrategia; la generación de la señal se muestra en la siguiente figura:

    • Señal de compra:

    SAR Tendencia alcista - señal de compra

    • Señal de take-profit:

    SAR Tendencia alcista - señal de take-profit

    • Estrategia dos: tendencia bajista

    Con esta estrategia, debemos establecer las condiciones para el sistema comercial de modo que genere una señal de venta cuando el valor SAR esté por encima del precio máximo y genere una señal de take-profit cuando el valor SAR esté por debajo del precio mínimo. A continuación, explicamos cómo codificar una estrategia de este tipo:

    //+------------------------------------------------------------------+
    //|                    Parabolic SAR System - Downtrend 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()
      {  
       //create a string variable for signal
       string signal="";
       
       //create an array for price
       MqlRates PriceArray[];
       
       //sort array from current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
       
       //chart comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    
    
    • Qué ha cambiado en el código con respecto al anterior:
      • Las condiciones de la señal de venta; cuando el valor SAR se encuentra por encima del precio máximo:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
    
    
      • Las condiciones de la señal de take-profit; cuando el valor SAR se encuentra por debajo del precio mínimo:
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
    
    

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

    SAR Tendencia bajista - En el Navegador

    Arrastramos nuestro programa desde el Navegador hasta el gráfico. En este caso, se abrirá la ventana siguiente:

    SAR Downtrend - ventana de la estrategia

    Clicamos en Aceptar y el programa (asesor) se ejecutará en el gráfico como mostramos en la siguiente figura:

    SAR Tendencia bajista - En el Gráfico

    Las señales se mostrarán como comentarios en el gráfico. En la siguiente figura, mostramos un ejemplo con una prueba de la estrategia; la generación de la señal se muestra en la siguiente figura:

    • Señal para Sell:

    SAR Tendencia bajista - señal de venta

    • Señal de take-profit:

    SAR Downtrend - señal de take-profit

    • Estrategia tres: señal de compra con estrategia de trailing-stop

    De acuerdo con esta estrategia, el asesor experto debería mostrar una señal de compra y trailing-stops como comentarios en el gráfico según el valor de Parabolic SAR y los precios actuales. Debería mostrar el valor del trailing-stop en el gráfico y luego generar una nueva señal de compra si el valor SAR cae por debajo del precio mínimo. El código del sistema comercial para la estrategia será el siguiente:

    //+------------------------------------------------------------------+
    //|         Parabolic SAR System - Buy signal with training stop.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()
      {  
       //create a string variable for signal
       string signal="";
       
       //create an array for price
       MqlRates PriceArray[];
       
       //sort array from current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    
    
    • Diferencias en el código:
      • Hemos añadido el valor de trailing-stop, que es el valor SAR; se muestra como una línea aparte en el comentario del gráfico:
    Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);

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

    SAR-Uptrend - Señal de compra con estrategia de Trailing Stop - Programa en el Navegador

    Para iniciar el asesor experto en la plataforma, arrastre el programa desde el Navegador hasta el gráfico, y se abrirá la siguiente ventana:

    SAR-Uptrend - Señal de compra con estrategia de trailing-stop - ventana del programa

    Clicamos en Aceptar y el programa (asesor) se ejecutará en el gráfico como mostramos en la siguiente figura:

    SAR-Uptrend - Señal de compra con estrategia de trailing-stop - programa en el gráfico

    A continuación, le mostramos ejemplos de señales del asesor comercial que hemos creado:

    SAR-Uptrend - Señal de compra con estrategia de trailing-stop 1

    La siguiente figura muestra cómo el valor del trailing-stop aumentará junto con el precio:

    SAR-Uptrend - Señal de compra con estrategia de trailing-stop 2

    • Estrategia cuatro: señal de venta con estrategia de trailing-stop

    De acuerdo con esta estrategia, el asesor experto debería mostrar una señal de venta y trailing-stops como comentarios en el gráfico según el valor de Parabolic SAR y los precios actuales. Asimismo, debería mostrar el valor del trailing-stop en el gráfico y luego generar una nueva señal de venta si el valor SAR sube por encima del precio máximo. El código del sistema comercial para la estrategia será el siguiente:

    //+-----------------------------------------------------------+
    //| Parabolic SAR System - Sell signal with trailing stop.mq5 |
    //| Copyright 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()
      {  
       //create a string variable for signal
       string signal="";
       
       //create an array for price
       MqlRates PriceArray[];
       
       //sort array from current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    
    
    • Diferencias en el código:
      • Condiciones de la señal de venta:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
    
    

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

    SAR-Downtrend - Señal de venta con estrategia de trailing-stop - programa en el Navegador

    Iniciamos el programa en el terminal clicando dos veces en el archivo o arrastrándolo al gráfico, después de lo cual aparecerá la ventana del asesor:

    SAR-Downtrend - Señal de venta con estrategia de trailing-stop - ventana del programa

    Clicamos en "Aceptar" y el experto aparecerá en el gráfico:

    SAR-Downtrend - Señal de venta con estrategia de trailing-stop - programa en el gráfico

    Ejemplos de señales generadas por este asesor:

    SAR-Downtrend - Señal de venta y trailing-stop 1

    La siguiente figura muestra cómo el valor del trailing-stop disminuirá siguiendo al precio:

    SAR-Downtrend - Señal de venta y trailing-stop 2


    Conclusión

    Se supone que a estas alturas ya conocerá bien el indicador técnico Parabolic SAR: hemos aprendido qué mide, así como la forma de calcularlo manualmente para comprender mejor su concepto básico. Usando estrategias simples como ejemplo, hemos visto cómo se puede utilizar, y también hemos construido varios esquemas de estas estrategias que nos ayudarán a escribir un sistema comercial basado en indicadores. También hemos escrito el código para varias estrategias comerciales en MQL5 y hemos obtenido programas para trabajar en MetaTrader 5 que generan automáticamente señales comerciales precisas.

    Esperamos que haya intentado codificar estas estrategias por sí mismo, ya que este hecho mejorará mucho su aprendizaje: la práctica es un factor muy importante para aprender cosas nuevas. El material se asimila mucho mejor si intentamos aplicar los conocimientos adquiridos en la práctica.

    También esperamos que el artículo le haya sido útil, le haya presentado nuevas estrategias de trabajo, y también que le haya ayudado a encontrar nuevas ideas relacionadas o no con el tema del artículo. 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.


    Traducción del inglés realizada por MetaQuotes Software Corp.
    Artículo original: https://www.mql5.com/en/articles/10920

    Redes neuronales: así de sencillo (Parte 15): Clusterización de datos usando MQL5 Redes neuronales: así de sencillo (Parte 15): Clusterización de datos usando MQL5
    Continuamos analizando el método de clusterización. En este artículo, crearemos una nueva clase CKmeans para implementar uno de los métodos de clusterización de k-medias más extendidos. Según los resultados de la prueba, el modelo ha podido identificar alrededor de 500 patrones.
    Aprendiendo a diseñar un sistema de trading con ATR Aprendiendo a diseñar un sistema de trading con ATR
    En este artículo, analizaremos una nueva herramienta técnica que puede usarse en el trading. Esta es una continuación de nuestra serie para aprender a diseñar sistemas de trading sencillos. En esta ocasión, trabajaremos con otro popular indicador técnico, el rango medio verdadero (Average True Range, ATR).
    Aprendiendo a diseñar un sistema de trading con OBV Aprendiendo a diseñar un sistema de trading con OBV
    En este nuevo artículo de nuestra serie para principiantes en programación MQL5, aprenderemos a construir sistemas de trading usando los indicadores más populares. En esta ocasión, analizaremos el indicador On Balance Volume (OBV), aprenderemos a utilizarlo y también a crear un sistema comercial basado en él.
    Aprendiendo a diseñar un sistema comercial basado en Momentum Aprendiendo a diseñar un sistema comercial basado en Momentum
    En el artículo anterior, mencionamos la importancia de detectar las tendencias, es decir, de determinar la dirección del movimiento del precio. En este artículo, hablaremos sobre otro concepto importante en el trading, que también existe en forma de indicador: el impulso del precio o el indicador Momentum. Asimismo, desarrollaremos nuestro propio sistema comercial basado en este indicador.