← Todos os tutoriais
MT5 API · 5:56

Interrupções e limites de requisições.

A API recupera o terminal. Você controla o cliente.

Baixar o exemplo em Python · PY ↓

Passo a passo por escrito

  1. 0:00

    Interrupções e limites de requisições.

    Este tutorial mostra como lidar com interrupções no MT5 e limites de requisições: aguardar a recuperação da API, restabelecer o fluxo e repetir leituras com segurança. Usamos respostas reais de uma conta de demonstração.

  2. 0:21

    Verifique a sessão existente.

    Abra mt5.mrpc.pro. Guarde a chave de API e o id do terminal. Esta resposta gravada de ConnectState mostra Connected, com isConnected, isAlive e apiIsAlive iguais a true. O terminal está funcionando. Uma queda no navegador ou uma requisição que falhou não significa, por si só, que você precisa criar outro terminal.

  3. 0:48

    Deixe a recuperação automática agir.

    O MetaRPC monitora os terminais e tenta recuperar automaticamente as sessões ativas elegíveis, preservando o id. Seu aplicativo deve pausar as operações afetadas e dar tempo ao serviço, em vez de chamar Reconnect ou ConnectEx repetidamente. Consulte o estado em intervalos e confirme o acesso com AccountSummary antes de continuar. A recuperação leva tempo; não acontece instantaneamente após cada falha.

  4. 1:23

    Corrija a causa do problema.

    Uma desconexão intencional, sessão expirada, suspensão ou credenciais inválidas exigem a ação correspondente. Leia o motivo e atualize as credenciais ou resolva o problema da conta. Reconnect e ConnectByToken são ferramentas de recuperação explícita, não parte de um ciclo para toda requisição. Se uma sessão elegível continuar indisponível, mantenha as operações pausadas e informe ao suporte o código do erro e o horário.

  5. 1:59

    Restabeleça o WebSocket do aplicativo.

    O terminal e o WebSocket do aplicativo são conexões diferentes. Quando as leituras da conta voltarem a funcionar, feche o socket com falha e abra OnSymbolTick com o id salvo e a chave de API. Restaure as assinaturas dos símbolos. Estas mensagens reais de EURUSD mostram bid, ask e horários. Confirme a chegada de dados novos e evite fluxos duplicados. Um fluxo saudável pode permanecer aberto.

  6. 2:34

    Reconheça uma resposta de limitação.

    Esta recusa real de AccountSummary veio de um teste de leitura com limites definidos. HTTP Status Code 200 indica que a API devolveu uma resposta. O campo error não nulo contém TERMINAL_RATE_LIMIT_EXCEEDED e informa que a chamada não foi executada. O limite observado foi de trezentas chamadas não comerciais por minuto deslizante, compartilhadas pelos clientes do terminal. Consulte os limites atuais, sem fixar esse número permanentemente no código.

  7. 3:12

    Respeite o tempo indicado pelo servidor.

    Nesta resposta, error.properties contém o par chave e valor RetryAfterSeconds, com valor 1. Aguarde pelo menos um segundo e acrescente um pequeno atraso aleatório antes de repetir a leitura. Pause também os outros processos que usam a cota do terminal. Se houver outra recusa, leia o novo prazo. Para HTTP Status Code 429, respeite o cabeçalho Retry-After.

  8. 3:45

    Retome aos poucos.

    Depois de esperar, a leitura real volta a funcionar: HTTP Status Code 200, sem erro de API e com dados da conta demo. Não reenvie todas as leituras acumuladas de uma vez. Armazene informações repetidas em cache, coordene a frequência entre processos e use OnSymbolTick para cotações. Uma limitação exige espera, não reconexão do terminal.

  9. 4:14

    Defina regras claras para novas tentativas.

    O exemplo Python é restrito a AccountSummary. Ele repete apenas respostas explícitas de limitação ou ocupação com um prazo válido, acrescenta atraso aleatório e para após três tentativas. Os demais erros são devolvidos ao chamador. Guarde credenciais em variáveis de ambiente. Use outra política limitada para interrupções; não aplique essa função de leitura a comandos de conexão nem a métodos de negociação.

  10. 4:48

    Esclareça uma negociação incerta.

    Se uma requisição de negociação perder a resposta, a corretora pode já tê-la processado. A recuperação automática não informa o resultado da negociação. Quando o acesso voltar, consulte OpenedOrders e DealsHistory. Use os tickets disponíveis e compare símbolo, direção, volume e horário. Negociações semelhantes podem ser confundidas: mantenha uma requisição não esclarecida pausada, em vez de reenviá-la automaticamente.

  11. 5:24

    Encerre a sessão corretamente.

    Ao encerrar a sessão intencionalmente, pare as assinaturas e chame Disconnect. O fluxo de demonstração foi parado e o terminal desconectado; nenhuma negociação foi alterada. Lembre-se: o MetaRPC recupera terminais elegíveis, o cliente restabelece seu socket quando necessário, espera diante de limites e esclarece resultados incertos antes de enviar outra negociação.