Criar robôs de Day Trade no MetaTrader é uma excelente maneira de automatizar suas operações, melhorar a eficiência e tirar proveito de estratégias de trading sem precisar de supervisão constante. Esses robôs são desenvolvidos em MQL4 (MetaQuotes Language 4), a linguagem de programação utilizada no MetaTrader 4, ou MQL5 no MetaTrader 5. A seguir, explico o processo básico de criação de robôs de Day Trade para o MetaTrader, desde a ideia inicial até a implementação e testes.
1. Entendendo o Básico de MQL4/MQL5
Antes de começar a criar robôs no MetaTrader, é essencial entender a linguagem MQL4/MQL5, que permite programar Expert Advisors (EAs), ou seja, robôs de trading automatizado.
- MQL4: Usado no MetaTrader 4.
- MQL5: Usado no MetaTrader 5, possui mais recursos, mas a criação de EAs no MT4 é mais comum.
A estrutura básica de um Expert Advisor (EA) é composta por três funções principais:
- OnInit(): Função que é chamada quando o robô é iniciado.
- OnDeinit(): Função que é chamada quando o robô é removido do gráfico.
- OnTick(): Função que é executada sempre que o preço do ativo muda (a cada novo “tick”).
2. Criando um Robô Simples para Day Trade
Agora, vamos criar um robô simples para day trading que execute operações de compra e venda com base em um indicador técnico, como o RSI (Índice de Força Relativa).
Passo 1: Abra o MetaEditor
- No MetaTrader, clique em “Ferramentas” e depois em “MetaEditor”.
- O MetaEditor é o ambiente onde você escreverá e editará o código do seu Expert Advisor (EA).
Passo 2: Criando um Novo Expert Advisor
- No MetaEditor, clique em “Arquivo” > “Novo” e depois selecione “Expert Advisor”.
- Dê um nome ao seu robô, como “RSI_Day_Trade”.
- O MetaEditor irá gerar um esqueleto básico para o seu robô, com as funções
OnInit()
,OnDeinit()
, eOnTick()
.
Passo 3: Definindo a Estratégia de Day Trade
Vamos criar uma estratégia simples usando o RSI como filtro para abrir e fechar operações de compra e venda.
- Se o RSI estiver abaixo de 30, o robô deve abrir uma compra (indicado de que o mercado está sobrevendido).
- Se o RSI estiver acima de 70, o robô deve abrir uma venda (indicado de que o mercado está sobrecomprado).
Código básico do Expert Advisor (EA) no MQL4:
mql4Copiar código// Parâmetros do robô
input int RSI_Period = 14; // Período do RSI
input int Overbought = 70; // Nível de sobrecompra
input int Oversold = 30; // Nível de sobrevenda
input double LotSize = 0.1; // Tamanho do lote
input int Slippage = 3; // Deslizamento máximo (slippage)
input int StopLoss = 50; // Stop loss em pips
input int TakeProfit = 50; // Take profit em pips
// Função de inicialização
int OnInit() {
// Aqui você pode adicionar configurações de inicialização, se necessário
Print("EA de Day Trade com RSI iniciado!");
return(INIT_SUCCEEDED);
}
// Função chamada quando o robô é removido
void OnDeinit(const int reason) {
// Aqui você pode adicionar o que precisa ser feito ao remover o EA, se necessário
Print("EA de Day Trade com RSI removido.");
}
// Função chamada a cada novo tick
void OnTick() {
// Calcular o valor atual do RSI
double rsi = iRSI(Symbol(), 0, RSI_Period, PRICE_CLOSE, 0);
// Verificar se a posição já está aberta
if (OrderSelect(0, SELECT_BY_POS) == false || OrderMagicNumber() != 12345) {
// Condição de compra (RSI abaixo de 30 - sobrevendido)
if (rsi < Oversold) {
// Verificar se não há uma operação aberta
if (OrderSend(Symbol(), OP_BUY, LotSize, Ask, Slippage, 0, 0, "RSI Buy", 12345, 0, Blue) < 0) {
Print("Erro ao abrir a ordem de compra: ", GetLastError());
}
}
// Condição de venda (RSI acima de 70 - sobrecomprado)
if (rsi > Overbought) {
// Verificar se não há uma operação aberta
if (OrderSend(Symbol(), OP_SELL, LotSize, Bid, Slippage, 0, 0, "RSI Sell", 12345, 0, Red) < 0) {
Print("Erro ao abrir a ordem de venda: ", GetLastError());
}
}
}
}
// Função para definir o Stop Loss e Take Profit
void SetStopLossTakeProfit(int ticket) {
double sl = 0, tp = 0;
if (OrderType() == OP_BUY) {
sl = OrderOpenPrice() - StopLoss * Point;
tp = OrderOpenPrice() + TakeProfit * Point;
} else if (OrderType() == OP_SELL) {
sl = OrderOpenPrice() + StopLoss * Point;
tp = OrderOpenPrice() - TakeProfit * Point;
}
// Ajustar o Stop Loss e Take Profit
OrderModify(ticket, OrderOpenPrice(), sl, tp, 0, Blue);
}
4. Explicando o Código
- Parâmetros de entrada: Estes parâmetros permitem que você configure facilmente os valores de RSI, Stop Loss, Take Profit, etc.
- OnInit(): Função que é chamada quando o robô é iniciado, onde você pode adicionar configurações adicionais.
- OnDeinit(): Função chamada quando o robô é removido do gráfico.
- OnTick(): Esta função é chamada a cada tick (movimento de preço) e é onde o robô verifica se as condições para abrir uma operação de compra ou venda são atendidas.
- RSI: A estratégia de day trade utiliza o RSI para decidir se o mercado está sobrecomprado ou sobrevendido, acionando compras e vendas de acordo.
- OrderSend(): Função responsável por abrir uma ordem de compra (OP_BUY) ou venda (OP_SELL) quando as condições do RSI são atendidas.
- SetStopLossTakeProfit(): Define os níveis de Stop Loss e Take Profit em pips para proteger a operação.
5. Testando o Robô no MetaTrader
Após escrever o código, é importante testar o Expert Advisor para verificar se ele está funcionando conforme esperado. O MetaTrader oferece o recurso de Backtest para simular o desempenho do robô no histórico de preços.
Passos para testar o robô:
- Salvar e compilar o código no MetaEditor.
- Volte para o MetaTrader e abra a aba “Strategy Tester” (Testador de Estratégia).
- Selecione o EA que você criou e configure os parâmetros de teste, como o símbolo, o período e o intervalo de datas.
- Clique em “Iniciar” para ver como o robô se comporta no histórico de dados.
6. Melhorando a Estratégia
Depois de testar o robô básico, você pode ir aprimorando a estratégia adicionando outras condições de mercado, como indicadores de volume, médias móveis, suporte e resistência, ou até mesmo utilizando ordens pendentes.
Conclusão
Criar um robô de day trade no MetaTrader envolve a programação do Expert Advisor usando MQL4 ou MQL5, definindo as condições de entrada e saída, e ajustando os parâmetros conforme a sua estratégia de trading. Após a criação, é essencial testar o robô em dados históricos e realizar ajustes com base no desempenho. Com o tempo, você pode automatizar suas operações de trading e melhorar sua eficiência no mercado.