CopyIndicatorBuffer

Obtém no vetor dados do buffer especificado do indicador especificado com a quantidade indicada.

Os dados no vetor são copiados de forma que o elemento mais antigo no tempo esteja no início da memória física alocada para o vetor. Existem três alternativas para a função.

Manuseio por posição inicial e número de itens necessários

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // identificador do indicador
   ulong     buffer_index,         // número do buffer do indicador
   ulong     start_pos,            // ponto de partida 
   ulong     count                 // quantidade que copiamos
   );

Manuseio por data inicial e número de itens necessários

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // identificador do indicador
   ulong     buffer_index,         // número do buffer do indicador
   datetime  start_time,           // data de início
   ulong     count                 // quantidade que copiamos
   );

Manuseio por datas de início e término do intervalo de tempo necessário

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // identificador do indicador
   ulong     buffer_index,         // número do buffer do indicador
   datetime  start_time,           // data de início
   datetime  stop_time             // data de término
   );

Parâmetros

indicator_handle

[in]  Identificador do indicador obtido pela função de indicador apropriada.

buffer_index

[in]  Número do buffer de indicador.

start_pos

[in]  Número do primeiro item a ser copiado.

count

[in]  Número de itens a serem copiados.

start_time

[in]  Tempo de barra correspondente ao primeiro item.

stop_time

[in]  Tempo de barra correspondente ao último item.

Valor retornado

Retorna true se for bem-sucedido; caso contrário, false se estiver incorreto.

Observação

Os elementos de dados a serem copiados (buffer do indicador com índice buffer_index) são contados a partir da posição inicial do presente para o passado, ou seja, uma posição inicial igual a 0 representa a barra atual (valor do indicador para a barra atual).

Ao copiar antecipadamente uma quantidade desconhecida de dados, é recomendável declarar um vetor sem especificar o tamanho (sem alocar memória para os dados), pois a função CopyBuffer() tenta alocar o tamanho do vetor receptor de acordo com o tamanho dos dados que estão sendo copiados.

Se for necessária uma cópia parcial dos valores do indicador, um vetor intermediário deverá ser usado para essa finalidade, vetor esse que receberá a cópia da quantidade necessária. E já a partir desse vetor intermediário, é feita a cópia item por item do número necessário de valores para os locais corretos do vetor receptor.

Se uma quantidade predefinida de dados tiver que ser copiada, é melhor declarar um vetor com tamanho especificado antecipadamente para evitar a alocação desnecessária de memória.

Ao solicitar dados de um indicador, se a série temporal solicitada ainda não tiver sido criada ou precisar ser baixada do servidor, a função retornará imediatamente false, mas o próprio processo de download/criação será iniciado.

Ao solicitar dados de um Expert Advisor ou script, ele iniciará o carregamento a partir do servidor se o terminal não tiver esses dados localmente ou começará a criar as séries temporais necessárias se os dados puderem ser criados 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 limite expirar.

Veja também

CopyBuffer