Informações do Book
Pessoal,
Estou tentando obter do book de ofertas as informações de preço de venda e preço de compras e suas respectivas quantidades e não estou conseguindo.
Alguem poderia me ajudar? Quais as funções devo usar?
Tentei usar a SymbolInfoDouble("PETR4", SYMBOL_SESSION_SEEL_ORDERS_VOLUME) / SymbolInfoDouble("PETR4", SYMBOL_SESSION_BUY_ORDERS_VOLUME), sem sucesso, e para pegar a quantidade e as
SymbolInfoDouble("PETR4", SYMBOL_SYMBOL_ASK) /SymbolInfoDouble("PETR4", SYMBOL_SYMBOL_BID) .
Para exemplificar, gostaria de obter as informações da primeira linha da imagem do book abaixo
para venda: qtde 1.100 e preço 25.50
para compra: qtde 11.400 e preço 25.55.
| PETR4 | |||
| Qtde | Compra | Venda | Qtde |
| 1100 | 25,50 | 25,55 | 11400 |
| 3500 | 25,45 | 25,56 | 1200 |
| 2500 | 25,42 | 25,57 | 900 |
| 2100 | 25,41 | 25,58 | 500 |
| 36300 | 25,40 | 25,59 | 1800 |
Obrigado!
Fala man,
Veja se este artigo te ajuda.
[ ]'s
- www.mql5.com
Joscelino, obrigado pelo artigo.
Estou tentando implementar e não está retornando nenhuma informação nesse trecho:
MqlBookInfo aLongBookInfo[]; MarketBookGet("PETR4", aLongBookInfo); if(ArraySize(aLongBookInfo) == 0) { Comment("Não foi possível retornar o book para o ativo de compra"); return; }
Sempre entrando no IF. Estou testando na Modal, em dados reais e no histórico, ocorrendo o mesmo erro em ambos.
Sabe o pq?
Vlw!!!
Joscelino, obrigado pelo artigo.
Estou tentando implementar e não está retornando nenhuma informação nesse trecho:
Sempre entrando no IF. Estou testando na Modal, em dados reais e no histórico, ocorrendo o mesmo erro em ambos.
Sabe o pq?
Vlw!!!
Fala Leandro,
Não tenho experiência com isso. Busque esclarecer suas dúvidas neste link: https://www.mql5.com/pt/forum/301258/unread#unread
[ ]´s
Fala Leandro,
Não tenho experiência com isso. Busque esclarecer suas dúvidas neste link: https://www.mql5.com/pt/forum/301258/unread#unread
[ ]´s
Ola,
Fiz um codigo de exemplo aqui acho que da pra seguir com esse exemplo
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- MarketBookAdd(Symbol()); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Desinicialização da função Expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- MarketBookRelease("USDJPY"); } //+------------------------------------------------------------------+ //| Função BookEvent | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { //--- //printf("Depth of Market " + symbol + " changed"); MqlBookInfo book[]; MarketBookGet(symbol, book); if(ArraySize(book) == 0) { printf("Failed load market book price. Reason: " + (string)GetLastError()); return; } string line = "Price: " + DoubleToString(book[0].price, Digits()) + "; "; line += "Volume: " + (string)book[0].volume + "; "; line += "Type: " + EnumToString(book[0].type); printf(line);
Ola,
Fiz um codigo de exemplo aqui acho que da pra seguir com esse exemplo
Jonathan, Obrigado pelo exemplo.
Testei seu código aqui e deu o seguinte erro:
Failed load market book price. Reason: 4903
O erro 4903, pelo que eu achei na documentação é:
ERR_BOOKS_CANNOT_GET |
4903 |
Os dados da Profundidade de Mercado não podem ser obtidos |
Alguma idéia do que pode ser?
Obrigado!
Jonathan, Obrigado pelo exemplo.
Testei seu código aqui e deu o seguinte erro:
Failed load market book price. Reason: 4903
O erro 4903, pelo que eu achei na documentação é:
ERR_BOOKS_CANNOT_GET | 4903 | Os dados da Profundidade de Mercado não podem ser obtidos |
Alguma idéia do que pode ser?
Obrigado!
Se você simplesmente copiou e colou o código acima, o código possui um erro: Está inicializando o código corrente do gráfico e desinicializando com o USDJPY. Primeiro os dados do book não estão disponíveis no forex. Segundo, deve inicializar e desinicializar o mesmo simbolo.
Se você simplesmente copiou e colou o código acima, o código possui um erro: Está inicializando o código corrente do gráfico e desinicializando com o USDJPY. Primeiro os dados do book não estão disponíveis no forex. Segundo, deve inicializar e desinicializar o mesmo simbolo.
Exatamente, eu fiz esse código as pressas e me conectei a uma corretora de Forex usando o par USDJPY por isso pra mim não deu erro em momento algum.
O correto é transformar isso em Classe e delegar as funções de implementação a classe e não no robô em si.
Então pessoal eu corrigi o código do ativo, compilei todo código e debuguei sobre dados históricos (que não funcionou) e sobre dados reais (que funcionou).
Acredito que o problema tava porque eu estava tentando fazer o debug sobre dados históricos. Sabem se tem como usar essa função em dados históricos?
Obrigado!
Então pessoal eu corrigi o código do ativo, compilei todo código e debuguei sobre dados históricos (que não funcionou) e sobre dados reais (que funcionou).
Acredito que o problema tava porque eu estava tentando fazer o debug sobre dados históricos. Sabem se tem como usar essa função em dados históricos?
Obrigado!
Não. O dados do Book só podem ser acessados em tempo real. Você pode gravar os dados em uma tabela csv e rodar o programa com esses dados para testes. Inclusive vou fazer isso também. Porque não pensei nisso antes? kkk
Pessoal,
Estou tentando obter do book de ofertas as informações de preço de venda e preço de compras e suas respectivas quantidades e não estou conseguindo.
Alguem poderia me ajudar? Quais as funções devo usar?
Tentei usar a SymbolInfoDouble("PETR4", SYMBOL_SESSION_SEEL_ORDERS_VOLUME) / SymbolInfoDouble("PETR4", SYMBOL_SESSION_BUY_ORDERS_VOLUME), sem sucesso, e para pegar a quantidade e as
SymbolInfoDouble("PETR4", SYMBOL_SYMBOL_ASK) /SymbolInfoDouble("PETR4", SYMBOL_SYMBOL_BID) .Para exemplificar, gostaria de obter as informações da primeira linha da imagem do book abaixo
para venda: qtde 1.100 e preço 25.50
para compra: qtde 11.400 e preço 25.55.
Obrigado!