SylvainVervoort

Sylvain Vervoort, vive actualmente en Bélgica. Es ingeniero electrónico retirado y analista técnico desde hace más de 30 años. Trader independiente, escritor, editor y educador en el área de análisis técnico. Ha escrito el libro Capturing Profit with Technical Analysis.
Sylvain / stocata.org

 

  • Los traders necesitan una forma de acercarse a los mercados, saber qué buscar y cómo tomar decisiones de compra y venta. Con este artículo empezamos una serie de artículos que lo guiarán a través de este proceso comenzando con cómo operar usando los gráficos de precios, es decir, aplicando un análisis técnico muy básico.
  • Artículo publicado en Hispatrading Magazine nº47.

En esta parte no usaremos ningún indicador adicional además de un canal de volatilidad sobre las velas de precios. El código fuente del indicador Volatility Band para MetaTrader4 se incluye con este artículo.

Parte 1: El indicador Volatility Band

¿Toma decisiones de compra y venta utilizando solo los gráficos?

En artículos anteriores, en Hispatrading, mostré un conjunto de técnicas que aplico para tomar decisiones de compra y venta manuales y automáticas o una combinación de ambas.

Entre otros componentes de mi enfoque, tengo un sistema experto y un conjunto de bandas de volatilidad que utilizo como indicador, a las que llamo SCVolatilityBands. En esta primera parte, de esta serie, presentaré una versión modificada de mi Volatility Band, ya que usaré la línea media de la banda para detectar giros y movimientos de tendencia.

Así, en lugar de una única entrada fija para la línea media, podrá utilizar diferentes tipos de promedio: la media móvil simple, la media móvil exponencial, la media móvil suavizada y la media móvil ponderada lineal. También podrá calcular estas medias utilizando diferentes tipos de datos para calcular el resultado promedio, incluidos cierre, apertura, máximo, mínimo, media, típica y ponderada.

Después, en la segunda parte de esta serie de artículos, aplicaré un análisis técnico muy básico para buscar oportunidades de trading. Demostraré cómo tomar decisiones de compra y venta utilizando un gráfico diario del Nasdaq. Luego, en la tercera parte de esta serie, usaré técnicas más avanzadas para buscar señales de compra y venta más rápidas y precisas utilizando los mismos gráficos y períodos de tiempo que en la parte 2 para comparar los resultados del sistema.

El indicador de Volatility Band (SCVolatilityBand)

Tenga en cuenta que demostraré mis técnicas utilizando gráficos de velas diarias usando datos del CFD del Nasdaq («contratos por diferencia», que es un instrumento negociado en Europa y en otros lugares, aunque no en los EE. UU.). Por supuesto, puede usar datos de un rastreador de índices o futuros en el Nasdaq 100 en su lugar.

En el gráfico básico, usaré dos medias móviles: una media móvil simple de 89 días y una media móvil simple de 233 días a largo plazo. Usaré estos promedios solo para mostrar el soporte y la resistencia dinámicos del precio. Utilizaré las Bandas de Bollinger para gráficos relacionados con el tiempo fijo o una Volatility Band para los gráficos relacionados con el tiempo fijo o no fijo.

Con eso en mente, programé un indicador combinado que le permite seleccionar la Banda de Bollinger o la Volatility Band. Primero, echemos un vistazo a los parámetros de entrada para este indicador de bandas de volatilidad modificado. El código fuente completo de MetaTrader4 para este indicador se proporciona al final de este artículo. Encontrará tanto el código fuente, SCVolatilityBand.mq4, como el código ensamblado, SCVolatilityBand.ex4, en mi sitio web en http://stocata.org/ metatrader / fórmulas / SCVolatilityBand.html. La Figura 1 muestra la ventana de entradas de SCVolatilityBand. El primer valor de la casilla de verificación de entrada, verdadero / falso, crea una Volatility Band (verdadero) o una Banda de Bollinger (falso).

