Estudio de hora y fecha en VBA

Cuando trabajamos con el entorno VBA, ya sea tanto en el desarrollo de sistemas como en el de indicadores o estudios, uno de los datos que cobran más relevancia es la fecha y hora de cada barra que nos vamos recorriendo.

Esta información es de suma importancia para muchos detalles: Ejemplos:
       1. Para decidir cuando debemos cerrar las posiciones abiertas en caso de operar en intradía.
       2. Para despreciar días concretos de la semana en los que no queramos trabajar.
       3. Establecer franjas horarias dentro de la misma sesión.
       4. Controlar la primera barra de cada sesión.
Etcétera.

Tanto en sistemas como en indicadores, existen tres funciones que nos aportan estos datos:

       1. TIMEEX (sólo para Visual Chart 5)
       2. TIME
       3. DATE

Si usamos la versión 5 de Visual Chart, disponemos de la función 

APP.TIMEEX (BarsAgo as Long, Identifier as DataIdentifier)

Esta función devuelve la fecha/hora de cada barra con el formato: dd/mm/yyyy hh:mm:ss 


El campo BarsAgo nos indica sobre qué barra estamos obteniendo el dato, y el campo Identifier nos especifica sobre qué data (en caso de que dispongamos de varios gráficos dentro de la misma ventana, podemos elegir extraer la información relativa a uno u otro dato)

Tanto si usamos la versión 4 como si usamos la versión 5, disponemos de dos funciones:

APP.TIME (BarsAgo as Long, Identifier as DataIdentifier)
APP.DATE (BarsAgo as Long, Identifier as DataIdentifier)  

Estas dos funciones están en formato militar, es decir, que no están en el formato “natural” de fechas.

Por ejemplo, la barra de las 16:00 horas del día 19 de Diciembre de 2011 será:

TIME = 1600
DATE = 200111219

Si quisiéramos directamente extraer la fecha y hora con el formato estándar de fecha, podemos hacer uso en nuestro código de métodos suplementarios que nos aporten esta información.

Para extraer la hora en formato horario “hh:mm”

'Pasa de Formato LONG A FORMATO STRING LAS HORAS
Public Function FormatoHora(HoraAux As Long) As String
Dim Horas&, Minutos&, CharMin$
    Minutos = HoraAux Mod 100
    CharMin = Trim(CStr(Minutos))
    If Len(CharMin) = 1 Then CharMin = "0" & CharMin
    Horas = Int(HoraAux / 100)
    FormatoHora = CStr(Horas) & ":" & CharMin
End Function

Para extraer la fecha en formato fecha “dd/mm/yyyy”

'Pasa de Formato LONG A FORMATO STRING UNA FECHA
Public Function LongTOString(EntryDate As Long) As String
   LongTOString = Right(EntryDate, 2) & "-" & Mid(EntryDate, 5, 2) & "-" & Left(EntryDate, 4)
End Function

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

Bollinger Volatility Oscillator N

Estudio de las divergencias en el RSI