Discussão do artigo "MQL5 Cookbook: Implementando seu próprio Depth of Market (Book de Ofertas)"

 

Novo artigo MQL5 Cookbook: Implementando seu próprio Depth of Market (Book de Ofertas) foi publicado:

Este artigo demonstra como utilizar o Depth of Market de forma programática e descreve o princípio de funcionamento da classe CMarketBook, que pode expandir a biblioteca padrão de classes de MQL5 e oferecer métodos convenientes para usar o Depth of Market (DOM). No Brasil o Livro de Ofertas faz o papel do DOM e registra todas as ordens por nível de preço.

A linguagem MQL5 está em constante evolução e oferece mais oportunidades para operações com a troca de informações a cada ano. Um desses tipos de dados de troca são informações sobre Depth of Market. É uma tabela especial que mostra os níveis de preços e volumes de ordens limitadas. O terminal MetaTrader 5 tem uma versão do Depth Mercado para a exibição de ordens limitadas, mas que nem sempre é suficiente, pois o seu Expert Advisor tem que ter um acesso simples e conveniente para o Depth of Market. Certamente, a linguagem MQL5 tem poucos recursos especiais para trabalhar com essas informações, mas são características de baixo nível que exigem cálculos matemáticos adicionais.

No entanto, todos os cálculos intermédios podem ser evitado. Tudo que você tem a fazer é escrever uma classe especial para trabalhar com Depth of Market. Todos os cálculos complexos serão realizados dentro do Depth of Market e da própria classe, que fornece formas convenientes para a operação com preços e níveis do DOM. Esta classe permite uma criação eficiente e simples do painel na forma de um indicador, que reflete imediatamente o estado atual de preços do Depth of Market:

Fig. 1. Depth of Market exibido como um painel

Este artigo demonsta aos usuários como utilizar o Depth of Market (DOM) de forma programática e descreve o princípio de funcionamento da classe MarketBook , que pode expandir a biblioteca padrão de classes do MQL5 e oferecer métodos convenientes de como usar o DOM.

Depois de ler o primeiro capítulo deste artigo, ficará claro que o Depth of Market regular oferecido pelo MetaTrader 5 tem capacidades impressionantes. Não vamos tentar duplicar todas essas múltiplas oportunidades no nosso indicador, assim como sua tarefa será completamente diferente. Com um exemplo prático de como criar facilmente um painel de negociação no Depth of Market, vamos mostrar que os princípios da programação orientada a objetos permitem a manipulação de estruturas de dados complexos de forma relativamente fácil. Vamos garantir que não vai ser difícil acessar o Depth of Market diretamente do seu Expert Advisor com MQL5 e, consequentemente, para visualizar a sua representação, pois é conveniente para nós.

Autor: Vasiliy Sokolov

 
Leu muito, mas não entendeu do que se tratava?
 
Михаил:
Estou lendo há muito tempo, mas não entendi por quê?

Na minha opinião, pelo menos para ter uma classe pronta (como a Biblioteca Padrão) para analisar a liquidez atual de um instrumento.

Vasily fez um bom trabalho! Alto nível de código e abordagem sistemática. Muito bem!

 
Михаил:
Longa leitura, mas não entendi por que tudo isso?
Dennis Kirichenko:

Na minha opinião, pelo menos para ter uma classe pronta (como a Biblioteca Padrão) para analisar a liquidez atual de um instrumento.

Muito bem, Vasily! Alto nível de código e abordagem sistemática. Muito bem!

Exatamente isso. A tarefa de minhas "Receitas MQL" é estender a Biblioteca Padrão MQL com novas classes não triviais, tornando o trabalho do trader mais conveniente.

Quanto à pilha de preços, é fundamental fornecer o mecanismo mais eficiente de acesso aos dados de Nível II. Esse é o caso quando o trabalho por meio de uma classe intermediária pode ser muito mais rápido (e, obviamente, mais conveniente) do que uma pesquisa completa da pilha em cada OnBookEvent. Os algoritmos incorporados na classe de vidro de preço são escritos por um motivo.

 
Vasiliy Sokolov:

