Boa tarde!
Por que você não considerou a questão "Processamento de códigos de retorno do servidor de comércio"?
Isso é muito mais IMPORTANTE do que tudo em seu artigo.
Boa tarde!
Por que você não considerou a questão "Processamento de códigos de retorno do servidor de comércio"?
Isso é muito mais IMPORTANTE do que tudo em seu artigo.
Antes de mais nada, leia o artigo inteiro. Se não o entender, leia-o novamente e novamente até compreendê-lo completamente. Só então você perceberá que sua mensagem não tem nada a ver com o tópico do artigo.
O artigo deveria ter sido chamado não de"Tratamento e registro deerros no MT5",
mas "Processamento de erros PRÓPRIOS e registro de logs no MT5"!
Boa tarde!
Por que você não considerou a questão "Processamento de códigos de retorno do servidor de comércio"?
Ela é muito mais IMPORTANTE do que tudo em seu artigo.
Mikhail, por que você simplesmente não escreve esse artigo? É um tópico pronto! :)
Não achei que esse tópico fosse mais importante do que tudo o que está no artigo. Se você acha que sim - bem, faça-o, por que me repreender por não tê-lo feito?
Na verdade, não tentei considerar esse ponto em detalhes, pois queria abordar questões mais gerais. Portanto, podemos entrar em uma análise detalhada dos códigos de erro retornados pelas funções padrão da linguagem. Por exemplo, como outro tópico do artigo - "Manipulação de erros que ocorrem ao trabalhar com objetos gráficos em MQL5".
Meu objetivo não era o mesmo. Mas, sim, um mês depois de escrever o artigo, vejo que ele ficou "mais ou menos". Bem, tentarei ser melhor no futuro.
Por que você simplesmente não escreve um artigo como esse? É um tópico pronto! :)
Na verdade, eu não queria discutir esse ponto em detalhes, pois queria abordar questões mais gerais. Portanto, podemos analisar detalhadamente os códigos de erro retornados pelas funções padrão da linguagem. Por exemplo, como outro tópico do artigo - "Manipulação de erros que ocorrem ao trabalhar com objetos gráficos em MQL5".
Meu objetivo não era o mesmo. Mas, sim, um mês depois de escrever o artigo, vejo que ele ficou "mais ou menos". Bem, tentarei ser melhor no futuro.
Sergei!
Está tudo bem, mas eu chamaria o artigo de
"Métodos avançados de depuração de Expert Advisors no MT5 com registro".
Porque quando o Expert Advisor é depurado, não há mais erros,
mas os códigos de retorno do servidor de negociação podem estar cheios de erros,
que precisam ser processados apenas no modo normal do Consultor especialista.
Sergei!
Está tudo bem, mas eu chamaria o artigo de
"Métodos avançados de depuração de Expert Advisors no MT5 com registro".
Mas o tratamento de erros não é depuração :)
Ou você quer dizer que, por exemplo, processar o erro "fundos insuficientes" (que é mencionado no artigo como exemplo) é depuração?
Mas o tratamento de erros não é depuração :)
Ou você quer dizer que, por exemplo, processar o erro "fundos insuficientes" (que é o exemplo mencionado no artigo) é depuração?
"Fundos insuficientes" não é um erro, mas uma mensagem para você (para o especialista sobre o estado da sua conta) e
essa é uma situação de tratamento PADRÃO. E um desenvolvedor normal DEVE, antes de fazer uma transação ou fazer um pedido.
verificar a disponibilidade de fundos.
//+------------------------------------------------------------------+ //| Função Expert Check Money| //+------------------------------------------------------------------+ bool CheckMoney( const long volume ) { double a_go = SymbolInfoDouble( _Symbol, SYMBOL_MARGIN_INITIAL ) * double(volume); double free_margin = ( AccountInfoDouble( ACCOUNT_FREEMARGIN ) / 100 ) * 90; //--- if ( a_go <= free_margin ) { return( true ); } Print( "Dinheiro do cheque: fundos insuficientes!" ); return( false ); }
"Insufficient funds" não é um erro, mas uma mensagem para você (para o Expert Advisor sobre o estado da sua conta) e
essa é uma situação processada PADRÃO.
Mas também não é um momento de depuração. Chame-o como quiser, mas ele deve ser processado (e, a meu ver, concordamos com isso). No meu entendimento, é uma situação errônea em relação ao curso normal das coisas. Afinal de contas, o especialista pode presumir que os meios são suficientes. E se isso não for verificado e processado de alguma forma, acabará não sendo nada.
Assim como, por exemplo, o erro de abrir um arquivo devido à sua ausência - por um lado, é uma situação padrão que precisa ser tratada, mas, por outro lado, é um erro supor que o arquivo está lá e que podemos trabalhar com ele.
E mais uma vez: neste artigo, tentei considerar questões de tratamento de erros no processo de operação do programa em vez de questões de depuração de software. Esse é um tópico completamente diferente e se correlaciona com o artigo apenas dentro da estrutura de registro (e apenas parcialmente).
E não era meu objetivo considerar erros específicos (sejam códigos de retorno do servidor comercial ou, como eu disse acima, por exemplo, possíveis erros ao trabalhar com objetos gráficos). Apenas métodos gerais que são aplicáveis a erros (ou situações padrão, se preferir) que também são retornados pelo servidor de negociação.
Desculpe se minha mensagem não ficou clara. Espero que tudo se encaixe agora.
essa é uma situação de tratamento PADRÃO. E um desenvolvedor normal DEVE, antes de fazer uma transação ou fazer um pedido.
ou fazer um pedido para verificar a disponibilidade de fundos.
Infelizmente, tenho que perguntar: você leu o artigo ou apenas o leu e julgou? Eu falei sobre as verificações preliminares no artigo (eu me arrependo, não falei especificamente sobre a verificação de fundos, mas achei que estava claro). E não é uma má ideia lidar com um possível erro "fundos insuficientes" mesmo depois de tentar abrir uma negociação, mesmo que tenhamos feito essa verificação antes. Tudo pode acontecer no intervalo de tempo entre a verificação "anterior" e a tentativa imediata de abertura.
Infelizmente, tenho que perguntar: você leu o artigo ou apenas o leu e julgou? Falei sobre verificações preliminares no artigo (me arrependo, não falei especificamente sobre verificação de fundos, mas achei que estava claro). E lidar com um possível erro de "fundos insuficientes" mesmo depois de tentar abrir uma negociação não é a pior ideia, mesmo que tenhamos feito essa verificação antes. Tudo pode acontecer no período entre a verificação "anterior" e a tentativa imediata de abertura.
Sergey!
É para isso que servem os códigos de retorno do servidor de negociação nessas situações.
Exemplo: Você verificou a disponibilidade de fundos livres e recebeu um resultado afirmativo.
Você enviou uma ordem, mas ela não foi aceita (como você disse: "O que pode acontecer"),
então o servidor de negociação lhe dará o erro "Insufficient funds" (fundos insuficientes) no código de retorno.
E acontece que não faz absolutamente "nenhuma diferença" quantas vezes você verifica o erro.
entre seu cheque (CheckMoney) e o código de retorno do servidor de negociação!
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Tratamento de erros e registro em log na MQL5 foi publicado:
Este artigo aborda questões sobre o tratamento de erros comuns no software. Além disso, trata do registro em log e monstra uma forma de empregar o registrador de logs via MQL5.
Essa abordagem possui várias desvantagens:
Autor: Sergey Eremin