Obtención de características de arrays de precios

Antes de leer arrays de series temporales debemos asegurarnos de que están disponibles y de que poseen las características requeridas. La función SeriesInfoInteger recupera las propiedades básicas, como la profundidad del historial disponible en el terminal y en el servidor, el número de barras construidas para una combinación específica de símbolo/período, y la ausencia de discrepancias en las cotizaciones entre el terminal y el servidor.

La función tiene dos formas: la primera devuelve directamente el valor solicitado (de tipo long) y la segunda utiliza el cuarto parámetro result pasado por referencia. En este caso, el segundo formulario devuelve una señal de éxito (true) o de errores (false). En cualquier caso, el código de error puede encontrarse utilizando la función GetLastError.

long SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property)

bool SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property, long &result)

La función permite averiguar una de las propiedades de la serie temporal para el símbolo y el marco temporal especificados o para todo el historial del símbolo. La propiedad solicitada se identifica mediante el tercer argumento de tipo ENUM_SERIES_INFO_INTEGER. Esta enumeración incluye todas las propiedades disponibles:

Identificador

Descripción

Tipo de propiedad

SERIES_BARS_COUNT

Número de barras por símbolo/período, véase Bars

long

SERIES_FIRSTDATE

Primera cita por símbolo/período

datetime

SERIES_LASTBAR_DATE

Hora de apertura de la última barra por símbolo/período

datetime

SERIES_SYNCHRONIZED

Signo de sincronización de datos por símbolo/período en el terminal y en el servidor

bool

SERIES_SERVER_FIRSTDATE

Primera fecha de la historia por símbolo en el servidor independientemente del periodo

datetime

SERIES_TERMINAL_FIRSTDATE

Primera fecha del historial por símbolo en el terminal de cliente independientemente del periodo

datetime

Dependiendo de la esencia de la propiedad, el valor resultante debe convertirse en un valor de un tipo específico (véase la columna Property type).

Todas las propiedades se devuelven en el momento actual.

El script SeriesInfo.mq5 proporciona un ejemplo de consulta de todas las propiedades.

void OnStart()
{
   PRTF(SeriesInfoInteger(NULL0SERIES_BARS_COUNT));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_FIRSTDATE));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_LASTBAR_DATE));
   PRTF((bool)SeriesInfoInteger(NULL0SERIES_SYNCHRONIZED));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_SERVER_FIRSTDATE));
   PRTF((datetime)SeriesInfoInteger(NULL0SERIES_TERMINAL_FIRSTDATE));
   PRTF(SeriesInfoInteger("ABRACADABRA"0SERIES_BARS_COUNT));
}

He aquí un ejemplo del resultado obtenido en EURUSD, H1, en el servidor MQ Demo:

SeriesInfoInteger(NULL,0,SERIES_BARS_COUNT)=10001 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_FIRSTDATE)=2020.03.02 10:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_LASTBAR_DATE)=2021.10.08 14:00:00 / ok
(bool)SeriesInfoInteger(NULL,0,SERIES_SYNCHRONIZED)=false / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_SERVER_FIRSTDATE)=1971.01.04 00:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_TERMINAL_FIRSTDATE)=2016.06.01 00:00:00 / ok
SeriesInfoInteger(ABRACADABRA,0,SERIES_BARS_COUNT)=0 / MARKET_UNKNOWN_SYMBOL(4301)