II Curso de Programación. Sistema Ejercicio 15.
Siguiendo con el artículo de la semana pasada, procedemos a través de éste artículo a publicar la resolución del sistema propuesto durante el ejercicio 15 de nuestro 2º Curso de Programación para Visual Chart 5.
Sistema Ejercicio 15: Sistema con Estocástico y Media Exponencial
El sistema tomaba como referencia para entrar los cruces de las líneas del estocástico (línea Sk y línea Sd). Posteriormente, utilizaba a la media como filtro de señal.
Opera a Corto si:
Reglas de salida
El desarrollo del sistema sería el siguiente:
Código VBA
(NOTA: Recuerden que el código aquí expuesto sólo incluye los métodos OnCalculateBar() y OnInitCalculate(). Tengan esto en cuenta a la hora de copiar el sistema).
Sistema Ejercicio 15: Sistema con Estocástico y Media Exponencial
La finalidad de éste ejercicio era la de poder repasar el uso combinado de varias herramientas. En concreto, del oscilador estocástico y de la media móvil exponencial.
El sistema tomaba como referencia para entrar los cruces de las líneas del estocástico (línea Sk y línea Sd). Posteriormente, utilizaba a la media como filtro de señal.
Reglas de entrada.
Opera a Largo si:
1. Cruce alcista. Línea Sk del estocástico (línea 1) mayor que Línea Sd del estocástico (línea 2).
2. Tendencia alcista. Cierres por encima de la Media exponencial.
Opera a Corto si:
1. Cruce bajista. Línea Sk del estocástico (línea 1) menor que Línea Sd del estocástico (línea 2).
2. Tendencia bajista. Cierres por debajo de la Media exponencial.
Reglas de salida
El sistema deshace posición si se produce un cruce del estocástico y la media exponencial no confirma la señal.
El desarrollo del sistema sería el siguiente:
(NOTA: Recuerden que el código aquí expuesto sólo incluye los métodos OnCalculateBar() y OnInitCalculate(). Tengan esto en cuenta a la hora de copiar el sistema).
'¡¡ Parameters
Dim Contratos As Long '1
Dim PeriodoMedia As Integer '30
Dim PeriodoSTOC As Integer '14
Dim PeriodoSk As Integer '3
Dim PeriodoSd As Integer '3
Dim MediaSTOC As Integer '1
'Parameters !!
Dim avdata As DataIdentifier
Dim stocdata As DataIdentifier
Option Explicit
Public APP As SysUserApp
Implements System
Public Sub System_OnInitCalculate()
With APP
avdata = .GetIndicatorIdentifier(AvExponential, Data, PeriodoMedia, PriceClose)
stocdata = .GetIndicatorIdentifier(Stochastic, Data, PeriodoSTOC, PeriodoSk, PeriodoSd, MediaSTOC, 80, 20)
End With
End Sub
Public Sub System_OnCalculateBar(ByVal Bar As Long)
With APP
Dim medact As Double
Dim skact As Double
Dim sdact As Double
Dim pos_abierta As Integer
medact = .GetIndicatorValue(avdata)
skact = .GetIndicatorValue(stocdata)
sdact = .GetIndicatorValue(stocdata, 0, 2)
pos_abierta = .GetMarketPosition()
'tendencia positiva
If (.Close() > medact) ThenIf (pos_abierta <> 1 And skact > sdact) Then.Buy AtClose, ContratosElseIf (pos_abierta = 1 And skact < sdact) Then.ExitLong AtClose, ContratosEnd If'tendencia negativa
ElseIf (.Close() < medact) ThenIf (pos_abierta <> -1 And skact < sdact) Then.Sell AtClose, ContratosElseIf (pos_abierta = -1 And skact > sdact) Then.ExitShort AtClose, ContratosEnd IfEnd IfEnd With
End Sub
Comentarios
Publicar un comentario