Utilización de varios gráficos en un sistema

En el desarrollo de una estrategia de inversión, puede interesarnos tener en cuenta las señales dadas en distintas compresiones de tiempo para la toma de decisiones.

Por ejemplo, podemos buscar entrar largos con el cruce alcista de los precios sobre una media de 30 en una compresión de 5 minutos y a su vez que lo confirme una segunda media de 30 en una compresión mayor, de 60 minutos.

Esto es posible implementarlo dentro de un sistema VBA: Siempre que pongamos dos gráficos en la misma ventana, el sistema sobre el gráfico de 5 minutos puede leer los datos del gráfico mayor (60 minutos) y por tanto, también puede acceder a cualquier media insertada sobre éste.

A continuación vamos a analizar cómo llevarlo a cabo y a destacar sus particularidades.

Desarrollo de la programación

Para poder trabajar con dos compresiones de tiempo sincronizadas, es necesario configurar el siguiente escenario:

1. Debemos abrir una ventana con el gráfico de menor compresión a usar. Este gráfico será sobre el que operemos.
2. Debemos insertar un segundo gráfico en la misma ventana con la compresión mayor.

El resultado es el siguiente:




Cuando desde el entorno VBA queremos acceder a los datos de dos gráficos, haremos uso de las funciones de siempre de la clase APP, pero sencillamente especificamos que la fuente de datos es Data cuando queremos extraer los datos de la compresión menor o Data2 cuando queremos extraer los datos de la compresión mayor. Ejemplo:



    Dim CierreAct As Double
    Dim CierreAct_60M As Double
    CierreAct = .Close(0, Data) 'último cierre de la compresión de 5m.
    CierreAct_60M = .Close(0, Data2) 'último cierre de la compresión de 60m.

Cuando lo que queremos es trabajar con indicadores insertados en cada una de las compresiones, el proceso es exactamente igual: Es decir, aplicamos las misma funciones pero especificamos sobre qué fuente irá insertado el indicador. Ejemplo:


    Media5MData = .GII(AvSimple, Data, Periodo, PriceClose) 'media sobre el gráfico de 5m
    Media60MData = .GII(AvSimple, Data2, Periodo, PriceClose) 'media sobre el gráfico de 60m



Particularidades del uso de dos compresiones de tiempo

Un aspecto muy importante a la hora de trabajar con dos compresiones en un sistema, es que no debemos de olvidar que los datos de cada barra no se obtienen hasta que no finaliza dicha barra.

Como sabemos, a la hora de operar con sistemas no podemos solicitar la información a la fuente hasta que la barra finaliza. Cuando se trabaja con dos compresiones, puede generarse la confusión de creer que podemos obtener la información virtual de la barra de compresión mayor antes de que su última barra finalice. Esto no sucede, y lo que tenemos es que sencillamente, entre el tiempo entre una barra y la siguiente, los datos de la compresión mayor se van repitiendo por cada barra de la compresión menor.

Veamos esto con un ejemplo:

Barra 60 minutos/Barra 5 minutos de las 9:00 horas. El valor de la media 60 minutos = 134,4

Barra 5 minutos de las 9:05 horas. El valor de la media 60 minutos = 134,4 (el mismo)

Barra 5 minutos de las 9:10 horas. El valor de la media 60 minutos = 134,4 (el mismo)

Barra 5 minutos de las 9:15 horas. El valor de la media 60 minutos = 134,4 (el mismo)

(...)

Barra 5 minutos de las 9:55 horas. El valor de la media 60 minutos = 134,4 (el mismo)

Barra 60 minutos/Barra 5 minutos de las 10:00 horas. El valor de la media 60 minutos = 133,8 (nuevo valor)

Esto es importante tenerlo en cuenta, sobre todo si comparamos los datos de la barra actual con los de la barra previa.

Si accedemos al valor del indicador en la barra anterior del gráfico de 60 minutos:
 
    .GetIndicatorValue(Media60MData,1,1)

Según en la barra en la que estemos, obtendremos efectivamente el valor anterior del indicador, si estamos justo en una barra de 60 minutos (por ejemplo, a las 10:00 horas), o bien el valor actual del indicador, si estamos en mitad de camino entre una barra y otra (por ejemplo, a las 9:45).

Comentarios

  1. Hola,

    Me interesaría poder hacer lo siguiente, tener el sistema corriento en ticks, es decir a cada tick me haga los calculos. Pero en el sistema, quiero tener los gráficos a diferente minutajes con sus indicadores correspondientes para tener dicha información en cuenta para las ordenes.

    Respecto a otro articulo, me ha gustado mucho el Acumular posiciones en un sistema. No sabía que se pueden abrir diferentes posiciones sín que tengas que cerrar las demás sin son opuestas. Me refiero que puedes tener operaciones a la baja y alta.

    No se si podeis poner ejemplos de entradas limitas o stops de ganancia y de perdida.

    Saludos,

    ResponderEliminar
  2. Cuando trabajamos sobre gráficos de tics, no podemos aplicar la técnica de usar varias compresiones, por la sencilla razón de que ambos gráficos no se moverían a la misma velocidad, puesto que los gráficos de tics se mueven cada vez que se acumulan x tics mientras que los gráficos temporales se mueven cuando se cumple el tiempo especificado. Por tanto, esta opción sólo es válida con gráficos con distintas compresiones de tiempo, pero no de tics.
    Respecto a la opción de acumular posiciones, siento decirle que algo no hemos explicado bien, puesto que no se nos da la posibilidad de estar colocados en distinto sentido a la vez, salvo, claro está, que insertáramos el sistema dos veces sobre el gráfico y cada sistema siguiera una estrategia distinta.
    Por último, puede ver un ejemplo del uso de stops de ganancia y pérdida en la entrada llamada “Estructura básica de un sistema” (http://blog.visualchart.com/2011/11/estructura-basica-de-un-sistema-en-vba.html#comment-form)

    ResponderEliminar

Publicar un comentario

¡Gracias!

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

Bollinger Volatility Oscillator N

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