O Night Scalper Multi é um robô de trading desenvolvido para operar no período noturno, até à meia-noite, utilizando um intervalo restrito (r) que é determinado pelo indicador Bollinger Bands.
BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0];
O robô abre uma posição após a hora especificada em Start, desde que não haja posições abertas para o símbolo em questão.
if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
Para comprar, o preço deve estar abaixo do limite inferior das Bollinger Bands e o intervalo deve ser menor que o especificado na variável Razmah.
if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
Para vender, o preço precisa estar acima do limite superior das Bollinger Bands e o intervalo deve ser menor que o especificado na variável Razmah.
if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
As posições são fechadas por stop loss ou forçadas a fechar após a meia-noite.
else if(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
As operações de trading são realizadas com a função SymbolTrade e utilizam a classe CTrade:
void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start) { string s=(string)start+":00"; double Ask=SymbolInfoDouble(symb,SYMBOL_ASK); double Bid=SymbolInfoDouble(symb,SYMBOL_BID); BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0]; if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s)) { if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point); if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point); } else if(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb); }
As operações de trading são executadas em uma nova barra.
if(bars!=Bars(NULL,0)) { if(Symbol1!="") SymbolTrade(Symbol1,StopLoss1,TakeProfit1,BBPeriod1,BBDev1,Razmah1,Start1); if(Symbol2!="") SymbolTrade(Symbol2,StopLoss2,TakeProfit2,BBPeriod2,BBDev2,Razmah2,Start2); if(Symbol3!="") SymbolTrade(Symbol3,StopLoss3,TakeProfit3,BBPeriod3,BBDev3,Razmah3,Start3); ... } bars=Bars(NULL,0);
Configurações:
input string Symbol1 = "USDCAD"; // Nome do Símbolo1 input int StopLoss1 = 370; // StopLoss1 input int TakeProfit1 = 20; // TakeProfit1 input int BBPeriod1 = 40; // Período das Bands1 input double BBDev1 = 1; // Deviation das Bands1 input double Razmah1 = 450; // Deviation das Bands1 em Pontos input int Start1 = 19; // Hora de Início1 input string Symbol2 = "GBPUSD"; // Nome do Símbolo2 input int StopLoss2 = 450; // StopLoss2 input int TakeProfit2 = 80; // TakeProfit2 input int BBPeriod2 = 8; // Período das Bands2 input double BBDev2 = 1; // Deviation das Bands2 input double Razmah2 = 200; // Deviation das Bands2 em Pontos input int Start2 = 20; // Hora de Início2 input string Symbol3 = "NZDUSD"; // Nome do Símbolo3 input int StopLoss3 = 410; // StopLoss3 input int TakeProfit3 = 40; // TakeProfit3 input int BBPeriod3 = 4; // Período das Bands3 input double BBDev3 = 1.2; // Deviation das Bands3 input double Razmah3 = 450; // Deviation das Bands3 em Pontos input int Start3 = 19; // Hora de Início3 input string Symbol4 = ""; // Nome do Símbolo4 input int StopLoss4 = 500; // StopLoss4 input int TakeProfit4 = 40; // TakeProfit4 input int BBPeriod4 = 24; // Período das Bands4 input double BBDev4 = 1; // Deviation das Bands4 input double Razmah4 = 200; // Deviation das Bands4 em Pontos input int Start4 = 20; // Hora de Início4 input string Symbol5 = ""; // Nome do Símbolo5 input int StopLoss5 = 500; // StopLoss5 input int TakeProfit5 = 40; // TakeProfit5 input int BBPeriod5 = 24 // Período das Bands5 input double BBDev5 = 1 // Deviation das Bands5 input double Razmah5 = 200 // Deviation das Bands5 em Pontos input int Start5 = 20 // Hora de Início5 input string Symbol6 = ""; // Nome do Símbolo6 input int StopLoss6 = 500 // StopLoss6 input int TakeProfit6 = 40 // TakeProfit6 input int BBPeriod6 = 24 // Período das Bands6 input double BBDev6 = 1 // Deviation das Bands6 input double Razmah6 = 200 // Deviation das Bands6 em Pontos input int Start6 = 20 // Hora de Início6 input string Symbol7 = ""; // Nome do Símbolo7 input int StopLoss7 = 500 // StopLoss7 input int TakeProfit7 = 40 // TakeProfit7 input int BBPeriod7 = 24 // Período das Bands7 input double BBDev7 = 1 // Deviation das Bands7 input double Razmah7 = 200 // Deviation das Bands7 em Pontos input int Start7 = 20 // Hora de Início7 input string Symbol8 = ""; // Nome do Símbolo8 input int StopLoss8 = 500 // StopLoss8 input int TakeProfit8 = 40 // TakeProfit8 input int BBPeriod8 = 24 // Período das Bands8 input double BBDev8 = 1 // Deviation das Bands8 input double Razmah8 = 200 // Deviation das Bands8 em Pontos input int Start8 = 20 // Hora de Início8 input string Symbol9 = "" // Nome do Símbolo9 input int StopLoss9 = 500 // StopLoss9 input int TakeProfit9 = 40 // TakeProfit9 input int BBPeriod9 = 24 // Período das Bands9 input double BBDev9 = 1 // Deviation das Bands9 input double Razmah9 = 200 // Deviation das Bands9 em Pontos input int Start9 = 20 // Hora de Início9 input double Lot = 1 // Volume de Trading

Fig.1. O resultado do trading do EA. EURUSD, H1

Fig.2. Negociações do EA no diário

Fig.3. Resultados do trading do EA e otimização de 11.01.2016 a 13.09.2016. USDCAD, GBPUSD, NZDUSD, H1
Dicas:
- Recomendamos o uso do EA como um assistente de trading e para desenvolver suas próprias estratégias.
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Combo Trader: O EA Atualizado para MetaTrader 4
- 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 Padrões Candlestick e RSI no MetaTrader 5
- Trader Automático: RSI e MFI com Otimização Automática para MetaTrader 4