Curso de Programación. 6.1. Bandas de Bollinger

Durante este nuevo tema, que dividiremos en dos bloques, vamos a centrarnos en analizar el uso del indicador de volatilidad de uso más común: Las bandas de Bollinger.

Antes de iniciar la teoría, les facilitamos un enlace la ejercicio propuesto para este tema. Pueden acceder desde el siguiente enlace: Ejercicio BOLLINGER.

6.1. Las Bandas de Bollinger

Las Bandas de Bollinger fue un concepto ideado por John Bollinger durante los años ochenta.

Este indicador se representa como dos curvas que envuelven la nube de precios del activo, lo cual le da un aspecto de canal de precios, pero con ciertos matices que ahora veremos.

Como decimos, este indicador funciona como un canal de precios, pero con la particularidad de que la distancia de las bandas del canal varía en función de la desviación típica.

El cálculo concreto de cada una de las bandas es el siguiente:

Banda Superior = Media Móvil(25) + Desv.Típica * K(2).
Banda Inferior = Media Móvil(25) - Desv.Típica * K (2).

Donde K es la constante que se aplica a la desviación de la media y que se considera como el punto de inflexión de una distribución normal (si bien no se considera que los precios sigan ninguna función de distribución conocida).


6.2. Interpretación

Debido al movimiento y la manera tan particular con la que se distribuyen los precios, el valor de la desviación típica varía ostensiblemente a lo largo del tiempo: Como consecuencia, la distancia entre las bandas de Bollinger va cambiando de forma notable. Esta fluctuación depende poderosamente de la volatilidad de los precios.

Partiendo de ésta premisa, se aplican las siguientes funciones al uso del indicador:
1. Permite ubicar el precio dentro de un rango relativo a la evolución de los precios.
2. En función de la distancia entre las bandas, se puede analizar la volatilidad del valor.
3. Cuando el precio supera a las bandas, se puede concluir que está fuera del rango normal de los precios, pudiendo tomar esta información como señal de entrada en zonas de agotamiento.



6.3. Estrategia Ruptura de Bandas

Una vez hemos visto cómo se usa normalmente éste indicador, concluiremos que el estudio de la volatilidad será la base principal sobre la que podemos construir una estrategia.

A la hora de tomar señales de operativa utilizando las Bandas de Bollinger, una de las ideas más extendidas sería la siguiente:
Se suelen producir movimientos importantes y rápidos en los precios después de periodos en los que se han estrechado las bandas.
Por tanto, si localizamos uno de estos periodos de congestión de la Bandas de Bollinger, nuestro objetivo para posicionarnos en mercado será encontrar el punto de fuga de la zona de contención.

Aunque es imposible saber con certeza cuando aparecerá dicho punto de fuga, estableceremos los siguientes criterios de entrada:

1) Cuando estemos en una zona de estrechamiento, colocaremos una orden a largo cuando el precio rompa la banda superior de Bollinger.
2) Cuando estemos en una zona de estrechamiento, colocaremos una orden a corto cuando el precio rompa la banda inferior de Bollinger.



Para cubrir pérdidas, colocaremos un stop de pérdidas al nivel de la banda contraria.

Veamos a continuación cómo quedaría el sistema:

Diseño en PDV:




Diseño en VBA:


'¡¡ Parameters
Dim Contratos As Long '1
Dim Periodo As Integer '25
Dim Coeficiente As Double '2
Dim MargenVol As Double '30
'Parameters !!
Dim BollData As DataIdentifier
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
    BollData = .GetIndicatorIdentifier(BollingerBands, Data, Periodo, Coeficiente, PriceClose, AvgSimple)
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
    Dim BollSup As Double
    Dim BollInf As Double
    Dim gmp As Integer
    Dim LanzaC As Boolean
    Dim LanzaV As Boolean

    BollSup = .GetIndicatorValue(BollData, 0, 2)
    BollInf = .GetIndicatorValue(BollData, 0, 3)
    gmp = .GetMarketPosition
    '-- Control cumple regla baja volatilidad
    If (BollSup - BollInf) <= MargenVol Then
        If gmp <> 1 Then
            .Buy AtStop, Contratos, BollSup
            LanzaC = True
        End If
        If gmp <> -1 Then
            .Sell AtStop, Contratos, BollInf
            LanzaV = True
        End If
    End If
    '-- Stop de Pérdidas
    If gmp = 1 And LanzaV = False Then
        .ExitLong AtStop, Contratos, BollInf
    End If
    If gmp = -1 And LanzaC = False Then
        .ExitShort AtStop, Contratos, BollSup
    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

Bollinger Volatility Oscillator N