Curso de Programación. 6.2. Bandas de Bollinger

Abordamos durante este artículo el segundo bloque dedicado al estudio de las Bandas de Bollinger.

Durante el mismo, vamos a analizar un segundo método de entrada que, en esta ocasión, tratará de aprovechar las señales de agotamiento ofrecidas por el indicador.

Les recuerdo que pueden encontrar e nuestro blog un ejercicio asociado al tema: Ejercicio BOLLINGER.

6.4. Niveles de sobrecompra/sobreventa

Como ya comentamos en el primer bloque, cuando los precios aparecen fuera del canal determinado por las bandas de Bollinger, se considera que el activo ha abandonado el rango normal esperado, pudiendo interpretarse esta información como momentos de sobrecompra y sobreventa.

Sin embargo, cabe destacar que cuando se inicia un nuevo impulso, por lo general, el movimiento comenzará fuera de la zona de influencia del canal, como consecuencia de un cambio en la volatilidad del activo. Si nada más empezar el rallie ya estamos considerando que se encuentra en las zonas de agotamiento, ¿no estaremos siendo demasiado exigentes?

Una buena técnica para exigir cierta madurez en el impulso antes de considerar la llegada de las zonas de debilitamiento, consiste en analizar no sólo la posición del precio con respecto al valor de las bandas del canal, sino también un cambio en la amplitud del canal. Dicho de otro modo, vamos a esperar a que se produzca un incremento de la volatilidad que nos confirme que ya se ha iniciado el proceso de distribución:




6.5. Estrategia Antitendencia

Una vez hemos aclarado cómo vamos a detectar la aparición de las zonas de agotamiento, vamos a proceder a diseñar una estrategia que utilice ésta información. Hemos llamado a la estrategia antitendencia debido a que realmente vamos a tratar de adelantarnos al cambio de dirección del precio. Para ello, colocaremos sendas órdenes de stop en los niveles determinados por las bandas siguiendo los siguientes criterios:

1) Cuando detectemos la zona de sobrecompra, colocaremos una orden a corto x puntos por debajo de la banda superior de Bollinger.
2) Cuando detectemos la zona de sobreventa, colocaremos una orden a largo x puntos por encima de la banda inferior de Bollinger.

Mediante estas órdenes, trataremos de aprovechar los movimientos de retroceso generados por la salida de las zonas de agotamiento.



Cubriremos pérdidas con un stop loss a una distancia igual a la amplitud entre las bandas y la media. Como objetivo, nos marcaremos alcanzar la banda contraria.

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

Diseño PDV



Diseño VBA

'¡¡ Parameters
Dim Contratos As Long '1
Dim Periodo As Integer '25
Dim Coeficiente As Double '2
Dim MargenVol As Double '100
Dim filtro As Double '2
'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 BollMed As Double
    Dim gmp As Integer
    Dim gep As Double

    BollMed = .GetIndicatorValue(BollData, 0, 1)
    BollSup = .GetIndicatorValue(BollData, 0, 2)
    BollInf = .GetIndicatorValue(BollData, 0, 3)
    gmp = .GetMarketPosition
    gep = .GetEntryPrice
    '-- Ordenes de salida
    If gmp = 1 Then
        '¿alcanza banda superior?
        If (.Close >= BollSup) Then
            .ExitLong AtClose, Contratos
        Else
            .ExitLong AtStop, Contratos, gep - (BollMed - BollInf)
        End If
    ElseIf gmp = -1 Then
        '¿alcanza banda inferior?
        If (.Close <= BollInf) Then
            .ExitShort AtClose, Contratos
        Else
            .ExitShort AtStop, Contratos, gep + (BollSup - BollMed)
        End If
    End If
    '-- Control cumple regla aumenta la volatilidad
    If (BollSup - BollInf) >= MargenVol Then
        If gmp <> -1 Then
            '-- Vender sólo si supera el nivel superior
            If (.Close > BollSup) Then
                .Sell AtStop, Contratos, BollSup - filtro
            End If
        End If
        If gmp <> 1 Then
            '-- Comprar sólo si supera el nivel inferior
            If (.Close < BollInf) Then
                .Buy AtStop, Contratos, BollInf + filtro
            End If
        End If
    End If
End With
End Sub

Comentarios

Entradas populares de este blog

Trading Tools: Descarga de históricos para Visual Chart 6

Indicador Cuidatar

El indicador Volume Distribution