"Each such class has a common parent, the CNode class, which performs only one function, i.e. stores the type of the basic primitive.
Its only protected constructor requires type specification during element creation."
A classe CNode não armazena o tipo da primitiva básica, mas o CEIChart o faz por meio do membro m_obj_type.
Em novas compilações do terminal (aproximadamente desde a versão 2170), apareceu um problema com os códigos-fonte do artigo ("Writing a scalper's glass"). Em particular, o arquivo principal"MarketBook.mq5" gera erros críticos durante a compilação:
' Event' - token inesperado, provavelmente o tipo está faltando... MBookBtn.mqh 57 12
' Event' - função já definida e com tipo diferente MBookBtn.mqh 57 12
Você poderia me dizer o que está errado e como consertar?
P.S. agora verifiqueio "MarketBook.mq5" de um artigo antigo de 2015. Descobriu-se que o mesmo tipo de erro ocorre com esse projeto:
'Show' - token inesperado, provavelmente o tipo está faltando... MBookFon.mqh 47 11 'Show' - função já definida e com tipo diferente MBookFon.mqh 47 11
Em novas compilações do terminal (aproximadamente desde a versão 2170), apareceu um problema com os códigos-fonte do artigo ("Writing a scalper's glass"). Em particular, o arquivo principal"MarketBook.mq5" gera erros críticos durante a compilação:
' Event' - token inesperado, provavelmente o tipo está faltando... MBookBtn.mqh 57 12
' Event' - função já definida e com tipo diferente MBookBtn.mqh 57 12
Você poderia me dizer o que está errado e como consertar?
A linguagem está sendo desenvolvida e os requisitos estão ficando mais rigorosos.
Vejamos o arquivo "MBookBtn.mqh", a declaração da classe CMBookBtn - a função Event é declarada como void
//+------------------------------------------------------------------+//|| A classe representa o botão na parte superior do gráfico que, quando clicado//| É exibido um painel com um gráfico de ticks e uma tabela de ordens.//| Pressionar o botão novamente oculta o painel.//+------------------------------------------------------------------+class CMBookBtn : public CElButton
{
private:
CMBookArea m_book_area;
bool m_showed_book;
public:
CMBookBtn();
void SetMarketBookSymbol(string symbol);
void Refresh();
void Event(int id,long lparam,double dparam,string sparam);void Clear(void);
virtualvoid OnShow(void);
};
e agora vamos dar uma olhada na própria função na classe:
o segundo erro diz "'Event' - function already defined and has different type MBookBtn.mqh 57 12" - ou seja, a função foi declarada com o tipo void e aqui está sem especificar o tipo.
Cure:
//+------------------------------------------------------------------+//|| Intercepta o clique do mouse no nosso botão. Se o botão após |//| clique no estado pressionado - mostra o painel. Se estiver no estado ||//| empurrando para baixo - oculta o painel|//+------------------------------------------------------------------+void CMBookBtn::Event(int id,long lparam,double dparam,string sparam)
{
- basta adicionar void antes da função no corpo da classe.
Agora compile o ... Indicators\MarketBookArticle\MarketBook.mq5 - não há erros e execute-o: o vidro funciona.
Olá, Vasiliy, obrigado por seu belo artigo. Sou novo no mundo da MQL5 e estou enfrentando um desafio ao tentar executar seu código localmente. Acredito que seja um problema muito bobo, mas não estou conseguindo resolvê-lo
Quando tento compilar seu código a partir do MarketBook.mq5, recebo o erro que você pode ver abaixo.
Você pode me dizer se é possível fixar - lembrar a hora do índice encontrado na classe MarketBook.mqh?
void Calculation(void)
{
// PARA O LADO DA PERGUNTAint begin = (int)m_book.InfoGetInteger(MBOOK_LAST_ASK_INDEX);
int end = (int)m_book.InfoGetInteger(MBOOK_BEST_ASK_INDEX);
//m_ask_best_indexfor(int i = begin; i <= end && begin !=-1; i++)
{
if(m_book.MarketBook[i].volume > m_max_ask_volume)
{
m_max_ask_index = i;
m_max_ask_volume = m_book.MarketBook[i].volume;
}
m_sum_ask_volume += m_book.MarketBook[i].volume;
}
// PARA O LADO DA OFERTA
begin = (int)m_book.InfoGetInteger(MBOOK_BEST_BID_INDEX);
end = (int)m_book.InfoGetInteger(MBOOK_LAST_BID_INDEX);
for(int i = begin; i <= end && begin != -1; i++)
{
if(m_book.MarketBook[i].volume > m_max_bid_volume)
{
m_max_bid_index = i;
m_max_bid_volume = m_book.MarketBook[i].volume;
}
m_sum_bid_volume += m_book.MarketBook[i].volume;
}
m_calculation = true;
}
Nesse método, encontramos o índice de preços no qual está localizado o volume máximo nos lados Ask e Bid.
Também quero saber em que momento do terminal obtivemos esse índice.
A estrutura da pilha
structMqlBookInfo
{
ENUM_BOOK_TYPE type; // tipo de solicitação da enumeração ENUM_BOOK_TYPE double price; // preço long volume; // volume double volume_real; // volume com maior precisão
};
nos fornece 4 parâmetros, mas não há tempo neles.
Quem pode me orientar sobre como lembrar a hora do índice encontrado?
Você poderia me dizer se é possível corrigir - lembrar a hora do índice encontrado na classe MarketBook.mqh?
Nesse método, encontramos o índice de preços no qual está o volume máximo no lado Ask e Bid.
Também gostaria de saber em que momento do terminal obtivemos esse índice.
A estrutura do copo
nos fornece 4 parâmetros, mas não há tempo nela.
Quem pode nos indicar como lembrar a hora do índice encontrado?
Não há tempo, porque o tempo de chegada da cotação em MQL5 não pode ser aprendido. O máximo que pode ser feito é lembrar a hora no momento da chegada do evento OnBookEvent, portanto, lembre-se disso. Lembrar a hora de encontrar os topos da pilha também é inútil, pois você precisa da hora de chegada da pilha de preços, não da hora de encontrar seu índice máximo.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
A classe CNode não armazena o tipo da primitiva básica, mas o CEIChart o faz por meio do membro m_obj_type.
Obrigado, Vasiliy
Em novas compilações do terminal (aproximadamente desde a versão 2170), apareceu um problema com os códigos-fonte do artigo ("Writing a scalper's glass").
' Event' - token inesperado, provavelmente o tipo está faltando... MBookBtn.mqh 57 12Em particular, o arquivo principal"MarketBook.mq5" gera erros críticos durante a compilação:
' Event' - função já definida e com tipo diferente MBookBtn.mqh 57 12
Você poderia me dizer o que está errado e como consertar?P.S. agora verifiqueio "MarketBook.mq5" de um artigo antigo de 2015. Descobriu-se que o mesmo tipo de erro ocorre com esse projeto:
'Show' - token inesperado, provavelmente o tipo está faltando... MBookFon.mqh 47 11
'Show' - função já definida e com tipo diferente MBookFon.mqh 47 11
Em novas compilações do terminal (aproximadamente desde a versão 2170), apareceu um problema com os códigos-fonte do artigo ("Writing a scalper's glass").
' Event' - token inesperado, provavelmente o tipo está faltando... MBookBtn.mqh 57 12Em particular, o arquivo principal"MarketBook.mq5" gera erros críticos durante a compilação:
' Event' - função já definida e com tipo diferente MBookBtn.mqh 57 12
Você poderia me dizer o que está errado e como consertar?A linguagem está sendo desenvolvida e os requisitos estão ficando mais rigorosos.
Vejamos o arquivo "MBookBtn.mqh", a declaração da classe CMBookBtn - a função Event é declarada como void
e agora vamos dar uma olhada na própria função na classe:
o segundo erro diz "'Event' - function already defined and has different type MBookBtn.mqh 57 12" - ou seja, a função foi declarada com o tipo void e aqui está sem especificar o tipo.
Cure:
- basta adicionar void antes da função no corpo da classe.
Agora compile o ... Indicators\MarketBookArticle\MarketBook.mq5 - não há erros e execute-o: o vidro funciona.
O código inteiro, quando copio e colo para compilar, da erro na hora de compilar. Alguém sabe de alguma solução?
Lucas, se o erro estiver relacionado a unexpected token, da classe CMBookBtn, na chamada da função CMBookBtn::Event deve ser precedida por void
Era o que tínha-mos para o momento.
Olá, Vasiliy, obrigado por seu belo artigo. Sou novo no mundo da MQL5 e estou enfrentando um desafio ao tentar executar seu código localmente. Acredito que seja um problema muito bobo, mas não estou conseguindo resolvê-lo
Quando tento compilar seu código a partir do MarketBook.mq5, recebo o erro que você pode ver abaixo.
Você pode me ajudar a resolver esse problema?
Olá.
Você pode me dizer se é possível fixar - lembrar a hora do índice encontrado na classe MarketBook.mqh?
Nesse método, encontramos o índice de preços no qual está localizado o volume máximo nos lados Ask e Bid.
Também quero saber em que momento do terminal obtivemos esse índice.
A estrutura da pilha
nos fornece 4 parâmetros, mas não há tempo neles.
Quem pode me orientar sobre como lembrar a hora do índice encontrado?
Olá.
Você poderia me dizer se é possível corrigir - lembrar a hora do índice encontrado na classe MarketBook.mqh?
Nesse método, encontramos o índice de preços no qual está o volume máximo no lado Ask e Bid.
Também gostaria de saber em que momento do terminal obtivemos esse índice.
Estrutura do copo
Fornece 4 parâmetros, mas não tem tempo.
Alguém pode me indicar como lembrar a hora do índice encontrado?
Herdar a estrutura e adicionar um campo adicional ao qual você adicionará a hora do tique ao preenchê-lo.
Olá.
Você poderia me dizer se é possível corrigir - lembrar a hora do índice encontrado na classe MarketBook.mqh?
Nesse método, encontramos o índice de preços no qual está o volume máximo no lado Ask e Bid.
Também gostaria de saber em que momento do terminal obtivemos esse índice.
A estrutura do copo
nos fornece 4 parâmetros, mas não há tempo nela.
Quem pode nos indicar como lembrar a hora do índice encontrado?
Não há tempo, porque o tempo de chegada da cotação em MQL5 não pode ser aprendido. O máximo que pode ser feito é lembrar a hora no momento da chegada do evento OnBookEvent, portanto, lembre-se disso. Lembrar a hora de encontrar os topos da pilha também é inútil, pois você precisa da hora de chegada da pilha de preços, não da hora de encontrar seu índice máximo.