Curso de Programación. 2.Medias Móviles (Parte 1)

Tras repasar los conceptos más básicos del diseño de sistemas a través de Visual Chart, esta semana comenzaremos con el análisis de los indicadores técnicos, empezando por una de las herramientas básicas en el análisis técnico: Las medias móviles.

Además, también tienen a su disposición un ejercicio propuesto relacionado con este tema.

2. MEDIAS MOVILES

2.1. Definición

Si observamos una media aplicada sobre un gráfico, observaremos una línea continua que, en función de la muestra, se moverá alrededor de los precios dibujando la curva de la tendencia. Sin embargo, un estudio más exhaustivo de dicha representación, nos informará que en realidad se trata de una serie de puntos concretos en la cotización unidos entre sí.

Cada uno de estos puntos representan el valor promedio de un subconjunto de los datos originales. El tamaño de cada subconjunto es a lo que llamamos como periodo de la media.

Podemos considerar por tanto que las medias nos sirven de muestra de la cotización durante un intervalo de tiempo. En función de la dirección de dicha muestra, podremos tener una idea más global del sentimiento de los precios.

Cabe destacar que este tipo de herramienta no tiene ningún valor de predicción, ya que no nos dice nada acerca de qué puede ocurrir en el futuro. Sin embargo, sí que nos informa acerca de la dirección de la tendencia, lo cual nos puede servir para la toma de decisiones de nuestra operativa.

2.2. Medias Móviles más utilizadas

Existen diversos tipos de medias móviles en función de la fórmula utilizada para su cálculo. Veamos cuales son las medias que se aplican de forma más común:

1. Simple Moving Average
La media simple es la media estándar. Se calcula sumando los precios de un periodo y dividiendo su resultado por el periodo. La media simple de 200 periodos es muy utilizada para realizar un seguimiento de la tendencia a largo plazo.

2. Exponential Moving Average
La media exponencial es la más utilizada, debido a sus características, puesto que reduce el retardo de la media simple aplicando más peso a los precios recientes.




2. 3. Otras Medias

La media simple y la exponencial serán el tipo de medias que utilizaremos en la mayoría de los casos. No obstante, como hemos dicho, existen muchos tipos de medias basadas en distintas fórmulas. Como muestra podríamos ver las siguientes medias:

1. Flat Moving Average (Media Aplanada)
Elimina el valor más antiguo por el más reciente. Este tipo de media tarda más en reflejar un cambio en los precios, de modo que su movimiento es más rígido.

2. Weighted Moving Average (Media Ponderada)
Este tipo de media es muy similar a la media exponencial, aunque menos demandada. La media ponderada asigna más peso a los datos recientes y además menos peso a los más antiguos.

3. AvLife 1, 2 y 3
Las medias del tipo AvLife utilizan parámetros de distanciamiento o aproximación acelerada a los precios, lo que genera un movimiento extraño alrededor de ellos. Muchos analistas utilizan este tipo de medias como niveles de soporte o resistencia dinámicos.

2.4. Estudio de la Media Exponencial

Una vez visto los tipos de medias que nos podemos encontrar, nos vamos a centrar en la media exponencial, ya que como decimos, tarda menos en detectar un cambio en la dirección del precio.

Llegados a este punto, volvemos a recordar que las medias no nos van a indicar cómo se van a comportar los precios, sino que nos dicen cómo se están comportando actualmente.

Por norma se suele recomendar actuar siempre a favor de la dirección de la media. Aunque como ocurre con cualquier estudio, esta regla no siempre se cumplirá, más aún cuando el mercado se encuentra en zonas de congestión o incertidumbre. Pese a ello, seguiremos la recomendación general para establecer una regla de trading aplicada a la media:

1) Si los cierres se mueven por encima de la media, se mantienen posiciones largas.
2) Si los cierres se mueven por debajo de la media, se mantienen posiciones cortas.



Veamos a continuación cómo diseñar un sistema que cumpla dichas reglas.

2.5. Codigo Fuente (PDV)

Para trasladar ésta estrategia a un sistema en PDV, lo primero que vamos a necesitar es añadir a nuestro sistema la media exponencial. Para ello:

1. Seleccionamos la carpeta de herramientas Indicadores con el botón derecho.

2. Pinchamos en la opción Añadir.

3. Del desplegable que aparece, buscamos la Exponential Moving Average y la seleccionamos. Pulsamos Aceptar.

4. Decidimos si añadimos los parámetros de la media como parámetros del sistema. Vamos a añadirlos, por lo que seleccionamos ambos parámetros y luego pulsamos Aceptar.

Hecho esto, ya sólo nos queda añadir las condiciones de entrada a largo y corto. En la siguiente imagen podemos ver cómo quedaría el diseño de dicho sistema:


2.6. Codigo Fuente (VBA)

El diseño de este sistema en VBA requiere que incorporemos una media exponencial para a continuación comparar su valor con la función de cierre (.Close).

El proceso para crear un indicador (sea el que sea) siempre es el mismo:

1. Declarar una variable del tipo DataIdentifier.

2.  Identificar el indicador mediante el método GetIndicatorIdentifier.

3. Opcionalmente, podemos declarar los parámetros del indicador (si los tuviera) como parámetros del sistema.

En este caso de la media exponencial, creamos una variable a la que llamamos AvExpData y la identificamos con la enumeración AvExponential. Además, añadimos como parámetros de entrada el periodo y el precio de referencia:

'¡¡ Parameters
Dim PeriodoMedia As Integer '30
Dim PrecioRef As Price 'PriceClose
'Parameters !!
Dim AvExpData As DataIdentifier
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
    AvExpData = .GetIndicatorIdentifier(AvExponential, Data, PeriodoMedia, PrecioRef)
    .StartBar = 0
End With
End Sub

Por ultimo, usamos el la función GetIndicatorValue para extraer el valor de la media en un momento determinado. El código del sistema quedaría del siguiente modo:

Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
    If .Close > .GetIndicatorValue(AvExpData, 0, 1) Then
        .Buy AtClose, 1
    Else
        If .Close < .GetIndicatorValue(AvExpData, 0, 1) Then
            .Sell AtClose, 1
        End If
    End If
End With
End Sub

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

MANEJO DE PLANTILLAS. Eliminar plantilla de un gráfico activa

Estudio de las divergencias en el RSI