Olá, trader! Hoje quero compartilhar uma experiência que tive quando comecei a explorar o uso de Expert Advisors (EAs) no meu trading. Este é um dos EAs mais simples que já utilizei, e espero que você possa aproveitar essa dica. Após ler, não esqueça de deixar sua avaliação!
Este EA é projetado para operar em um único par de moedas. As configurações completas, como período, lotes, stop loss e take profit, estão disponíveis no menu de propriedades.

extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Selecionar o Período extern int period = 8;// Período DeMarker extern double lt = 0.01;// Lotes extern int sl = 100;// Stop Loss extern int tp = 100;// Take Profit extern double OB = 0.7;// Sobrevendido extern double OS = 0.3;// Sobrecomprado extern bool OPENBAR = false;// Operar no preço de abertura de nova barra
Aqui está o segredo: eu divido as variáveis em três partes:
- Dados | Período
- Ordens
- Pares
//+------------------------------------------------------------------+ //-- período | indicador double dmrk[5]; int signal = -1;//-- 0.compra 1.venda int hold = 0; //-- ordens int ticket = 0; double lot = 0.0; int typ = -1; //-- pares datetime t1 = 0; bool newbar = false; bool entry = false; //+------------------------------------------------------------------+
Na função OnInit(), inicializo o array do indicador DeMarker e verifico o tamanho mínimo de lotes que o corretor exige para operar.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ArrayInitialize(dmrk,0.0); //--- const double test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(lt < test_lot) lt = test_lot; }
Na função OnTick(), realizamos o cálculo do indicador e determinamos os sinais de compra e venda.
//--------------------------------------------------------------------------- signal = -1; //--------------------------------------------------------------------------- //---cálculo for(int i = 0; i < ArraySize(dmrk); i++) { dmrk[i] = iDeMarker(Symbol(), TF, period, i); } //--- if(dmrk[1] > OB) { hold = 1;//definir } else if(dmrk[1] < OS) { hold = -1;//definir } else { hold = 0;//resetar } if(hold == 1) { if(dmrk[0] < OB && dmrk[1] > OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0] > OS && dmrk[1] < OS) { signal = OP_BUY; } }
Para abrir um sinal de compra ou venda...
//--------------------------------------------------------------------------- if(signal != -1) if(newbar == true) if(entry == false)//portão aberto { //--- entry = true;//definir //--- if(signal == OP_BUY) { ticket = OrderSend(Symbol(), OP_BUY, lt, Ask, (int)((Ask-Bid)/Point), sl > 0?Bid-sl*Point:0.0, tp > 0?Bid+tp*Point:0.0, EAName+":sinal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold), EANumber, 0, clrBlue); signal = -1; //hold =0; }//resetar else if(signal == OP_SELL) { ticket = OrderSend(Symbol(), OP_SELL, lt, Bid, (int)((Ask-Bid)/Point), sl > 0?Ask+sl*Point:0.0, tp > 0?Ask-tp*Point:0.0, EAName+":sinal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold), EANumber, 0, clrRed); signal = -1; //hold =0; }//resetar sinal }
Agora, para o fechamento...
if(entry == true) // fechamento { if(OrderSelect(ticket, SELECT_BY_TICKET)) { if(OrderCloseTime() == 0)//-- ordem ativa { /* todo condição para fechar */ //entry = false; } //else if(OrderCloseTime() != 0)//-- fechar por 1. manual 2. sl/tp 3. ea { entry = false;//resetar entrada } } }


Se você está começando a explorar o mundo dos EAs, essa é uma ótima oportunidade para entender como os indicadores podem ser usados para automatizar suas operações. Espero que tenha gostado da dica e que ela possa te ajudar em suas negociações!
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Baixe Todo o Histórico de Ticks de um Símbolo no MetaTrader 5
- Como Criar Sinais de Negociação com MQL5 Wizard Usando Estrelas da Manhã e da Noite + Estocástico
- MQL5 Wizard: Sinais de Negociação com 3 Corvos Negros/3 Soldados Brancos e MFI
- MQL5 Wizard: Sinais de Negociação com Padrões Candlestick e RSI no MetaTrader 5