II Curso de Programación. Sistema Tema 1.
A petición de nuestros usuarios, iremos subiendo a nuestro blog los códigos de programación de los sistemas de ejemplo que se van a ir desarrollando a lo largo de nuestro 2º Curso de Programación para Visual Chart 5.
A través de estos artículos, explicaremos las reglas de cada uno de los sistemas y mostraremos el diseño. Vamos a incluir tanto el desarrollo de estos sistemas en VBA como a través de la Plataforma Visual (PDV).
Sistema Tema 1: Cruces con una media simple
Éste primer sistema de iniciación se basaba en el cruce de los precios con respecto a una media móvil simple. Las reglas base del sistema eran las siguientes:
1. Comprar cuando el precio esté por encima de una media simple.
2. Entrar cortos cuando el precio esté por debajo de dicha media.
Además, incluimos la opción de poder elegir entre utilizar una media simple o bien utilizar una media exponencial.
Por último, incluimos dos condiciones más a las reglas base del sistema:
Código PDV
A través de estos artículos, explicaremos las reglas de cada uno de los sistemas y mostraremos el diseño. Vamos a incluir tanto el desarrollo de estos sistemas en VBA como a través de la Plataforma Visual (PDV).
Sistema Tema 1: Cruces con una media simple
Éste primer sistema de iniciación se basaba en el cruce de los precios con respecto a una media móvil simple. Las reglas base del sistema eran las siguientes:
1. Comprar cuando el precio esté por encima de una media simple.
2. Entrar cortos cuando el precio esté por debajo de dicha media.
Además, incluimos la opción de poder elegir entre utilizar una media simple o bien utilizar una media exponencial.
Por último, incluimos dos condiciones más a las reglas base del sistema:
1. Incluir un horario de operativa, de modo que no hubiera posiciones abiertas fuera del intervalo horario.
2. Incluir una regla de salida en base a una segunda media más corta. De modo que al cruzar dicha media el sistema cerrase a mercado.
Código PDV
Código VBA
'¡¡ Parameters
Dim HoraInicio As Integer '900
Dim HoraFin As Integer '2200
Dim NumeroContratos As Long '1
Dim PeriodoMedia As Integer '30
Dim PrecioMedia As Price 'PriceClose
Dim TipoMedia As Integer '0
Dim PeriodoCorta As Integer '10
'Parameters !!
Dim MediaData As DataIdentifier
Dim MediaCortaData As DataIdentifier
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
If TipoMedia = 0 Then
MediaData = .GetIndicatorIdentifier(AvSimple, Data, PeriodoMedia, PrecioMedia)
Else
MediaData = .GetIndicatorIdentifier(AvExponential, Data, PeriodoMedia, PrecioMedia)
End If
MediaCortaData = .GetIndicatorIdentifier(AvSimple, Data, PeriodoCorta, PrecioMedia)
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
If (.Time() >= HoraInicio And .Time() < HoraFin) Then
'<reglas de entrada y salida>
If (.GetMarketPosition() = 1) Then
If (.Close() < .GetIndicatorValue(MediaCortaData)) Then
.ExitLong AtClose, NumeroContratos
End If
End If
If (.GetMarketPosition() = -1) Then
If (.Close() > .GetIndicatorValue(MediaCortaData)) Then
.ExitShort AtClose, NumeroContratos
End If
End If
If (.Close() > .GetIndicatorValue(MediaData) And .Close(1) <= .GetIndicatorValue(MediaData, 1)) Then
If (.Close() > .GetIndicatorValue(MediaCortaData)) Then
.Buy AtClose, NumeroContratos
End If
ElseIf (.Close() < .GetIndicatorValue(MediaData) And .Close(1) >= .GetIndicatorValue(MediaData, 1)) Then
If (.Close() < .GetIndicatorValue(MediaCortaData)) Then
.Sell AtClose, NumeroContratos
End If
End If
Else
If (.GetMarketPosition() = 1) Then
.ExitLong AtClose, NumeroContratos
ElseIf (.GetMarketPosition() = -1) Then
.ExitShort AtClose, NumeroContratos
End If
End If
End With
End Sub
Comentarios
Publicar un comentario