Sistemas con Spreads (II)

Hace unas semanas hablamos de la posibilidad de trabajar con indicadores del tipo spread desde sistemas y vimos cómo había que configurar nuestro espacio de trabajo para poder ponerlos en práctica.

En dicho artículo, comentamos que en ciertas ocasiones nos puede interesar operar en la misma dirección en ambos subyacentes. Veamos a continuación cómo poder llevar a cabo este proceso.

Ejemplo práctico

En el ejemplo que pusimos, teníamos los futuros de BBVA y Telefónica, a los que les habíamos aplicado el SpreadOscillatorVBA.

En la ventana secundaria operábamos sobre el futuro de Telefónica, de modo que se generaban las operaciones inversas.

Pues bien, si quisiéramos lanzar la misma orden que enviamos sobre el futuro de BBVA, procederíamos en función de los siguientes pasos:

Paso 1
Modificamos el sistema añadiendo un parámetro de entrada al que llamamos EsInverso.

'¡¡ Summary
' Classification: User
'Summary !!
'¡¡ Parameters
Dim Contratos As Integer '1
Dim EsInverso As Integer '0
'Parameters !!
Dim PctSpreadData As DataIdentifier
Dim BollData As DataIdentifier

EsInverso servirá para informar al sistema acerca de la ventana sobre la que está aplicado: Cuando está aplicado a la ventana principal, especificaremos para este parámetro el valor cero. Cuando está aplicado a la ventana secundaria, cambiaremos el valor a uno.

Paso 2
Dentro de las reglas del sistema, haríamos la siguiente modificación:

PCTSP = .GIV(PctSpreadData): PCTSP2 = .GIV(PctSpreadData, 1, 1)
BOLLMED = .GIV(BollData)
BOLLSUP = .GIV(BollData, 0, 2): BOLLSUP2 = .GIV(BollData, 1, 2)
BOLLINF = .GIV(BollData, 0, 3): BOLLINF2 = .GIV(BollData, 1, 3)
If PCTSP > BOLLMED Then
    If EsInverso = 0 Then
        If .GetMarketPosition = 1 Then .ExitLong AtClose, Contratos
    Else
        If .GetMarketPosition = -1 Then .ExitShort AtClose, Contratos
    End If
ElseIf PCTSP < BOLLMED Then
    If EsInverso = 0 Then
        If .GetMarketPosition = -1 Then .ExitShort AtClose, Contratos
    Else
        If .GetMarketPosition = 1 Then .ExitLong AtClose, Contratos
    End If
End If
If PCTSP > BOLLSUP And PCTSP2 > BOLLSUP2 Then
    If EsInverso = 0 Then
        If .GetMarketPosition <> -1 Then .Sell AtClose, Contratos
    Else
        If .GetMarketPosition <> 1 Then .Buy AtClose, Contratos
    End If
ElseIf PCTSP < BOLLINF And PCTSP2 < BOLLINF2 Then
    If EsInverso = 0 Then
        If .GetMarketPosition <> 1 Then .Buy AtClose, Contratos
    Else
        If .GetMarketPosition <> -1 Then .Sell AtClose, Contratos
    End If
End If

Este método le permite al sistema ejecutar la orden correcta en función del subyacente sobre el que esté operando.



Paso 3
Aplicar el sistema en cada una de las ventanas cambiando el valor del parámetro EsInverso.


Gracias al cambio que hemos realizado, ahora, cada vez que aparece una nueva señal, el sistema ejecuta la orden con el mismo signo en ambos subyacentes.

Comentarios

Entradas populares de este blog

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

Indicador Cuidatar

El indicador Volume Distribution