Copiar el historial de ticks en matrices o vectores

Como en el caso de las barras, puede copiar los ticks en un vector o matriz. Esto se consigue mediante las sobrecargas de los métodos CopyTicks y CopyTicksRange, que funcionan sobre una base similar a las funciones CopyTicks y CopyTicksRange pero reciben datos en el llamador. Estas funciones se describirán en detalle en la Parte 5, en la sección sobre arrays de ticks reales en estructuras MqlTick. Aquí sólo mostraremos los prototipos y mencionaremos los puntos principales.

bool matrix<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)

bool vector<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)

bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)

bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)

El parámetro symbol establece el nombre del instrumento financiero para el que se solicitan los ticks. El intervalo de ticks puede especificarse de distintas maneras:

  • En CopyTicks, puede especificarse como un número de ticks (el parámetro count), a partir de algún momento (from_msc), en milisegundos.
  • En CopyTicksRange, puede ser un intervalo de dos puntos en el tiempo (de from_msc a to_msc).

La composición de los datos copiados acerca de cada tick se especifica en el parámetro flags como una máscara de bits de valores de la enumeración ENUM_COPY_TICKS.

Identificador

Valor

Descripción

COPY_TICKS_INFO

1

Ticks generados por los cambios Bid y/o Ask

COPY_TICKS_TRADE

2

Ticks generados por los cambios Last y Volume

COPY_TICKS_ALL

3

Todos los ticks

COPY_TICKS_TIME_MS

1 << 8

Tiempo en milisegundos

COPY_TICKS_BID

1 << 9

Bid precio

COPY_TICKS_ASK

1 << 10

Ask precio

COPY_TICKS_LAST

1 << 11

Last precio

COPY_TICKS_VOLUME

1 << 12

Volumen

COPY_TICKS_FLAGS

1 << 13

Banderas de ticks

Los tres primeros bits (byte bajo) determinan el conjunto de ticks solicitados, y los restantes bits (byte alto) determinan las propiedades de estos ticks.

Las banderas de byte alto sólo pueden combinarse para matrices, ya que en el vector sólo se coloca una fila con los valores de un campo concreto de todos los ticks. Por lo tanto, sólo debe seleccionarse un bit del byte más significativo para rellenar el vector.

Al seleccionar varias propiedades de ticks en el proceso de rellenar la matriz, el orden de las filas en ella se corresponderá con el orden de los elementos en la enumeración. Por ejemplo, el precio Bid aparecerá siempre más arriba en la fila (con un índice menor) que la fila con precios Ask.

Un ejemplo de trabajo con ambos, ticks y vectores, se mostrará en la sección sobre aprendizaje automático.