Detectar el primer día del mes

En un artículo anterior de nuestro blog, hablamos de cómo podemos trabajar con la fecha y hora de las barras del histórico a la hora de desarrollar sistemas. Pueden encontrar la información relativa a dicho artículo pulsando aquí.

A continuación, vamos a ampliar esta información a través del uso de un método con el cual podamos extraer, de forma separada, los distintos campos de fecha: día, mes o año.

Extraer los campos de la fecha

Como en su momento explicamos, la función .TIMEEX (sólo para Visual Chart 5) nos devuelve la fecha de cada barra siguiendo el formato dd/mm/yyyy hh:mm:ss.

Pero: ¿Cómo podemos hacer para estudiar por separado, por ejemplo, el mes de cada barra?

La solución la encontramos utilizando la función Datepart perteneciente a las librerías de Visual Basic.

DatePart es una función que devuelve el valor (numérico) del componente especificado de un valor de fecha dado. Su declaración sería del siguiente modo:

X = DATEPART(Interval As String, DateValue As DateTime)

El componente especificado es lo que vamos a usar para poder elegir entre extraer el mes, el año, el día, etc... Para más información acerca de este método pueden consultar la página oficial de Microsoft.



Ejemplo detectar primer día del mes

Supongamos que necesitamos localizar el primer día de cada mes, ¿Cómo detectaríamos esta barra?
Para encontrar la solución, pasaríamos primero por extraer de cada barra el valor de mes del siguiente modo:

MesBar = DatePart("m", .TimeEx)


Hay que recordar que en MesBar guardamos un valor númerico de 1 a 12.

Siguiendo con el ejemplo, como lo que queremos es detectar cuando se produce el cambio de mes, haríamos lo siguiente:

Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Dim MesBar As Integer: Dim MesBarAnt As Integer
    MesBar = DatePart("m", .TimeEx)
    MesBarAnt = DatePart("m", .TimeEx(1))
    If MesBar <> MesBarAnt Then
        'es cambio de mes
    End If


Es decir, comparamos el mes de la barra actual con el mes de la barra anterior y buscamos la barra que cambie.

Detectar cambio de mes usando la Plataforma Visual

Si nuestro sistema está desarrollado en PDV, tenemos el inconveniente de que el acceso a la función TIMEEX no es tan directa como cuando trabajamos sobre Visual Basic.

Para facilitar el acceso a esta información, lo más sencillo es diseñar un indicador que nos extraiga directamente el dato y luego usar dicho indicador desde nuestro sistema. Así nos ahorraremos tener que añadir las funciones asociadas al tiempo.

En el siguiente enlace, podrán encontrar un indicador que devuelve el valor numérico del mes de cada barra. Pueden descargar el archivo pulsando sobre dicho enlace:

Indicador Cambio de Mes

Si seguimos con el ejemplo, lo que haríamos en este caso sería añadir el indicador a nuestro sistema:


Y luego acceder a su información para poder detectar el cambio de mes:



Hemos estado usando como ejemplo el cambio de mes, pero podemos usar la función DatePart para detectar el año, el día, o los campos horarios.

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