Trade Permission

Trade Automation

A linguagem MQL5 fornece um grupo especial de funções de negociação projetado para o desenvolvimento de sistemas de negociação automatizados. Programas desenvolvidos para negociação automatizada sem intervenção humana são chamados Expert Advisors ou robôs de negociação. Para criar um Expert Advisor no MetaEditor, abra o MQL5 Wizard e selecione uma das duas opções:

  • Expert Advisor (modelo) — permite-lhe criar um modelo com uma função de manipulação de eventos que devem ser complementados com toda a funcionalidade necessária por meio de programação.
  • Expert Advisor (generate) — permite você desenvolver um robô de negociação completoSimplesmente selecionando os módulos necessários: módulo de negociação de sinais, módulo de gerenciamento de dinheiro e módulo de parada final.

MQL5_Wizard

As funções de negociação podem funcionar apenas em Expert Advisors e scripts. A negociação não é permitida para os indicadores.

Verificando a Permissão para Realizar uma Negociação Automatizada

A fim de desenvolver um Expert Advisor confiável capaz de trabalhar sem intervenção humana, é necessário organizar um conjunto de verificações importantes. Primeiro, devemos verificar programaticamente se a negociação é permitida em tudo. Esta é uma verificação básica que é indispensável ao desenvolver qualquer sistema automatizado.

Verificação da permissão para realizar a negociação automatizada no terminal

As configurações de terminal fornecem a você a capacidade de permitir ou proibir a negociação automatizada de todos os programas.

TERMINAL_TRADE_ALLOWED

Você pode alternar a opção de negociação automatizada diretamente no painel Padrão do terminal:  

  • AutoTrading_enabled— negociação automatizada habilitada, funções de negociação em aplicativos lançados são permitidos para uso.
  • AutoTrading_disabled — negociação automatizada desabilitada, as aplicações em execução não conseguem executar funções de negociação.

Verificar amostra:

if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) 
   Alert("Verifique se a negociação automatizada é permitida nas configurações do terminal!");

 

Verificando se a negociação é permitida para uma determinada execução do Expert Advisor/script

Você pode permitir ou proibir a negociação automatizada para um determinado programa ao lançá-lo. Para fazer isso, use a caixa de seleção especial nas propriedades do programa.

MQL_TRADE_ALLOWED

Verificar amostra:

   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
      Alert("Verifique se a negociação automatizada é permitida nas configurações do terminal!");
   else
     {
      if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
         Alert("A negociação automatizada é proibida nas configurações do ",__FILE__);
     }

 

Verificando se a negociação é permitida para qualquer Expert Advisors/scripts para a conta corrente

A negociação automatizada pode ser desativada no lado do servidor de negociação. Verificar amostra:

   if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
      Alert("Negociação automatizada é proibida para a conta ",AccountInfoInteger(ACCOUNT_LOGIN),
      " no lado do servidor de negociação");

Se a negociação automatizada estiver desativada para uma conta de negociação, as operações de negociação de Expert Advisors/scripts não serão executadas.

Verificando se a negociação é permitida para a conta corrente

Em alguns casos, quaisquer operações de negociação são desativadas para uma determinada conta de negociação - nem manual nem automatizado de negociação pode ser realizada. Exemplo de verificação quando uma senha de investidor foi usada para conectar-se a uma conta de negociação:

   if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
      Comment("A negociação é proibida para a conta ",AccountInfoInteger(ACCOUNT_LOGIN),
            ".\n Talvez uma senha de investidor tenha sido usada para conectar-se à conta de negociação.",
            "\n Verifique o diário do terminal para a seguinte entrada:",
            "\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': negociação foi desativada - modo investidor.");

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) deve retornar falsa nos casos seguintes:

  • Sem conexão com o servidor de negociação. Isso pode ser verificado usando TerminalInfoInteger(TERMINAL_CONNECTED);
  • Conta de negociação comutada para modo somente leitura (enviada para o arquivo);
  • A negociação na conta é desativada no lado do servidor de negociação;
  • A conexão com uma conta de negociação foi realizada no modo Investidor.

 

Veja também

Propriedades do terminal do cliente, Propriedades da Conta, Propriedades de um programa MQL5 em execução