Figure 01
FIGURA 1: INDICADOR SCVOLATILITYBAND. En SCVolatilityBand, el primer valor de la casilla de verificación de entrada, verdadero / falso, crea una banda de volatilidad (verdadero o una banda de Bollinger (falso).

Bandas de Bollinger (SCVolatilityBand)

Las Bandas de Bollinger originales mostrarán el lado superior e inferior de las bandas según la desviación estándar (una medida de volatilidad) a una distancia positiva y negativa de la media móvil simple (SMA) del precio de cierre.

Establecer la primera entrada en false selecciona la creación de Bandas de Bollinger. Establecer las barras promedio de las bandas en 20 y el rango de volatilidad de las bandas en 2.4 (la desviación estándar) dibuja la Banda de Bollinger superior e inferior en función de una desviación estándar de 2.4, medida a partir de la SMA de 20 barras en los precios de cierre.

Aquí está la fórmula básica:

Simple Moving Average = SMA = SUM(CLOSE, Period) / Period

Standard Deviation = StdDev = SQRT(SUM[(CLOSE – SMA(CLOSE, Period))^2,  Period]/Period)

Upper band = SMA + (Deviation*StdDev)

Lower band = SMA – (Deviation*StdDev)

Para la banda de Bollinger superior e inferior, calculamos la desviación de la media móvil simple, como es el caso de las bandas de Bollinger estándar. Las Bandas de Bollinger también utilizan la media móvil simple para mostrar la línea media. Tenga en cuenta que no estoy usando el parámetro de entrada de ajuste de banda inferior al dibujar las Bandas de Bollinger.

El indicador SCVolatilityBand ofrece más opciones para dibujar la línea media de la banda. Puede seleccionar el período promedio de la línea media por separado, y si usa un valor de entrada de cero, la línea media no se dibuja. Tiene la opción de elegir un método de promedio de línea media (SMA, EMA, SMMA o LWMA) y puede aplicar su método de promedio seleccionado en el tipo de precio seleccionado (cierre, apertura, máximo, mínimo, mediano, típico).

Le muestro las siglas de los tipos de medias:

Media móvil simple SMA, media móvil exponencial EMA, media móvil suavizada SMMA y media móvil ponderada lineal LWMA. Además, puede utilizar diferentes tipos de datos para calcular el resultado promedio (Cierre, Apertura, Alto, Bajo, Media (H + L) / 2, Típico (H + L + C) / 3, Ponderado (O + H + L + C) / 4.

Las fórmulas de las medias: SMA, EMA, SMMA, LWMA

SMA: La media móvil simple aritmética se calcula sumando los precios de cierre durante un cierto número de períodos individuales (por ejemplo, 20 días). Luego, este valor se divide entre el 

número de períodos individuales.

SMA = SUM (CLOSE, Period) / Period

La SMA sirve principalmente para identificar las tendencias actuales de precios a medio y largo plazo y actúa como soporte y resistencia.

EMA: la media móvil exponencial se calcula sumando la media móvil de un cierto porcentaje del precio de cierre actual al valor anterior.

Valor inicial de EMA = SMA = SUM (CLOSE, Period) / Period

Porcentaje = 2 / (Periodo + 1)

EMA = (Cierre – EMA (anterior) * Porcentaje + EMA (anterior).

Con promedios móviles exponencialmente suavizados, los últimos precios tienen más valor. Una EMA alivia el impacto negativo del precio medio rezagado.

SMMA: el primer valor de media móvil de suavizado se calcula a partir de la SMA:

SUM1 = SUM (CLOSE, Period)

Primera SMMA = SUM1 / Periodo

A partir del segundo cálculo, el SMMA se calcula de la siguiente manera:

SMMA (actual) = (SMMA (actual – 1) * (Periodo – 1) + CLOSE (actual)) / Periodo

El SMMA tiene como objetivo reducir el ruido en lugar de reducir el retraso. Al reducir el ruido, elimina las fluctuaciones y traza la tendencia predominante. El SMMA se puede utilizar para confirmar tendencias y definir áreas de soporte y resistencia.

LWMA: en una media móvil ponderada lineal, los datos más recientes tienen más valor que los datos anteriores. Se calcula multiplicando cada uno de los precios de cierre dentro del período considerado, por un cierto coeficiente de ponderación:

LWMA = SUM (Cerrar (actual) * actual, período) / SUM (actual, período)

Donde: SUM (actual, período) es la suma total de coeficientes ponderados.

Con estos elementos, tendrá muchas combinaciones posibles para usar diferentes métodos de promediado y diferentes datos de precios subyacentes. Esto le permite adaptar la línea media de bandas a un formato que sea más adecuado para su aplicación.

Bandas de Bollinger estándar

Las Bandas de Bollinger no son un sistema de trading independiente, sino que son un indicador diseñado por John Bollinger para proporcionar información sobre la volatilidad de los precios. En la Figura 2, que es un gráfico diario del Nasdaq, muestro las Bandas de Bollinger estándar con un promedio de 20 días, una desviación estándar de 2 y una SMA de 20 días como línea media.

La contracción o squeeze

Cuando la volatilidad cae a niveles bajos, las Bandas de Bollinger se estrechan. Esta «compresión» de la banda suele ir seguida de un período de mayor volatilidad. El estrechamiento de la volatilidad de las bandas puede predecir un avance o una caída. Una vez que la presión está activada, una ruptura del precio en el soporte o la resistencia indica una continuación de la tendencia o el comienzo de un nuevo movimiento.

En el gráfico diario del Nasdaq, en la Figura 2, hay tres áreas de precios resaltadas que muestran una contracción de la banda. La ruptura hacia el lado superior continúa la tendencia alcista, ensanchando las bandas debido a una mayor volatilidad.

Las reacciones de precios en la continua tendencia alcista encuentran soporte en los niveles de la línea media (roja) y posiblemente un poco más abajo en el nivel de la banda inferior. Finalmente, el movimiento alcista se encuentra con una inversión de tendencia, sin mostrar una contracción.

Figure 02
FIGURA 2: BANDAS DE BOLLINGER EN UN SQUEEZE EN UNA TENDENCIA ALZA. Las Bandas de Bollinger estándar en un gráfico diario del índice Nasdaq. Cuando la volatilidad cae, las bandas se estrechan y cuando aumenta la volatilidad, las bandas se ensanchan. Aquí se resaltan tres squeezes de la banda.
Figure 03
FIGURA 3: SCVOLATILITYBAND, SEÑALES DE LAS BANDAS DE BOLLINGER. Puede utilizar diferentes tipos de promedios y datos de precios para la línea media. Aquí, las líneas promedio verde y azul y el precio se mueven dentro de las Bandas de Bollinger. Tenga en cuenta la contracción del precio al principio y alrededor de la mitad del movimiento ascendente.

Señales de las Bandas de Bollinger, SCVolatilityBand

Con el indicador SCVolatilityBand y las Bandas de Bollinger seleccionados, tiene la oportunidad de utilizar diferentes tipos de precios y promedios de la línea media. En la Figura 3, verá el gráfico diario del Nasdaq que muestra un promedio de banda estándar de 20 días, dos desviaciones estándar del promedio móvil simple de 20 días (rojo).

La línea verde promedio es un promedio móvil ponderado lineal de 20 días del precio ponderado. Se ve tan suave como la línea roja SMA pero reacciona más rápido al nivel de reversión de precios. La línea de promedio azul se basa en el mismo tipo de promedio y tipo de datos que la línea verde, excepto que usa un promedio de 55 días.

Con las líneas promedio verde y azul y el precio moviéndose dentro de las Bandas de Bollinger, puede usar las siguientes reglas para abrir una posición larga:

  • El precio se mueve hacia arriba desde la banda inferior y rompe la LWMA verde de 20 días del precio ponderado hacia el lado superior, mientras que la LWMA comienza o continúa con un movimiento ascendente. Esta es la señal para abrir una operación larga, marcada por la línea vertical punteada verde.
  • El precio sube y encuentra soporte por encima de la media móvil simple (SMA) roja. El precio de cierre debe permanecer por encima de la LWMA azul de 55 días. La posición larga se cierra cuando el precio de cierre cae por debajo de este promedio azul LWMA de 55 días, marcado por la línea punteada vertical roja en el gráfico.

Tenga en cuenta la contracción del precio al principio y alrededor de la mitad del movimiento ascendente. ¿Es esta estrategia de trading aún factible en un movimiento de tendencia alcista cuando hay más y mayores retrocesos volátiles, como es el caso en el gráfico de la Figura 4?

Figure 04
FIGURA 4: SCVOLATILITYBAND, SEÑALES DE TRADING DE LAS BANDAS DE BOLLINGER CON MÁS RETROCESOS VOLÁTILES. ¿Sigue siendo factible la técnica de negociación en un movimiento de tendencia alcista cuándo hay más y mayores retrocesos así de volátiles?

Podemos aplicar las mismas reglas:

  • El precio se mueve hacia arriba desde la banda inferior y rompe la LWMA verde de 20 días hacia el lado superior, y la LWMA de 20 días comienza o continúa con un movimiento ascendente. Esté preparado para abrir una operación larga en el nivel de la primera línea vertical punteada verde.
  • El precio se mueve hacia arriba, encontrando soporte por encima de la media móvil simple (SMA) roja durante una contracción de la primera banda, antes de continuar el movimiento ascendente.
  • El precio de cierre debe permanecer por encima de la LWMA azul de 55 días del precio ponderado. En el peor de los casos, podría decidir esperar el apoyo del lado bajo de la Banda de Bollinger.

Dado que aquí, la LWMA de 55 días está muy cerca del lado bajo de la banda, decide esperar y ver si el soporte de la banda inferior aguanta. Se forma una contracción y el precio continúa subiendo. La alternativa es cerrar la operación larga con ganancias, abriendo una nueva operación larga en el nivel de la segunda línea discontinua verde vertical, con una ruptura del precio por encima de la compresión y por encima de la LWMA verde de 20 días.

La posición larga se cierra después de que el precio alcanza un doble techo y una vela roja más grande cae por debajo del promedio azul de la LWMA de 55 días, la segunda línea discontinua roja vertical en el gráfico. Desde el momento en que observe retrocesos de precios más grandes, puede decidir aumentar el promedio de LWMA de 55 días a, por ejemplo, 89 días (según la serie de Fibonacci). Esto da como resultado el soporte perfecto para los mínimos en el movimiento alcista, pero el cierre de la operación se retrasará un día.

Volatility bands (SCVolatilityBand)

Establecer el primer parámetro de entrada de SCVolatilityBand en true crea una Volatility Band alrededor del precio (Figura 5). Para calcular la banda superior e inferior, primero creamos un bufer de datos temporal con la diferencia entre el precio alto o el precio de cierre de la barra anterior, el que sea mayor. A esto le sigue restando el precio bajo o el precio de cierre anterior, el que sea más bajo. El resultado se almacena en un bufer de datos temporal.

En el segundo paso, creamos un bufer temporal para contener el promedio de los datos temporales del paso 1, multiplicado por la entrada del rango de volatilidad de las bandas.

El paso 3 calcula la Volatility Band superior basada en la entrada de barras promedio de la banda y usa el promedio LWMA basado en el precio de cierre. El último paso agrega un porcentaje de este promedio, basado en el valor del bufer temporal del paso 2, dividido entre el precio de cierre. Hacemos lo mismo para la Volatility Band más baja, pero restamos un porcentaje y, además, lo multiplicamos por la entrada de ajuste de la banda baja. Puede utilizar un valor de 1 para no hacer ningún ajuste o, por ejemplo, 0,9 para mover la banda baja un 10% hacia arriba. La idea es ajustar la banda inferior para un pico de volatilidad a corto plazo más alto, que aparece principalmente cuando comienza una corrección a la baja. Para ver cómo se puede implementar, consulte el código fuente de MetaTrader4 al final de este artículo, «Código fuente MT4 para SCVolatilityBand».

Figure 05
FIGURA 5: SCVOLATILITYBAND. Las SCVolatilityBands se muestran en un gráfico diario del índice Nasdaq con una línea media (verde) y un promedio como soporte (azul). La banda inferior se puede ajustar para adaptarse a la volatilidad.

Por lo tanto, el indicador SCVolatilityBand ofrece muchas opciones para trazar la línea media de la Volatility Band. Tiene la ventaja de poder seleccionar el período promedio de la línea media por separado, y cuando usa un valor de entrada cero, la línea media no se dibuja. De forma complementaria, tiene la opción de elegir un método de promedio de línea media (SMA, EMA, SMMA o LWMA), y puede aplicar su método de promedio seleccionado en el tipo de precio seleccionado (cierre, apertura, máximo, mínimo, mediano, típico).

En la Figura 5, un gráfico con datos diarios del Nasdaq, usamos una Volatility Band (magenta) con un promedio en forma de banda de 30 días, un rango de volatilidad de las bandas de 2.4 y un ajuste de la banda baja de 0.9.

La línea media verde es un promedio de seguimiento de tendencias a corto plazo establecido en un período de 15 días y que utiliza una media de LWMA en el cierre ponderado. La línea de soporte azul es un promedio de tendencia a mediano plazo basado en un promedio LWMA de 55 días en el precio bajo.

Puede adoptar las siguientes reglas de trading básicas:

  • El precio se mueve hacia arriba desde la banda inferior y rompe la LWMA verde de 15 días del ponderado cerca del lado superior, y la LWMA de 15 días comienza o continúa con un movimiento ascendente. Es hora de abrir una operación larga al nivel de la primera línea vertical punteada verde en el gráfico.
  • El precio se mueve hacia arriba, encontrando soporte a corto plazo por encima del promedio verde de 15 días. Los retrocesos más grandes reducen el precio hasta el soporte del promedio de precio bajo azul de 55 días antes de continuar el movimiento alcista.
  • El precio de cierre debe permanecer por encima de la LWMA de 55 días del precio bajo. En el peor de los casos, podría decidir esperar el apoyo del lado bajo de la Volatility Band.
  • La posición larga se cierra después de que el precio alcanza un doble techo y una vela roja más grande cae por debajo del LWMA azul de 55 días en el precio bajo, la segunda línea discontinua roja vertical en el gráfico.

Con esto finaliza la primera parte de esta serie de artículos sobre análisis técnico aplicado. Esta parte sirvió para presentar el indicador de Volatility Band SC.

En la parte 2, usaré este indicador y un análisis técnico muy básico para demostrar la manera de tomar decisiones de compra y venta.

Código fuente MT4 para SCVolatilityBand

//+——————————————————————+

//|                                             SCVolatilityBand.mq4 |

//|                               Copyright © 2020, Sylvain Vervoort |

//|                                              http://stocata.org/ |

//+——————————————————————+

#property copyright   «©2020, Sylvain vervoort»

#property link        «http://stocata.org/»

#property description «Smoothed Volatility Band 2020.01.02 V1.1»

#property strict

#property indicator_chart_window

#property indicator_buffers    3

#property indicator_color1     Magenta

#property indicator_color2     Magenta 

#property indicator_color3     Blue  

#property indicator_width1     2

#property indicator_width2     2

#property indicator_width3     2

#property indicator_style1     STYLE_SOLID

#property indicator_style2     STYLE_SOLID

#property indicator_style3     STYLE_SOLID

//—- input parameters

extern bool    VolatilityBand    = true;  // True=Volatility ,false=Bollinger

extern int     BandsPeriod       = 20;    // Bands Average Bars

extern double  BandsDeviation    =  2.4;  // Bands Volatility Range

extern double  LowbandAdjust     =  0.9;  // Low Band Adjust (Vol. Band Only)

extern int     MiddleLinePeriod  = 21;    // Middle Line Period, O=Not displayed

extern int     MiddleLineMethod  =  1;    // Middle Line Method,0=SMA;1=EMA;2=SMMA;3=LWMA

extern int     PriceConstant     =  4;    // Price 0=C;1=O;2=H;3=L;4=Med;5=Typ;6=Wght

//—- buffers

double HighChannel   [];

double LowChannel    [];

double Mediaverage [];

double AtrBuf        [];

double TempBuf       [];

//+——————————————————————+

//| SCVolatilityBand Indicator Initialisation                        |

//+——————————————————————+

int OnInit(void)

  {

//—- indicators

   IndicatorDigits   (Digits);

   

   IndicatorBuffers(5);

   SetIndexStyle (0,DRAW_LINE);

   SetIndexBuffer(0,HighChannel);

   SetIndexDrawBegin(0,BandsPeriod*2-1);

   SetIndexStyle (1,DRAW_LINE);

   SetIndexBuffer(1,LowChannel); 

   SetIndexDrawBegin(1,BandsPeriod*2-1);

   SetIndexStyle (2,DRAW_LINE);

   SetIndexBuffer(2,Mediaverage);

   SetIndexDrawBegin(2,MiddleLinePeriod);

   SetIndexBuffer(3,AtrBuf);

   SetIndexBuffer(4,TempBuf);

      

   string volband    = IntegerToString(VolatilityBand);

   string bandsper   = IntegerToString(BandsPeriod);

   string bandsdev   = DoubleToString (BandsDeviation,1);

   string lowbandadj = DoubleToString (LowbandAdjust,2);

   string midlineper = IntegerToString(MiddleLinePeriod); 

   IndicatorShortName(«SVE_VolatilityBand(«+volband+» «+bandsper+» »

                      +bandsdev+» «+lowbandadj+» «+midlineper);  

//— check input parameters validity                     

  if(BandsPeriod <= 0 || BandsDeviation <= 0 || LowbandAdjust <= 0 || MiddleLinePeriod < 0 || 

     MiddleLineMethod <0 || MiddleLineMethod >3 || PriceConstant < 0 || PriceConstant>6)

    { 

     Alert(«Faulty Input Parameter, Defaults used. Try again!»);

     BandsPeriod = 20; BandsDeviation = 2.4; LowbandAdjust = 0.9; MiddleLinePeriod = 20; 

     MiddleLineMethod = 1; PriceConstant = 4;

    }

                                     

//— initialization done

   return(INIT_SUCCEEDED);

  }

//+——————————————————————+

//| SCVolatilityBand iteration function                              |

//+——————————————————————+

int OnCalculate

               (const int      rates_total,

                const int      prev_calculated,

                const datetime &time[],

                const double   &open[],

                const double   &high[],

                const double   &low[],

                const double   &close[],

                const long     &tick_volume[],

                const long     &volume[],

                const int      &spread[])

  {    

   int i, limit;

   if(prev_calculated<0) return(-1); // Return error No bars available

   else limit = rates_total-1;       // -1 addressing counts to 0

   

   if(VolatilityBand) // VolatilityBand == true. Draw volatility bands

   {

    // Calculate price difference in TempBuf

    i = limit;

    while(i>=0)

     {

      if(i==limit)TempBuf[i]=high[i]-low[i];

      else TempBuf[i]=MathMax(high[i],close[i+1])-MathMin(low[i],close[i+1]);

      i–;

     }

     

    // calculate price deviation

    for (i = limit; i>=0;i–)

    AtrBuf[i]=iMAOnArray(TempBuf,0,BandsPeriod*2-1,0,MODE_SMA,i) * BandsDeviation; 

    

    // Create upper, lower channel and middle line

    for (i=limit;i>=0;i–) HighChannel[i]=iMA(NULL,0,BandsPeriod,0,MODE_LWMA,PRICE_CLOSE,i) +

                          (iMA(NULL,0,BandsPeriod,MODE_LWMA,PRICE_CLOSE,i)*AtrBuf[i]/close[i]);

    for (i=limit;i>=0;i–) LowChannel[i]=iMA(NULL, 0,BandsPeriod,0,MODE_LWMA,PRICE_CLOSE,i) –

                          (iMA(NULL,0,BandsPeriod, 0,MODE_LWMA,PRICE_CLOSE,i)*AtrBuf[i]*

                           LowbandAdjust/close[i]);

    if (MiddleLinePeriod > 0) 

         {

         for (i=limit;i>=0;i–) 

         Mediaverage[i]=iMA(NULL,0,MiddleLinePeriod,0,MiddleLineMethod,PriceConstant,i);

         }

//—-

   }

   else // If volatility Band == false, draw Bollinger bands

   {

    for (i=limit;i>=0;i–) HighChannel[i]   = 

         iBands(NULL,0,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_UPPER,i);

    for (i=limit;i>=0;i–) LowChannel[i]    = 

         iBands(NULL,0,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_LOWER,i);

    

    if (MiddleLinePeriod > 0)

        {

            for (i=limit;i>=0;i–) Mediaverage[i] = 

            iMA   (NULL,0,MiddleLinePeriod,0,MiddleLineMethod,PriceConstant,i);

        }

   }

   return(rates_total);

  }

// +————————————-END OF PROGRAM———————————-+

Imagen:

Profesor enseñando o aplicando

Deja una respuesta