Ajuste Indice.

Gabriel ...
801
Boa tarde.

Não estou encontrado na documentação do mql5 a forma de ler a tabela de negociação, nela contem todos negócios realizado no dia dos ativos, desta forma ficaria fácil criar o Ajuste. Alguém poderia me ajudar?
Trader_Patinhas
1185
Daniel Cousseau:
Boa tarde.

Não estou encontrado na documentação do mql5 a forma de ler a tabela de negociação, nela contem todos negócios realizado no dia dos ativos, desta forma ficaria fácil criar o Ajuste. Alguém poderia me ajudar?
Use as funções CopyTicks() ou CopyTicksRange() passando o parâmetro flags = COPY_TICKS_TRADE e você receberá uma lista de todos os negócios realizados, com data/hora (precisão de milésimo de segundo), preço e volume de cada negócio.
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / CopyTicksRange
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / CopyTicksRange
  • www.mql5.com
, a indexação é realizada do passado para o presente, ou seja, o tick com índice 0 é o mais antigo na matriz. Para analisar o tick, é necessário verificar o campo [out] Matriz estática ou dinâmica MqlTick para recebimento de ticks. Se na matriz estática não caberem todos os ticks do intervalo solicitado, serão obtidos tantos ticks quanto...
Gabriel ...
801
Gabriel ...  
Trader_Patinhas:
Use as funções CopyTicks() ou CopyTicksRange() passando o parâmetro flags = COPY_TICKS_TRADE e você receberá uma lista de todos os negócios realizados, com data/hora (precisão de milésimo de segundo), preço e volume de cada negócio.

Velho, obrigado.. vou fazer.. Abração

Marcus Alexandre Machado De Oliveira
1483
Trader_Patinhas:
Use as funções CopyTicks() ou CopyTicksRange() passando o parâmetro flags = COPY_TICKS_TRADE e você receberá uma lista de todos os negócios realizados, com data/hora (precisão de milésimo de segundo), preço e volume de cada negócio.

Pessoal,

Vocês conseguiram fazer o ajuste?

Eu tentei fazer com o CopyTicksRange, porém notei que algo de estranho acontece com a propriedade volume... ela sempre vem com o valor 4... não sei o porque...


O resultado do algoritmo, será o valor: 5175.839357264844693418 , enquanto de acordo com a página da b3 deveria ser:  5.176,0630

Suspeito que o problema é porque o volume está sempre retornando o valor 4 no lugar de retornar o volume negociado.

Alguém sabe o porque? ou qual seria a solução para o cálculo do ajuste?


      datetime start_date = D'2020-07-21 15:50';

      datetime end_date = D'2020-07-21 16:00';

      MqlTick ticks[];

      int result = CopyTicksRange(Symbol(), ticks, COPY_TICKS_TRADE, start_date*1000, end_date*1000);

      int array_size = ArraySize(ticks);

            

      double tmp_sum_volume = 0;

      double tmp_sum_product = 0;

      for(int j=0; j<array_size; j++) { 

        double j_volume = ticks[j].volume; //Não sei pq, mas o volume esta vindo sempre como 4

        double j_volume_real = ticks[j].volume_real;  //Não sei pq, mas o volume esta vindo sempre como 4

        

        tmp_sum_product += (j_last * j_volume);

        tmp_sum_volume += j_volume;

      }

      double tmp_result1 = tmp_sum_product / tmp_sum_volume;