Exatamente. A tarefa de minhas "Receitas MQL" é estender a biblioteca MQL padrão com novas classes não triviais, tornando o trabalho do trader mais conveniente.

Quanto ao livro de preços, é fundamental fornecer o mecanismo mais eficiente de acesso aos dados de Nível II. Esse é o caso quando o trabalho por meio de uma classe intermediária pode ser muito mais rápido (e, obviamente, mais conveniente) do que uma pesquisa completa da pilha em cada OnBookEvent. Os algoritmos incorporados na classe de vidro de preço são escritos por um motivo.

 
informações úteis para negociar no vidro! é bom que existam pessoas com a mesma opinião sobre esse assunto )
 
Михаил:

Mikhail, ainda estamos esperando para saber de você, no tópico vizinho, qual é a direção da última negociação.

Acho que você também prometeu escrever seu artigo sobre como usar o modelo de evento no MetaTrader5. Eu gostaria de lê-lo finalmente.

 
Vasiliy Sokolov:

Mikhail, ainda estamos esperando para saber de você, no tópico vizinho, qual é a direção da última negociação.

Acho que você também prometeu escrever seu artigo sobre como usar o modelo de evento no MetaTrader5. Eu gostaria de lê-lo finalmente.

O artigo não foi publicado (ele é pequeno, ao contrário do seu), mas você pode lê-lo em meu blog.

P/S No tópico vizinho, leia sobre a direção...

A propósito, uma observação sobre o artigo.

Não é possível fazer isso da maneira que você escreveu:

//+------------------------------------------------------------------+
//| Função BookEvent|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
//---
   printf("O preço do vidro por " + symbol +  " alterado"); 
  }

Porque o evento BookEvent é transmitido.

E assim que você se inscrever para recebê-lo, receberá tudo em OnBookEvent(),

que você tem aberto no Market Watch.

É por isso que você precisa filtrar o evento para o símbolo selecionado:

//+------------------------------------------------------------------+
//| Função BookEvent|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
//---
    if ( symbol == _Symbol )
    { 
      printf("O preço do vidro por " + symbol +  " alterado");
    } 
  }
 
Михаил:

O artigo não foi publicado (pequeno em tamanho, ao contrário do seu), mas você pode lê-lo em meu blog.

P/S Entre no tópico vizinho e leia sobre a direção....

A propósito, uma observação sobre o artigo.

Não é possível fazer isso da maneira que você escreveu:

Porque o evento BookEvent é transmitido.

E assim que você se inscrever para recebê-lo, receberá tudo em OnBookEvent(),

que você tem aberto no Market Watch.

É por isso que você precisa filtrar o evento apenas para o símbolo selecionado:

Michael, da documentação:

MarketBookAdd

Fornece a abertura do livro de preços para o instrumento especificado e também se inscreve para receber notificações sobre alterações no livro especificado.

bool MarketBookAdd(
stringsymbol// symbol
);

Ou seja, os desenvolvedores introduziram o MarketBookAdd com a finalidade de que OnBookEvent seja chamado somente quando a pilha de símbolos predefinidos no MarketBookAdd for alterada. Assim, nada além de símbolos predefinidos chegará a OnBookEvent.

 

Ler OnBookEvent()

В отличие от других событий, событие BookEvent является широковещательным.
Это означает, что достаточно одному эксперту подписаться на получение события BookEvent с помощью функции MarketBookAdd,
все остальные эксперты, имеющие обработчик OnBookEvent(), будут получать это событие.
Поэтому необходимо анализировать имя символа, которое передается в обработчик в качестве параметра const string& symbol.
 

Olá,

Muito obrigado pela contribuição.

É exatamente o que eu estava procurando.

A profundidade do mercado pode ser uma ótima indicação para os cambistas.

Mas o problema é que nunca vejo as informações de volume da profundidade de mercado em meus terminais.

Como obter acesso às informações de volume fornecidas pela corretora?