Guia de testes e otimização de expert advisors de IA | Deriv Blog
Aperfeiçoe o seu expert advisor de IA com técnicas de teste adequadas. O nosso guia aborda problemas comuns, métodos de teste e otimização de expert advisors para bots de trading fiáveis.
Pela equipa Deriv · 21 de abril de 2025 · 4 min de leitura

Os expert advisors de trading com IA já chegaram — mas ainda precisa de os testar e aperfeiçoar.
Se já utilizou ferramentas de IA como o Claude ou o ChatGPT para criar um expert advisor para o Deriv MT5 ou um cBot para o Deriv cTrader, está num excelente ponto de partida. Mas mesmo quando o código parece correto, pode ainda conter erros que afetam o funcionamento do bot.
Antes de executar o seu expert advisor (EA) num mercado real, é importante testá-lo e garantir que funciona da forma que espera.
Neste guia, vamos analisar erros de programação comuns em EAs gerados por IA, como corrigi-los e dicas práticas para melhorar o desempenho do seu bot.
Erros de programação comuns em MQL5 gerados por IA
Estes são alguns dos problemas mais comuns encontrados em EAs gerados por IA, juntamente com formas de os corrigir:
- Erro de identificador não declarado em MQL5
Este erro surge quando o bot utiliza uma variável ou um nome que não foi definido corretamente, como a falta de um parâmetro ou a utilização de um nome incorreto em indicadores como iMA().
Correção:
Verifique os parâmetros do indicador e certifique-se de que todos os nomes das variáveis correspondem ao esperado no MetaEditor (a ferramenta de programação do MT5).
- Funções de execução de ordens de compra/venda em falta
Alguns bots gerados por IA omitem a lógica essencial para abrir operações.
Correção:
Adicione manualmente funções básicas de execução de ordens. Eis um exemplo de uma estrutura básica para colocar uma ordem de compra:
void OpenBuy() {
MqlTradeRequest request; MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.volume = 0.1; request.magic = 12345;
OrderSend(request, result);
}
Certifique-se também de incluir a lógica para ordens de venda e de definir as condições sob as quais as operações devem ser colocadas.
- Condições de ciclo inadequadas no Deriv cTrader
No Deriv cTrader, a lógica do bot precisa de ser executada dentro de funções específicas como OnBar() ou OnTick(). Estas são acionadas automaticamente quando o mercado se move. Se o seu código for colocado fora destas secções, como num ciclo errado ou no âmbito global, não será executado como esperado.
Correção:
Certifique-se de que as barras e os ticks são tratados dentro de OnBar() ou OnTick(). Isto permitirá que o seu bot responda corretamente a novos ticks ou barras durante o backtesting e o trading em tempo real.
- Cálculo incorreto do tamanho do lote com base na percentagem do saldo
Quando a IA tenta definir o tamanho do lote com base no saldo da sua conta (por exemplo, arriscando 2% por operação), pode omitir um detalhe importante — o tamanho do contrato. Isto pode levar a tamanhos de lote imprecisos. Isto não irá gerar um erro de código, mas nos testes, verá tamanhos de operação que não correspondem às suas definições de risco, resultando em sobre-exposição ou subexposição em operações reais.
Correção:
Utilize uma fórmula para o tamanho do lote que tenha em conta o tamanho do contrato, como:
//-----------------------------------------------------------------
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * (RiskPercent / 100.0);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pointValue = tickValue / tickSize;
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
if(contractSize > 0)
pointValue = pointValue / contractSize;
double lotSize = riskMoney / (StopLossPoints * pointValue);
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotSize = MathMax(lotSize, minLot);
lotSize = MathMin(lotSize, maxLot);
lotSize = MathFloor(lotSize / lotStep) * lotStep;
- Outros erros
Se encontrar um destes erros — ou qualquer outro — pode sempre pedir ajuda ao seu modelo de IA para identificar e corrigir o problema.
Basta copiar a mensagem de erro e o código relevante e partilhá-los com o modelo de IA. Na maioria das vezes, deverá ser capaz de identificar o problema e oferecer uma correção ou sugerir possíveis soluções.
Dica: Execute sempre um backtest antes de passar para o mercado real. Problemas como este só aparecem quando testa a estratégia com dados reais de mercado.
Melhore o seu expert advisor gerado por IA
Assim que o seu bot estiver a funcionar, pode fazer pequenas alterações para melhorar o seu desempenho e estabilidade. Eis algumas dicas comuns para o fazer:
- Adicione lógica de tratamento de erros para gerir comportamentos inesperados durante períodos de elevada volatilidade ou problemas de ligação.
- Utilize um trailing stop-loss para assegurar potenciais lucros quando o mercado se move a seu favor.
- Faça o backtest da sua estratégia com dados históricos para ver como se teria comportado.
- Limpe e organize o seu código para melhorar a legibilidade e eficiência. Isto facilitará atualizações ou a resolução de problemas mais tarde.
Dica: Utilize o MetaEditor Debugger (no MT5) para testar como o seu bot é executado passo a passo.
Porque é que o backtesting de operações é fundamental
Os bots gerados por IA são uma excelente forma de automatizar o seu trading sem precisar de programar do zero. Mas mesmo com IA, a sua estratégia ainda precisa de verificações e ajustes humanos para funcionar bem em condições reais.
Antes de passar para o mercado real, reserve tempo para testar minuciosamente e fazer pequenas melhorias. Mesmo correções menores podem fazer uma grande diferença na consistência e eficácia do desempenho do seu EA.