martes, 4 de noviembre de 2008

Indicadores con VBA

La programación de indicadores en VisualChart 5 incluye algunas nuevas funciones para personalizar los colores, tipos de representación... de los indicadores en cada barra. Además, incluye algunas funciones extra que pueden ser útiles para avisar de algún evento concreto.

En este artículo voy a mostrar solo una pequeña parte de las novedades que se incluyen. La imaginación de cada uno puede darles muy diversas utilidades.

He utilizado el indicador Keltner que incluye VisualChart para generar un nuevo indicador Keltner2 similar pero con una visualización distinta. El funcionamiento de este indicador puede consultarse en Internet. Supongamos que, para nuestra operativa, nos interesa remarcar las zonas donde el cierre del valor excede a las bandas superior o inferior.


Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Avg = .GetIndicatorValue(AvSimpleData)
AvgTrRang = .GetIndicatorValue(AvTrueRangeData)
UpperKeltner = Avg + AvgTrRang * Constant
Lowerkeltner = Avg + AvgTrRang * -Constant
.SetIndicatorValue Lowerkeltner
.SetIndicatorValue Avg, 2
.SetIndicatorValue UpperKeltner, 3

.SetBarColor 0, 2, RGB(0, 0, 0)
.SetBarColor 0, 3, RGB(0, 0, 255)

If .GetIndicatorValue(Data) < Lowerkeltner Then
.SetBarWidth 0, 1, 3
.SetBarColor 0, 1, RGB(255, 0, 0)
.SetWndBackgroundColor RGB(255, 150, 150)
ElseIf .GetIndicatorValue(Data) > UpperKeltner Then
.SetBarWidth 0, 3, 3
.SetBarColor 0, 3, RGB(0, 0, 255)
.SetWndBackgroundColor RGB(0, 150, 255)
Else
.SetWndBackgroundColor RGB(255, 255, 255)
End If

End With
End Sub

En color azul se muestra el código que he agregado. En él, compruebo si el cierre del valor excede alguna de las bandas. Si es así, pinto el indicador con mayor grosor en esas barras además de cambiarle el color.

La función SetWndBackGroundColor es muy interesante. Cambia el color de toda la ventana en la que esté el indicador. En el ejemplo anterior, cuando se excede el valor de la banda inferior se pinta toda la ventana del indicador de color rojo pálido mientras que si se excede la banda superior, se hace de azul pálido. En otro caso, se mantiene el color blanco.

Si disponemos de tiempo real, podemos ver como cambia el color de fondo de la ventana del indicador cuando ocurre alguno de los dos casos contemplados. Es algo bastante llamativo por lo que se puede utilizar como una alerta visual que nos indica que debemos, por ejemplo, abrir o cerrar alguna posición.





En el video se puede apreciar, en la primera página, el indicador original; En la segunda, la modificación realizada en una ventana aparte y, para ver mejor las zonas en las que el cierre excede las bandas, el indicador original en la ventana del gráfico. Para quien lo desconozca y le resulte algo novedoso (aunque se trata de algo presente en VisualChart 4), he utilizado el cuadrado de color para cambiar rápidamente de gráfico desde la tabla (simplemente haciendo doble click en la descripción).

Además de lo aquí mencionado, se pueden hacer más cambios visuales en los indicadores desde VBA. Se pueden poner en representación de histograma determinadas barras, dibujar punteadas las partes poco relevantes del indicador... y algunas cosas que no he sabido hacer funcionar (por desconocimiento o por mal funcionamiento de la versión de prueba).

No hay comentarios:

Seguidores