Range do book de ofertas

 

Boa tarde caros amigos, tenho um robô que captura o range do book de ofertas com índice indo de 0 a 31, sendo o índice 15 a melhor oferta de venda e o índice 16 a melhor oferta de compra...


Porém, de uns dias pra cá, começou a dar erro nesse índice, diz q esta fora do range...não entendi...


Uso o seguinte comando:


DoubleToString(book[15].volume_real)+" "+DoubleToString(book[16].volume_real)+" "+


Percebam que o índice é o 15 e o 16, antes funcionava, agora tá dizendo que esta fora do range, alguém sabe me dizer o porquê?


Obrigado.

 
jdmaster:


Bom Ano Novo JD,

Se o EA está testando o retorno TRUE para função MarketBookAdd() e também para função MarketBookGet() , então lascou! 

Dá um print no ArraySize() do DOM obtido no Get e no atributo SYMBOL_TICKS_BOOKDEPTH.

 
jdmaster:

Boa tarde caros amigos, tenho um robô que captura o range do book de ofertas com índice indo de 0 a 31, sendo o índice 15 a melhor oferta de venda e o índice 16 a melhor oferta de compra...


Porém, de uns dias pra cá, começou a dar erro nesse índice, diz q esta fora do range...não entendi...


Uso o seguinte comando:



Percebam que o índice é o 15 e o 16, antes funcionava, agora tá dizendo que esta fora do range, alguém sabe me dizer o porquê?


Obrigado.

O ideal seria você fazer um for e varrer o book procurando pelo preço = ao ask ou preço = ao bid
Ex:

   for(int i=0;i<ArraySize(book);i++)
     {
        if(book[i].price==SymbolInfoDouble(_Symbol,SYMBOL_ASK))
           {
                volume_ask = book[i].volume_real;
           }
        if(book[i].price==SymbolInfoDouble(_Symbol,SYMBOL_BID))
           {
                volume_bid = book[i].volume_real;
           }
     }

Mas se não encontrar pode ser que sua corretora não está fornecendo o book.

 
Rogerio Giannetti Torres:

Bom Ano Novo JD,

Se o EA está testando o retorno TRUE para função MarketBookAdd() e também para função MarketBookGet() , então lascou! 

Dá um print no ArraySize() do DOM obtido no Get e no atributo SYMBOL_TICKS_BOOKDEPTH.

Boa noite caro amigo Rogério, desejo um grande ano para vc com muita SAÚDE, paz e prosperidade, que seus robôs lhe tragam sucesso!!!


Eu me afastei no mês de dezembro e voltei aos trabalhos com os robôs somente agora, pouco antes de me ausentar eu havia inserido algumas linhas para poder mudar o código do ativo como parâmetro devido ao fato do meu robô trabalhar com mais de um ativo, facilitando assim a operação, sem precisar programar as mudanças conforme mudam-se os vencimentos. Ao voltar agora, distraído, não notei que o parâmetro indicada ativos já vencidos, por esse motivo o book não era encontrado, um erro simples, pura distração.


Agradeço mesmo assim sua prontidão e interesse em ajudar, é sempre uma satisfação entrar nesse forum e saber que aqui tem grandes pessoas como vc dispostas a colaborar com o crescimento dos demais.


Grande abraço!

 
Lucas Baisso:

O ideal seria você fazer um for e varrer o book procurando pelo preço = ao ask ou preço = ao bid
Ex:

Mas se não encontrar pode ser que sua corretora não está fornecendo o book.

Boa noite caro amigo Lucas, conforme respondi ao nosso amigo Rogério acima, tudo não passou de uma distração com o código do ativo, agradeço muito sua disponibilidade e interesse em ajudar, grande abraço e muito sucesso!

 
jdmaster:

Boa noite caro amigo Lucas, conforme respondi ao nosso amigo Rogério acima, tudo não passou de uma distração com o código do ativo, agradeço muito sua disponibilidade e interesse em ajudar, grande abraço e muito sucesso!

Sem problemas, mas de qualquer forma cuidado com índice fixo.
Se a corretora mudar a profundidade de book de uma hora pra outra pode gerar erros no EA, ou se faltar cotação o EA pode dar esse erro de range novamente e dar um crash.
Tem que pensar sempre que pode acontecer do EA não encontrar esse book ou esses valores e tratar esse erro.
Caso não encontre nenhum valor o que fazer?

Razão: