CopyTicksRange

Obtiene los ticks de la estructura MqlTick en una matriz o vector en el intervalo de fechas indicado.El conteo de elementos desde la posición de inicio se realiza del pasado hacia el presente, es decir, el tick con el índice 0 será el más antiguo. Para analizar el tick deberemos comprobar el campo flags, que indica exactamente qué ha cambiado en el tick en cuestión.

bool  matrix::CopyTicksRange(
   string           symbol,                // nombre del símbolo
   ulong            flags,                 // bandera que determina el tipo de ticks obtenidos
   ulong            from_msc,              // hora desde la que se solicitan los ticks
   ulong            to_msc                 // hora hasta la que se solicitan los ticks
   );

Método del vector

bool  vector::CopyTicksRange(
   string           symbol,                // nombre del símbolo
   ulong            flags,                 // bandera que determina el tipo de ticks obtenidos
   ulong            from_msc,              // hora desde la que se solicitan los ticks
   ulong            to_msc                 // hora hasta la que se solicitan los ticks
   );

Parámetros

symbol

[in]  Símbolo.

flags

[in]  Combinación de banderas de la enumeración ENUM_COPY_TICKS que indican la composición de los datos solicitados. Al copiar a un vector, podemos indicar solo un valor de la enumeración ENUM_COPY_TICKS, de lo contrario, ocurrirá un error.

from_msc

[in]  Hora a partir de la cual se solicitan los ticks. Se especifica en milisegundos a partir del 01.01.1970. Si el parámetro from_msc no ha sido indicado, se proporcionarán los ticks desde el inicio de la historia. Se proporcionarán los ticks con la hora >= from_msc.

to_msc

[in]  Hora hasta la que se solicitan los ticks. Se especifica en milisegundos a partir del 01.01.1970. Los ticks se retornan con la hora <= to_msc. Si no se especifica el parámetro to_msc, se retornarán todos los ticks hasta el final de la historia.

Valor retornado

Retorna true en caso de éxito, de lo contrario, retornará false en caso de error. GetLastError() puede retornar los siguientes errores:

  • ERR_HISTORY_TIMEOUT - el tiempo de espera para sincronizar los ticks ha expirado, la función ha ofrecido todo lo que tenía.
  • ERR_HISTORY_SMALL_BUFFER - el búfer estático es demasiado pequeño, se ha ofrecido todo lo que se puede colocar en la matriz.
  • ERR_NOT_ENOUGH_MEMORY - no hay suficiente memoria para obtener en la matriz dinámica de ticks la historia del rango especificado. No se ha podido asignar la cantidad de memoria necesaria a la matriz de ticks.

 

Para saber exactamente qué datos han cambiado con el tick actual, analizaremos sus banderas:

  • TICK_FLAG_BID — el tick ha cambiado el precio Bid
  • TICK_FLAG_ASK  — el tick ha cambiado el precio Ask
  • TICK_FLAG_LAST — el tick ha cambiado el precio de la última transacción
  • TICK_FLAG_VOLUME — el tick ha cambiado el volumen
  • TICK_FLAG_BUY — el tick ha aparecido como resultado de una transacción de compra
  • TICK_FLAG_SELL — el tick ha aparecido como resultado de una transacción de venta

Observación

El método CopyTicksRange() está pensado para solicitar los ticks de un rango estrictamente especificado, por ejemplo de un día concreto de la historia. A su vez, CopyTicks() permite especificar solo la fecha de inicio, por ejemplo, obtener todos los ticks desde principios de mes hasta el momento actual.

Ver también

Acceso a las series temporales e indicadores, CopyTicksRange