CopyRates
Obtém na matriz ou vetor as séries históricas da estrutura MqlRates do período-símbolo especificado com a quantidade especificada. Os itens da posição inicial são contados do presente para o passado, ou seja, uma posição inicial de 0 significa a barra atual.
Além disso, os dados serão copiados de tal forma que o elemento mais antigo no tempo seja colocado no início da matriz/vetor. Existem 3 variantes do método.
Acesso através da posição inicial e número de itens necessários.
bool matrix::CopyRates(
|
Acesso através da data inicial e número de itens necessários.
bool matrix::CopyRates(
|
Acesso através das datas inicial e final dentro de um intervalo de tempo.
bool matrix::CopyRates(
|
Para um vetor, os métodos são semelhantes.
Acesso através da posição inicial e número de itens necessários.
bool vector::CopyRates(
|
Acesso através da data inicial e número de itens necessários.
bool vector::CopyRates(
|
Acesso através das datas inicial e final dentro de um intervalo de tempo.
bool vector::CopyRates(
|
Parâmetros
symbol
[in] Símbolo.
period
[in] Período.
rates_mask
[in] Combinação de sinalizadores provenientes da enumeração ENUM_RATES que indicam o tipo de série solicitada. Ao copiar para um vetor, apenas um valor da enumeração ENUM_RATES pode ser especificado, caso contrário, ocorrerá um erro.
start
[in] Número do primeiro item copiado.
count
[in] Número de itens a serem copiados.
from
[in] Tempo de barra correspondente ao primeiro item.
to
[in] Tempo de barra correspondente ao último item.
Valor retornado
Retorna true se for bem-sucedido, caso contrário, false se for erro.
Observação
Se o intervalo de dados solicitado estiver totalmente fora dos dados disponíveis no servidor, a função retorna false. Se os dados forem solicitados fora de TERMINAL_MAXBARS (número máximo de barras no gráfico), a função também retornará false.
Ao solicitar dados de um EA ou script, será iniciada um carregamento desde o servidor se o terminal não tiver esses dados localmente, ou será iniciada a construção da série temporal necessária se os dados puderem ser construídos a partir do histórico local, mas ainda não estiverem prontos. A função retornará a quantidade de dados que estarão prontos quando o tempo expirar, mas o carregamento do histórico continuará, e na próxima vez que uma solicitação semelhante for feita a função retornará mais dados.
Ao solicitar dados por data de início e número de itens necessários, somente os dados com data menor que (antes) ou igual à data especificada são devolvidos. O intervalo é definido e considerado com uma precisão de segundos. Ou seja, a data de abertura de qualquer barra para a qual um valor é retornado (volume, spread, preço de abertura, máximo, mínimo, fechamento ou hora) é sempre igual ou menor que o especificado.
Ao solicitar dados em um determinado intervalo de datas, apenas os dados que se enquadram no intervalo solicitado são retornados, enquanto o intervalo é definido e considerado com precisão de até um segundo. Ou seja, o tempo de abertura de qualquer barra para a qual um valor é retornado (volume, spread, valor no buffer do indicador, preço de abertura, máximo, mínimo, fechamento ou tempo) está sempre dentro do intervalo solicitado.
Assim, se o dia da semana atual for sábado, quando você tentar copiar dados no período semanal, especificando start_time=ultima_terça-feira e stop_time=ultima_sexta-feira a função retornará 0, pois o horário de abertura no período semanal sempre cai no domingo, mas nenhuma barra semanal está dentro do intervalo especificado.
Se você precisar obter o valor correspondente à barra incompleta atual, poderá usar a primeira forma da chamada, indicando start_pos=0 и count=1.
A enumeração ENUM_COPY_RATES contém sinalizadores para especificar o tipo de dados a ser passado para a matriz ou array. A combinação de sinalizadores permite obter várias séries do histórico em uma solicitação. Nesse caso, a ordem das linhas na matriz corresponderá à ordem dos valores na enumeração ENUM_COPY_RATES, ou seja, a linha com dados High será sempre maior na matriz do que a linha com dados Low.
Identificador |
Valor |
Descrição |
---|---|---|
COPY_RATES_OPEN |
1 |
Série de preços Open |
COPY_RATES_HIGH |
2 |
Série de preços High |
COPY_RATES_LOW |
4 |
Série de preços Low |
COPY_RATES_CLOSE |
8 |
Série de preços Close |
COPY_RATES_TIME |
16 |
Série Time (hora de abertura da barra)
A obtenção de tempo no valor float do vetor e matriz (vectord e matrixf) acarreta a perda de ~100 segundos, em outras palavras a precisão do valor float é fortemente limitado, e inteiros com um valor superior a 1<<24 não podem ser representados com precisão em um valor float. |
COPY_RATES_VOLUME_TICK |
32 |
Volumes de ticks |
COPY_RATES_VOLUME_REAL |
64 |
Volumes de negociação |
COPY_RATES_SPREAD |
128 |
Spreads |
Combinação |
|
|
COPY_RATES_OHLC |
15 |
Séries Open, High, Low e Close |
COPY_RATES_OHLCT |
31 |
Série Open, Hilgh, Low, Close e Time |
Disposição dos dados |
|
|
COPY_RATES_VERTICAL |
32768 |
As séries são copiadas na matriz ao longo do eixo vertical. Isso implica que os valores das séries na matriz são organizados de forma vertical, ou seja, os dados mais antigos são apresentados na primeira linha e os mais recentes, na última.
Por padrão, ao copiar para uma matriz, as séries são adicionadas ao longo do eixo horizontal.
O sinalizador só é relevante ao copiar para uma matriz. |
Exemplo:
//+------------------------------------------------------------------+
|
Ver também