Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
![Experts](https://c.mql5.com/i/code/expert.png)
Assistente MQL5 - Sinais de negociação baseado em Harami de Alta/Harami de baixa + RSI - expert para MetaTrader 5
- Visualizações:
- 2354
- Avaliação:
- Publicado:
- 2014.01.15 08:20
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O Assistente MQL5 permite a criação de Expert Advisors pronto para uso com base nas classes da Biblioteca padrão fornecidas no terminal do cliente (ver Criando Expert Advisors prontos no Assistente MQL5 para maiores detalhes). Ele permite verificar suas ideias de negociação de forma rápida, tudo o que você precisa é criar sua classe personalizada de sinais de negociação. A estrutura desta classe e os exemplos podem ser encontrados no artigo Assistente MQL5: Como criar um Módulo de Sinais de Negociação.
Em geral, a ideia é a seguinte: a classe de sinais de negociação é derivada de CExpertSignal, então, é necessário sobrescrever os métodos virtuais LongCondition() e ShortCondition() com seus próprios métodos.
No livro "Estratégias dos melhores Traders" (em Russo), podemos encontrar várias estratégias de negociação, por hora focaremos nos padrões de velas de reversão , e confirmado pelos osciladores Estocástico, CCI, MFI e RSI.
A melhor maneira de proceder é criando uma classe separada, derivada de CExpertSignal para verificar a formação dos padrões de velas. Para confirmar os sinais de negociação, gerado pelos padrões de velas, é suficiente escrever uma classe, derivada de CCandlePattern e adicionar as características necessárias nela (por exemplo, confirmação por osciladores).
Neste artigo, consideraremos os sinais com base no padrão de velas de reversão "Harami de alta/Harami de baixa", confirmado pelo indicador RSI. O módulo de sinais de negociação, baseado na classe CCandlePattern, é um simples exemplo de seu uso na geração de sinais de negociação por meio dos padrões de velas.
1. Padrões de velas de reversão "Harami de alta" e "Harami de baixa"
1.1. Harami de alta
O padrão de reversão "Harami de alta" se forma em tendências baixistas quando uma grande vela negra é seguida por uma pequena vela branca, cujo o corpo está totalmente envolvido pela grande vela. Este padrão indica que a tendência de baixa pode estar se invertendo, sinalizando que é um bom momento para abrir uma posição comprada. A segunda vela se abre com um gap para cima.
Quanto menor for a segunda vela (branca), é mais provável que ocorra uma reversão.
Fig. 1. Padrão de vela "Harami de alta"
O reconhecimento do padrão "Harami de alta" está implementado no método CheckPatternBullishHarami() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Checks formation of "Bullish Harami" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) && // the last completed bar is bullish (white day) ((Open(2)-Close(2))>AvgBody(1)) && // the previous candle is bearish, its body is greater than average (long black) ((Close(1)<Open(2)) && // close price of the bullish candle is lower than open price of the bearish candle (Open(1)>Close(2))) && // open price of the bullish candle is higher than close price of the bearish candle (MidPoint(2)<CloseAvg(2))) // down trend return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) da classe CCandlePattern é usado para verificar a formação do padrão de vela "Harami de alta".
1.2. Harami de baixa
O padrão de reversão "Harami de baixa" se forma em tendências altistas quando uma grande vela branca é seguida por uma pequena vela negra, cujo o corpo está totalmente envolvido pela grande vela. Este padrão indica que a tendência de alta pode estar se invertendo, sinalizando que é um bom momento para abrir uma posição vendida. A segunda vela se abre com um gap para baixo.
Quanto menor for a segunda vela (negra), é mais provável que ocorra uma reversão.
Fig. 2. Padrão de vela "Harami de baixa"
O reconhecimento do padrão "Harami de baixa" está implementado no método CheckPatternBearishHarami() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Checks formation of "Bearish Harami" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) && // last completed bar is bearish (black day) ((Close(2)-Open(2))>AvgBody(1)) && // the previous candle is bullish, its body is greater than average (long white) ((Close(1)>Open(2)) && // close price of the bearish candle is higher than open price of the bullish candle (Open(1)<Close(2))) && // open price of the bearish candle is lower than close price of the bullish candle (MidPoint(2)>CloseAvg(2))) // up trend return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) da classe CCandlePattern é usado para verificar a formação do padrão de vela "Harami de baixa".
2. Sinais de negociação, confirmado pelo indicador RSI
O sinais de negociação para abrir posições de compra ou venda deve ser confirmado pelo indicador RSI. O valor de RSI deve ser menor/maior que os níveis críticos (40 para posição comprada e 60 para posição vendida).
O fechamento da posição em aberto depende dos valores do indicador RSI. Ele pode ser feito em 2 casos:
- Se o RSI atingiu o nível crítico oposto (70 para posição comprada e 30 para posição vendida)
- Se o sinal reverso não foi confirmado (quando o indicador RSI atinge os seguintes níveis: 30 para posição comprada e 70 para posição vendida)
Figura 3. Padrão "Harami de alta", confirmado pelo indicador RSI
- int CBH_BH_RSI::LongCondition() - verifica as condições de abertura de posição comprada (retorna 80) e o fechamento da posição vendida (retorna 40);
- int CBH_BH_RSI::ShortCondition() - verifica as condições de abertura de posição vendida (retorna 80) e o fechamento da posição comprada (retorna 40).
2.1. Abertura de posição comprada/fechamento de posição vendida
A formação do padrão "Harami de alta" deve ser confirmado pelo indicador RSI: RSI(1)<40 (o valor do indicador RSI da última barra completa deve ser inferior a 40).
A posição vendida deve ser fechada se o indicador RSI cruzou acima dos níveis críticos (70 ou 30).
//+---------------------------------------------------------------------------+ //| Verifica as condições de entrada e saída do mercado | //| 1) Entrada no mercado (abertura de posição comprada, resultado=80) | //| 2) Saída do mercado (fechamento de posição vendida, resultado=40) | //+---------------------------------------------------------------------------+ int CBH_BH_RSI::LongCondition() { int result=0; //--- idx pode ser usado para determinar o modo de funcionamento do Expert Advisor //--- idx=0 - neste caso o EA verifica as condições de negociação a cada tick //--- idx=1 - neste caso o EA verifica as condições de negociação somente quando há novas barras int idx =StartIndex(); //--- verificando as condições de abertura de posição comprada //--- formação do padrão Harami de alta e RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (RSI(1)<40)) result=80; //--- verificando as condições de fechamento da posição vendida //--- cruzamento da linha de sinal nos níveis de sobrecompra/sobrevenda (acima de 30, acima de 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- retorna o resultado return(result); }
2.2. Abertura de posição vendida/fechamento de posição comprada
A formação do padrão "Harami de baixa" deve ser confirmado pelo indicador RSI: RSI(1)>60 (o valor do indicador RSI da última barra completa deve ser superior a 60).
A posição comprada deve ser fechada se o indicador RSI cruzou abaixo dos níveis críticos (70 ou 30).
//+------------------------------------------------------------------------+ //| Verifica as condições de entrada e saída do mercado | //| 1) Entrada no mercado (abertura de posição vendida, resultado=80) | //| 2) Saída do mercado (fechamento de posição comprada, resultado=40) | //+------------------------------------------------------------------------+ int CBH_BH_RSI::ShortCondition() { int result=0; //--- idx pode ser usado para determinar o modo de funcionamento do Expert Advisor //--- idx=0 - neste caso o EA verifica as condições de negociação a cada tick //--- idx=1 - neste caso o EA verifica as condições de negociação somente quando há novas barras int idx =StartIndex(); //--- verificando as condições de abertura de posição vendida //--- formação do padrão Harami de baixa e RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (RSI(1)>60)) result=80; //--- verificando as condições de fechamento de posição comprada //--- cruzamento da linha de sinal nos níveis de sobrecompra/sobrevenda (abaixo de 70, abaixo de 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- retorna o resultado return(result); }
2.3. Criando o Expert Advisor usando o Assistente MQL5
A classe CBH_BH_RSI não está incluída na Biblioteca Padrão de classes, para usá-la, é necessário baixar o arquivo acml_rsi.mqh (ver anexos) e salvá-lo em client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. O mesmo deve ser feito para o arquivo acandlepatterns.mqh. Você pode usá-lo no Assistente MQL5 após reiniciar o MetaEditor.
Para criar um Expert Advisor inicie o Assistente MQL5:
Fig. 4. Criando o Expert Advisor usando o Assistente MQL5
Vamos especificar o nome do Expert Advisor:
Fig. 5. Propriedades gerais do Expert Advisor
Após isso, precisamos selecionar os módulos dos sinais de negociação usados.
Fig. 6. Propriedades de sinais do Expert Advisor
Em nosso caso usaremos apenas um módulo de sinais de negociação.
Adicionando o módulo de sinais de negociação "Sinais baseado no Harami de alta/Harami de baixa e confirmado pelo RSI":
Fig. 7. Propriedades de sinais do Expert Advisor
Módulo de sinais de negociação adicionado:
Fig. 8. Propriedades de sinais do Expert Advisor
Você pode selecionar qualquer propriedade de trailing, mas nós usaremos "Trailing Stop não utilizado":
Fig. 9. Propriedades de Trailing do Expert Advisor
Em relação às propriedades de gerenciamento de capital, usaremos "Negociação com volume fixo":
Fig. 10. Propriedades do gerenciamento de capital do Expert Advisor
Ao pressionar o botão "Finalizar", obteremos o código gerado do Expert Advisor, de nome Expert_ABH_BH_RSI.mq5, localizado na pasta terminal_data_folder\MQL5\Experts\.
Parâmetros de entrada padrâo do Expert Advisor gerado:
//--- entradas do sinal principal input int Signal_ThresholdOpen =10; // Valor do sinal de abertura [0...100] input int Signal_ThresholdClose =10; // Valor do sinal de fechamento [0...100] input double Signal_PriceLevel =0.0; // Nível do preço para a execução do negócio input double Signal_StopLevel =50.0; // Nível de Stop Loss (em pontos) input double Signal_TakeLevel =50.0; // Nível de Take Profit (em pontos)
deve ser substituído por:
//--- entradas do sinal principal input int Signal_ThresholdOpen =40; // Valor do sinal de abertura [0...100] input int Signal_ThresholdClose =20; // Valor do sinal de fechamento [0...100] input double Signal_PriceLevel =0.0; // Nível do preço para a execução do negócio input double Signal_StopLevel =0.0; // Nível de Stop Loss (em pontos) input double Signal_TakeLevel =0.0; // Nível de Take Profit (em pontos)
Os parâmetros de entrada Signal_ThresholdOpen/Signal_ThresholdClose permitem especificar os valores dos níveis de abertura e fechamento de posições.
No código dos métodos LongCondition() e ShortCondition() da classe de sinais de negociação, nós especificamos os valores fixos das limiares:
- Abertura de posição: 80;
- Fechamento da posição: 40.
O Expert Advisor, gerado pelo Assistente MQL5 abre e fecha posições utilizando os "votos" dos módulos de sinais de negociação. O voto do módulo principal (como contêiner, ele consiste em todos os módulos adicionados) também é usado, mas seus módulos LongCondition() e ShortCondition() sempre retornam 0.
O resultado da votação do módulo principal também é usado para calcular a média dos "votos". Em nosso caso temos: módulo principal + 1 módulo de sinais de negociação, por isso, temos que levar em consideração ao estabelecer os valores da limiar. Por esta razão os valores de ThresholdOpen e ThresholdClose devem ser definidos como 40=(0+80)/2 e 20=(0+40)/2.
Os valores dos parâmetros de entrada de Signal_StopLevel e Signal_TakeLevel está definido com o valor 0, isto significa que o fechamento das posições será executado apenas quando as condições de fechamento forem verdadeiras.
2.4. Resultados do backtesting com dados históricos
Vamos considerar o backtesting com dados históricos do Expert Advisor como sendo (EURUSD H1, período de teste: 2010.01.01-2011.03.11, PeriodRSI=37, MA_period=7).
Na criação do Expert Advisor usaremos o volume fixo (Negociação com lote fixo, 0.1), o algoritmo de Trailing Stop não é usado (Trailing não utilizado).
Fig. 11. Resultados do teste com o Expert Advisor, baseado em Harami de alta/Harami de baixa + RSI
O melhor conjunto dos parâmetros de entrada podem ser encontrado utilizando o Strategy Tester do terminal cliente MetaTrader 5.
O código do Expert Advisor, criado pelo Assistente MQL5 se encontra em anexo em expert_aml_rsi.mq5.
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/313
![Assistente MQL5 - Sinais de negociação baseado em Harami de Alta/Harami de baixa + MFI](https://c.mql5.com/i/code/expert.png)
Vamos nos concentrar nos sinais de negociação obtidos a partir dos padrões de velas (candlestick) "Harami de Alta/Harami de baixa", e confirmado pelo indicador Market Facilitation Index (MFI). O código do Expert Advisor baseado nesta estratégia pode ser gerado automaticamente utilizando o Assistente MQL5.
![Exp_BBSqueeze](https://c.mql5.com/i/code/expert.png)
O Expert Advisor Exp_BBSqueeze se baseia nos sinais do indicador BBSqueeze.
![Assistente MQL5 - Sinais de negociação baseado em Martelo/Enforcado + Estocástico](https://c.mql5.com/i/code/expert.png)
Vamos nos concentrar nos sinais de negociação obtidos a partir dos padrões de velas "Martelo/Enforcado" e confirmado pelo indicador Estocástico. O código do Expert Advisor baseado nesta estratégia pode ser gerado automaticamente utilizando o Assistente MQL5.
![Assistente MQL5 - Sinais de negociação baseado em Martelo/Enforcado + CCI](https://c.mql5.com/i/code/expert.png)
Vamos nos concentrar nos sinais de negociação obtidos a partir dos padrões de velas "Martelo/Enforcado" e confirmado pelo indicador Commodity Channel Index (CCI). O código do Expert Advisor baseado nesta estratégia pode ser gerado automaticamente utilizando o Assistente MQL5.