II Curso de Programación. Sistemas Temas 2 y 3.
Continuamos con la publicación de los sistemas de ejemplo que estamos elaborando a través de nuestro 2º Curso de Programación para Visual Chart 5.
Sistema Tema 2: Ruptura niveles de soporte y resistencia
Con éste sistema tratamos de explicar cómo desarrollar sistemas con órdenes de entrada en stop. Para ello, nos basamos en el uso de dos funciones que nos facilitan el precio de los últimos niveles de soporte y resistencia en base a una distancia determinada: Estas funciones son GetHighest y GetLowest.
Las reglas del sistema eran las siguientes:
1. Comprar al tocar un nivel de resistencia.
2. Vender al tocar un nivel de soporte.
Además, incluimos la condición de que fuera un sistema intradia (sólo operativo durante un intervalo horario).
Por último, incluimos la opción de que la distancia para calcular los niveles de resistencia y soporte fueran independientes:
El desarrollo de éste sistema sería el siguiente:
Código PDV
Código VBA
Sistema Tema 3: Ruptura inversa niveles de soporte y resistencia (antitendencia).
El siguiente sistema que diseñamos era exactamente igual que el visto anteriormente, con la salvedad de que en esta ocasión se trata de un sistema antitendencial, ya que opera en sentido opuesto a la dirección del precio.
Las reglas eran las siguientes:
1. Vender al tocar un nivel de resistencia.
2. Comprar al tocar un nivel de soporte.
En este caso, veíamos un ejemplo de sistema en el que se utilizaban órdenes de entrada limitadas.
Además, incluimos en el sistema un control de pérdidas, puesto que al ser un sistema con mucho riesgo, es necesario controlar las posibles señales falsas.
La regla de salida era la siguiente:
1. Si estamos abiertos, esperamos X barras.
2. Pasadas X barras:
- Si es compra entonces Cerrar si Cierre < Precio Entrada.
- Si es venta entonces Cerrar si Cierre > Precio Entrada.
El desarrollo de éste sistema sería el siguiente:
Código PDV
Código VBA
Sistema Tema 2: Ruptura niveles de soporte y resistencia
Con éste sistema tratamos de explicar cómo desarrollar sistemas con órdenes de entrada en stop. Para ello, nos basamos en el uso de dos funciones que nos facilitan el precio de los últimos niveles de soporte y resistencia en base a una distancia determinada: Estas funciones son GetHighest y GetLowest.
Las reglas del sistema eran las siguientes:
1. Comprar al tocar un nivel de resistencia.
2. Vender al tocar un nivel de soporte.
Además, incluimos la condición de que fuera un sistema intradia (sólo operativo durante un intervalo horario).
Por último, incluimos la opción de que la distancia para calcular los niveles de resistencia y soporte fueran independientes:
1. El cálculo de los niveles de resistencia iría en base a las últimas T barras (T = 20).
2. El cálculo de los niveles de soporte iría en base a las últimas P barras (P = 50).
El desarrollo de éste sistema sería el siguiente:
Código PDV
Código VBA
'¡¡ Parameters
Dim HoraInicio As Integer '900
Dim HoraFin As Integer '1930
Dim T As Integer '20
Dim P As Integer '50
'Parameters !!
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
If (.Time() >= HoraInicio And .Time() < HoraFin) Then
Dim myprice As Double
myprice = .GetHighest(Data, PriceHigh, T)
If (.Close() < myprice) Then
If (.GetMarketPosition() <> 1) Then
.Buy AtStop, 1, myprice
End If
End If
myprice = .GetLowest(Data, PriceLow, P)
If (.Close() > myprice) Then
If (.GetMarketPosition() <> -1) Then
.Sell AtStop, 1, myprice
End If
End If
Else
If (.GetMarketPosition() = 1) Then
.ExitLong AtClose, 1
Else
.ExitShort AtClose, 1
End If
End If
End With
End Sub
Sistema Tema 3: Ruptura inversa niveles de soporte y resistencia (antitendencia).
El siguiente sistema que diseñamos era exactamente igual que el visto anteriormente, con la salvedad de que en esta ocasión se trata de un sistema antitendencial, ya que opera en sentido opuesto a la dirección del precio.
Las reglas eran las siguientes:
1. Vender al tocar un nivel de resistencia.
2. Comprar al tocar un nivel de soporte.
En este caso, veíamos un ejemplo de sistema en el que se utilizaban órdenes de entrada limitadas.
Además, incluimos en el sistema un control de pérdidas, puesto que al ser un sistema con mucho riesgo, es necesario controlar las posibles señales falsas.
La regla de salida era la siguiente:
1. Si estamos abiertos, esperamos X barras.
2. Pasadas X barras:
- Si es compra entonces Cerrar si Cierre < Precio Entrada.
- Si es venta entonces Cerrar si Cierre > Precio Entrada.
Código PDV
Código VBA
'¡¡ Parameters
Dim NBarras As Integer '5
Dim NBEspera As Integer '10
'Parameters !!
Dim esperacompra As Boolean
Dim esperaventa As Boolean
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
esperacompra = False
esperaventa = False
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
Dim myprice As Double
If (.GetMarketPosition() = 1) Then
esperacompra = False
If (.GetBarsSinceEntry() > NBEspera) Then
If (.Close() < .GetEntryPrice()) Then
.ExitLong AtClose, 1
esperaventa = True
End If
End If
End If
If (.GetMarketPosition() = -1) Then
esperaventa = False
If (.GetBarsSinceEntry() > NBEspera) Then
If (.Close() > .GetEntryPrice()) Then
.ExitShort AtClose, 1
esperacompra = True
End If
End If
End If
myprice = .GetLowest(Data, PriceLow, NBarras)
If (.Close() > myprice And Not esperaventa) Then
If (.GetMarketPosition() <> 1) Then
.Buy AtLimit, 1, myprice
End If
End If
myprice = .GetHighest(Data, PriceHigh, NBarras)
If (.Close() < myprice And Not esperacompra) Then
If (.GetMarketPosition() <> -1) Then
.Sell AtLimit, 1, myprice
End If
End If
End With
End Sub
Comentarios
Publicar un comentario