Indicador con múltiples medias

Esta semana, en el apartado de estrategias con Visual Chart, ponemos a disposición de nuestros usuarios una herramienta que, pese a su sencillez, puede resultar de gran utilidad.


Uno de los indicadores más utilizados por la gran mayoría de los usuarios durante el desarrollo del análisis técnico, son las medias móviles. En su simplicidad radica su potencial, ya que ofrecen una visión general del movimiento de los precios. Además, tienen distintas finalidades: Podemos usar las medias para marcar la tendencia, para buscar señales de entrada o de salida, para comparar la dirección de los precios a largo plazo y a corto plazo, etc...


La capacidad de las medias para indicar el sentimiento de los precios en distintos periodos de tiempo es lo que hace muy útil la inserción de varias medias sobre el mismo gráfico. De este modo, comparándolas entre ellas, observamos si se producen divergencias entre los movimientos cortoplacistas y los movimientos a largo plazo o lentos.


La herramienta que presentamos aquí tiene como finalidad el facilitar a los usuarios la inserción de varias medias sobre el mismo gráfico. Podemos descargar el indicador desde aquí:


Multi_Medias


Este indicador consisten sencillamente en un conjunto de medias, con un número máximo de cinco medias móviles, cada una de ellas con distinto periodo de tiempo. La intención de éste indicador es la de agilizar la preparación del escenario técnico, de manera que de una sola vez podamos tener insertadas todas las medias que vayamos a usar.



Cómo utilizar el indicador MultiMedias


Como hemos dicho, el indicador Multi_Medias tiene un total de cinco medias móviles que podemos configurar según si nos interesa mostrar más o menos cantidad de medias.


Para preparar la configuración, contamos con los siguientes parámetros:


TipoMedia
Este parámetro nos permite elegir qué tipo de media queremos usar, ya que algunos usuarios prefieren usar medias móviles, otros usuarios usar medias simples u otro tipo de cálculo distinto de medias.
En total podemos elegir los siguientes tipos de medias:
Si queremos usar la Media Móvil Simple pondremos TipoMedia = 0
Si queremos usar la Media Móvil Exponencial pondremos TipoMedia = 1
Si queremos usar la Media Móvil Aplanada pondremos TipoMedia = 2
Si queremos usar la Media Móvil Triangular pondremos TipoMedia = 3
Si queremos usar la Media Móvil de Wilder pondremos TipoMedia = 4
Si queremos usar la Media Móvil Ponderada pondremos TipoMedia = 5


ActivadaN
Como hemos dicho, podemos elegir entre mostrar más o menos cantidad de medias. Si queremos mostrar la n-media, entonces debemos poner ActivadaN = 1. En otro caso, dejaremos el parámetros a 0.


PeriodoN
Si vamos a usar la n-media, en este parámetro establecemos qué periodo va a tener la media.






Acerca de la programación del indicador


La programación de este indicador es bien sencilla. Su desarrollo consta de tres partes:


1. Definición de la clase de media.
Dependiendo del tipo de media que el usuario elija, asignaremos un tipo de media u otra. Para ello, usaremos la función DameMedia que devolverá el DataIdentifier que apunte al tipo de media:


Private Function DameMedia(Tipo As Integer, Periodo As Integer) As DataIdentifier
With APP
    Select Case Tipo
        Case 0: DameMedia = .GII(AvSimple, Data, Periodo, PriceClose)
        Case 1: DameMedia = .GII(AvExponential, Data, Periodo, PriceClose)
        Case 2: DameMedia = .GII(AvFlat, Data, Periodo, PriceClose)
        Case 3: DameMedia = .GII(AvTriangular, Data, Periodo, PriceClose)
        Case 4: DameMedia = .GII(AvWilder, Data, Periodo, PriceClose)
        Case 5: DameMedia = .GII(AvWeighted, Data, Periodo, PriceClose)
    End Select
End With
End Function


2. Inicialización de las variables
Una vez que contamos con la función DameMedia, creamos un array donde guardaremos las medias a usar. Luego, al inicializar las variables, asignamos a cada elemento del array una de las medias creadas llamando a la función con cada uno de los periodos que estén activados:


    ReDim Periodos(5)
    If Activada1 <> 0 Then NMed = 1: Periodos(NMed) = Periodo1
    If Activada2 <> 0 Then NMed = NMed + 1: Periodos(NMed) = Periodo2
    If Activada3 <> 0 Then NMed = NMed + 1: Periodos(NMed) = Periodo3
    If Activada4 <> 0 Then NMed = NMed + 1: Periodos(NMed) = Periodo4
    If Activada5 <> 0 Then NMed = NMed + 1: Periodos(NMed) = Periodo5

    ReDim MedDatas(NMed)
    For i = 1 To NMed
        MedDatas(i) = DameMedia(TipoMedia, Periodos(i))
    Next i


3. Visualización de datos
Lo último que hacemos es mostrar los datos de aquellas medias que hayamos cargado recorriéndonos el array de medias:


Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
    Dim i As Integer
    Dim ValMed As Double
 
    For i = 1 To NMed
        ValMed = .GIV(MedDatas(i))
        If ValMed <> NullValue Then
            .SetIndicatorValue ValMed, i
            .SetLineName i, "Media_" & Periodos(i)
            .SetBarWidth 0, i, i
        End If
    Next i
End With
End Sub


La función SetLineName la usamos para indicar el nombre de cada media según su periodo. Y la función SetBarWidth la usamos para establecer distintos grosores para cada media, de manera que sea más fácil identificarlas.

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

MANEJO DE PLANTILLAS. Eliminar plantilla de un gráfico activa

Estudio de las divergencias en el RSI