Curso de Programación. 11.1. Los indicadores Pivot Point

Los indicadores de tipo Pivot Point (o puntos pivote) son unas herramientas de análisis técnico que trazan sobre el gráfico niveles de soporte y resistencia considerados como relevantes. Esto es así debido a que se trata de puntos especiales donde se espera una reacción del precio. Su detección permite al usuario tomar diferentes decisiones una vez que el precio rebasa estos valores.

El cálculo de los puntos pivote se basa en los precios generados durante periodos temporales previos. El más habitual que podemos encontrar es aquel que se obtiene tomando como referencia los precios del día anterior. No obstante, es posible utilizar otro tipo de temporalidades en función del estudio que desee hacerse.

Los indicadores de Visual Chart dedicados al estudio del punto pivote usan precisamente el Pivot Point Diario. Pueden encontrar estos indicadores por los nombres PivotPoint01 y PivotPoint02. Más adelante explicaremos las diferencias entre un tipo y otro.

Su aspecto sería como se muestra a continuación:



Calculo del Pivot Point
Cuando se estudian los puntos pivote, se suele usar, por un lado, el punto pivote primario (llamado nivel P), y por otro lado una serie de niveles de soporte y resistencia calculados a partir de éste.


El punto pivote primario (P) se obtiene de la siguiente fórmula:



Mientras que el resto de niveles se calculan de la siguiente manera:



Utilidades
Podemos destacar tres utilidades principales en el uso de los puntos pivotes:

1. Como método para detectar tendencias. Puesto que el nivel primario P se considera como un punto de inflexión en el comportamiento del mercado, la ruptura de dicho nivel sirve como posible medidor de la dirección del precio. De este modo, si el precio se encuentra por encima del nivel P, tendríamos una tendencia alcista mientras que si el precio se encuentra por debajo del nivel sería tendencia bajista.

2. Como referencia para tomar puntos de entrada y salida. Podemos colocar órdenes de compra y venta en los precios fijados por los niveles del Pivot Point, tanto en sentido a favor de la ruptura, como en sentido opuesto, en función de si esperamos la continuación del movimiento o una reacción de retroceso. También se puede usar el momento de cruce con dichos niveles como señal de referencia para la toma de decisiones, tal y como veremos en la estrategia planteada en éste artículo.

3. Aplicado a un oscilador. En lugar de trabajar directamente sobre el valor, podemos aplicar el indicador de pivotes sobre un oscilador (como el RSI o el estocástico). El funcionamiento será el mismo que si se aplica sobre el subyacente, sólo que al actuar a través del indicador base se pueden filtrar ciertas señales falsas o pequeños retrocesos, ya que el oscilador suavizará el movimiento del precio.

Diferencias entre el PivotPoint01 y el PivotPoint02
Anteriormente hemos indicado que Visual Chart ofrece dos posibles indicadores del tipo Pivot Point llamados PivotPoint01 y PivotPoint02. Las diferencias entre una y otra versión serían las siguientes:

PivotPoint01
Permite la opción de hasta tres métodos distintos de cálculo del nivel primario. En función del parámetro VariantType, seleccionamos el método tradicional o bien otros dos tipos:
1. La variante 1 calcula el pivote primario siguiendo la siguiente fórmula:



2. La variante 2 calcula el pivote primario siguiendo la siguiente fórmula:



PivotPoint02
Ésta versión sólo utiliza el método tradicional de cálculo, sin embargo aporta un juego más de niveles de soporte y resistencia, pasando a tener tres niveles de soporte y tres niveles de resistencia.

1. El nivel de resistencia 3 se calcula según la siguiente fórmula:



2. El nivel de soporte 3 se calcula según la siguiente fórmula:



De las dos versiones, la más utilizada suele ser la versión 1, si bien depende de si queremos hacer uso de los niveles R3 y S3, en cuyo caso usaríamos la versión 2.

A continuación vamos a plantear una estrategia basada en el cruce de niveles que utiliza el PivotPoint01.

Estrategia Ruptura Niveles S1 y R1
Esta sencilla estrategia se basará en el estudio de los cruces de los distintos niveles del indicador PivotPoint01. Las reglas que sigue la estrategia serían las siguientes:

Cuando el precio cruce al alza el nivel de resistencia R1, tomar posiciones largas.
Cuando el precio cruce a la baja el nivel de resistencia S1, tomar posiciones cortas.

Este sistema sólo va a realizar una operación por sesión, de modo que no va a permitir girar la posición.

Una vez en mercado, el sistema deshace posiciones cuando el precio vuelve a cortar alguno de los otros niveles.

Antes de empezar a operar, el sistema realizará un chequeo para decidir si la sesión es alcista o bajista. Si considera que la sesión es alcista, sólo permitirá tomar posiciones largas. El caso contrario si la sesión es bajista.

La decisión de si la tendencia de la sesión es en un sentido u otro dependerá de la posición del precio al inicio de la sesión con respecto al nivel primario (P).

El diseño del sistema sería el siguiente:

Código PDV


Código VBA

'¡¡ Parameters
Dim Contratos As Long '1
Dim HoraIni As Integer '930
Dim HoraFin As Double '1900
'Parameters !!
Dim pvtdata As DataIdentifier
Option Explicit
Dim signoentrada As Integer
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
    Dim horainipvt As Double
    horainipvt = .GetSymbolInfo(SbiFirstSessionStart)
    pvtdata = .GII(PVTPOINT01, Data, horainipvt, 0)
    signoentrada = 0
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
    Dim r2 As Double
    Dim r1 As Double
    Dim p As Double
    Dim s1 As Double
    Dim s2 As Double
 
    'niveles
    r2 = .GetIndicatorValue(pvtdata)
    r1 = .GetIndicatorValue(pvtdata, 0, 2)
    p = .GetIndicatorValue(pvtdata, 0, 3)
    s1 = .GetIndicatorValue(pvtdata, 0, 4)
    s2 = .GetIndicatorValue(pvtdata, 0, 5)
 
    'Cambio de día
    If (.Date <> .Date(1)) Then
        'Comprobar sentido del día
        If (.Close() > p And .Close() < r1) Then
            signoentrada = 1
        ElseIf (.Close() < p And .Close() > s1) Then
            signoentrada = -1
        Else
            signoentrada = 0
        End If
    End If

    If (.Time >= HoraIni And .Time < HoraFin) Then
        If (.GetMarketPosition = 1) Then
            'salida largos
            If (.Close() > r2 Or .Close() < p) Then
                .ExitLong AtClose, Contratos
            End If
        ElseIf (.GetMarketPosition = -1) Then
            'salida cortos
            If (.Close() < s2 Or .Close() > p) Then
                .ExitShort AtClose, Contratos
            End If
        Else
            'entradas
            If (signoentrada = 1) Then
                If (.Close() > r1) Then
                    .Buy AtClose, Contratos
                    signoentrada = 0
                End If
            ElseIf (signoentrada = -1) Then
                If (.Close() < s1) Then
                    .Sell AtClose, Contratos
                    signoentrada = 0
                End If
            End If
        End If
    Else
        If (.GetMarketPosition = 1) Then
            .ExitLong AtClose, Contratos
        ElseIf (.GetMarketPosition = -1) Then
            .ExitShort AtClose, Contratos
        End If
    End If
End With
End Sub

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

Bollinger Volatility Oscillator N

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