"open[rates_total]" retorna valor do fechamento ao invés da abertura

 

Colegas,

Estou com dificuldades no resultado do trecho de código abaixo, dentro do OnCalculate. Ele deveria validar se o fechamento do último candle fechado (não o atual) é maior que a abertura (candle de alta) ou menor que a abertura (candle de baixa).

Ele está me retornando o resultado esperado apenas uma única vez, apesar de estar dentro de uma condição executado a cada novo candle.

[...]

     if(close[rates_total - 1] > open[rates_total - 1])
        {
         Print(TimeCurrent(), ": Candle de compra");
        }

      if(close[rates_total - 1] < open[rates_total - 1])
        {
         Print(TimeCurrent(), ": Candle de venda");
        }

[...]

Tentando descobri o erro, acrescentei entre as condições a linha abaixo para ele me informar os valores de abertura e fechamento do candle anterior.

        Print("Fechamento: ", close[rates_total - 1], ". Abertura: ", open[rates_total - 1]);

Descobri que após a primeira execução, o MT5 está retornando somente o valor do fechamento do candle para ambas as solicitações (mesmo sendo solicitando a abertura e fechamento do candle).


Alguém sabe como corrigir?

Obrigado!

 
Robson Felix:

Colegas,

Estou com dificuldades no resultado do trecho de código abaixo, dentro do OnCalculate. Ele deveria validar se o fechamento do último candle fechado (não o atual) é maior que a abertura (candle de alta) ou menor que a abertura (candle de baixa).

Ele está me retornando o resultado esperado apenas uma única vez, apesar de estar dentro de uma condição executado a cada novo candle.

[...]

[...]

Tentando descobri o erro, acrescentei entre as condições a linha abaixo para ele me informar os valores de abertura e fechamento do candle anterior.

Descobri que após a primeira execução, o MT5 está retornando somente o valor do fechamento do candle para ambas as solicitações (mesmo sendo solicitando a abertura e fechamento do candle).


Alguém sabe como corrigir?

Obrigado!

Reveja suas aulas de vetores em C++. os vetores começam com o índice ZERO.

rates_total contém o total de elementos.

Portanto para pegar o candle fechado deveria ser rates_total-2.

 
Flavio Jarabeck:

Reveja suas aulas de vetores em C++. os vetores começam com o índice ZERO.

rates_total contém o total de elementos.

Portanto para pegar o candle fechado deveria ser rates_total-2.


Era isso mesmo, deu certo agora.


Estou aprendendo e este detalhe me passou batido.


Muito Obrigado!