Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

Assistente MQL5 - Sinais de Negociação baseados no Padrões Candles de Reversão (Barras de preço) - expert para MetaTrader 5

Visualizações:
7416
Avaliação:
(45)
Publicado:
2014.01.15 08:28
Atualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

O Assistente MQL5 oferece a criação automática de Expert Advisors (veja Assistente MQL5: Criando Expert Advisors sem Programar).

A classe CSignalCandles fornece sinais de negociação, com base em padrões candlestick de reversão. Esta estratégia é chamada de "Sinais baseados nos padrões candles de reversão" (criando o EA automaticamente através Assistente MQL5).

A ideia do sistema é identificar os padrões de reversão usando o cálculo do candle composto. Os padrões de reversão são semelhantes a análise dos castiçais Japonês nos padrões "Martelo" e o "Homem Enforcado". Mas é usado um candle composto em vez de um único candle e não precisa do pequeno corpo do candle composto para confirmar a inversão.

Os parâmetros de entrada:

  • Range - número máximo de barras, utilizada no cálculo do candle composto.
  • Minimum - tamanho mínimo do candle composto (em pontos convencionais).
  • ShadowBig e ShadowSmall - sombras (em unidades compostas de candles).
  • Limite, StopLoss e TakeProfit - preço de abertura, os níveis de SL e TP, os valores definidos em relação ao preço de fechamento do candle composto (unidades de candles compostos).
  • Vencimento - tempo de expiração da ordem (em barras), usado na negociação com pedidos pendentes (Limit! = 0,0).

Os padrões candlestick de reversão são determinados a seguir.

O calculo dos parâmetros dos candles compostos iniciam a partir da última barra concluída (com índice 1)totalizando o número de barras definidas pelo parâmetro de entrada "Range". Se o tamanho do candle composto é maior que o valor especificado pelo parâmetro de entrada mínima, ele verifica as condições de reversão da vela composta pela análise de suas sombras.

A força baixista é caracterizada pelo tamanho da sombra alta em realaão ao candle composto, já a força altista é caracterizado pelo tamanho da sombra baixa.

  • Para confirmar a reversão da tendência de baixa (e início da alta) é necessário o seguinte: o tamanho da sombra inferior ( força dos touros) deve ser maior que o valor definido pelo parâmetro de entrada ShadowBig. O tamanho da sombra alta (força dos ursos) tem de ser menor do que o valor definido pelo parâmetro de entrada ShadowSmall.
  • Para confirmar a reversão da tendência de alta (e início da baixa), é necessário o seguinte: o tamanho da sombra superior (poder dos ursos) deve ser maior que o valor, definido pelo parâmetro de entrada ShadowBig. O tamanho da sombra baixa (poder dos touros) tem de ser menor do que o valor definido pelo parâmetro de entrada ShadowSmall.

Além da estratégia de reversão, é possível usar as estratégias de ruptura especificando o valor negativo para parâmetro de entrada Limit (veja "Assistente MQL5 - Sinais de comércio baseadas no Cruzamento de duas EMA com filtro de tempo intraday").

Dependendo do Limit, três formas diferentes de entrada no mercado são utilizadas:

  1. Limit>0. Entrará em movimento de volta sobre o preço, melhor do que o preço de mercado ( as ordens pendentes Buy Limit ou Sell Limit serão colocados dependendo sobre o sinal de negociação)
  2. Limit<0. Entrará na direção do movimento do preço (As ordens pendentes Buy Stop ou Sell Stop serão utilizados dependendo do sinal de negociação).
  3. Limit=0. A negociação com os preços de mercado.

Esta estratégia está implementada na classe CSignalCandles.

Figura 1. Sinais de negociação, com base em padrões candles de reversão

Figura 1. Sinais de negociação, com base em padrões candles de reversão


Sinais de Negociação

Os sinais de negociação são aplicados na classe CSignalCandles, existe uma função Candle() usada para a análise:

int  Candle(int ind); // Retorna o número positivo/negativo, dependendo do tipo do candle composto
                        // o valor retornado é o número de barras (candles) no candle compostao(a partir do ind)

Vários candles (barras) serão utilizados na construção do candle composto. O número mínimo de barras é definido pelo parâmetro Range. Em alguns casos, o candle composto pode ser formado com menos candles do que o estipulado no parametro Range (quando as condições de tamanho/sombras são satisfeitas). A função Candle retorna 0 se o candle composto não pode ser formado.


1. Abrir posição comprada

Para abrir posição comprada é necessária o candle composto de alta. A função verifica o candle e retorna se o candle composto ainda não está formado ainda ou o candle composto é de baixa. Caso contrário, é calculado o tamanho do candle composto (necessário para o cálculo do preço, SL e níveis de TP) e calcula os níveis de preços para a ordem pendente.

Note que o tipo de ordem pendente (Buy Limit ou Buy Stop) é vinculada sobre o sinal do parâmetro de entrada Limit (se Limite = 0 ou |price-ask|<stops level, colocará ordens para comprar no preço de mercado, se o Limite>0, colocará a ordem pendente Buy Limit, se Limit<0, será colocada a ordem pendente Buy Stop).

//+------------------------------------------------------------------+
//| Verifica as condições para abrir posição comprada (buy           |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- Verificar a formação do candle composta de alta  
   if(Candle(1)<=0) return(false);
//--- obter o tamanho do candle composto
   double size=m_high_composite-m_low_composite;
//--- calcular o preço de ordem pendente
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
//--- calcular o preço do Stop Loss
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
//--- Calcular o preço do Take Profit
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
//--- configurar o tempo para a expiração da ordem
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- se as condições forem satisfeitas, retorna verdadeira
   return(true);
  }

2. Fechar posição comprada

Se o candle composto de baixa foi formado, a posição comprada é fechada

//+------------------------------------------------------------------+
//| Verifica as condições para fechar posição comprada               |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseLong(double& price)
  {
//--- Verificar a formação do candle composto de baixa 
   if(Candle(1)>=0) return(false);
//---
   price=0.0;
//--- se as condições forem satisfeitas, retorna verdadeiro
   return(true);
  }


3. Abertura da posição vendida

O candle composto de baixa deve se formar antes para abrir uma posição vendida. Se o candle composto não se formar, ou não é de baixa, retorna. caso contrário, podemos determinar seu tamanho e calcular os níveis de preços das ordens pendentes

O tipo de ordem depende do sinal do parâmetro de entrada Limit, consulte "posição aberta comprada"

//+------------------------------------------------------------------+
//| verifica as condições para abrir posição vendida (sell)          |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- Verificar a formação do candle composto de baixa 
   if(Candle(1)>=0) return(false);
//--- obter o tamanho do candle composto
   double size=m_high_composite-m_low_composite;
//--- calcular o preço das ordens pendentes
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
//--- calcular o preço do Stop Loss
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
//--- calcular o preço do Take Profit
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
//--- Definir o tempo de expiração da ordem
   expiration+=m_expiration*PeriodSeconds(m_period);

//--- se as condições forem satisfeitas, retorna verdadeiro   return(true);
  }


4. Fechar posição vendida

Se a candle composto de alta foi formado, a posição vendida é fechada.

//+------------------------------------------------------------------+
//| Verifica as condições para fechar a posição vendida              |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseShort(double& price)
  {
//--- Verificar a formação do candle composto de alta 
  if(Candle(1)<=0) return(false);
//---
   price=0.0;
//--- se as condições forem satisfeitas, retorna verdadeiro
   return(true);
  }

Criando Expert Advisor usando Assistente MQL5

Para criar um robô de negociação com base nesta estratégia, você precisa escolher as propriedades de sinais como "Sinais baseados nos padrões candles de reversão" na opção do Assistente MQL5 "Criando Expert Advisors Pronto-para-Uso:"

Figura 2. Selecione "Sinais baseados nos padrões candles de reversão no Assistente MQL5

Figura 2. Selecione "Sinais baseados nos padrões candles de reversão no Assistente MQL5

O próximo passo é especificar o algorítimo do trailing stop e o sistema de gerenciamento de risco do dinheiro. O código de Expert Advisor será criado automaticamente, você pode compilá-lo e testá-lo no Testador de Estratégias do terminal do cliente MetaTrader 5.


Resultados dos testes

Vamos considerar um teste do Expert Advisor em dados do histórico: (EURUSD M15, testing period: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).

Na criação de Expert Advisor usamos o volume fixo (Lote da Negociação Fixa, 0.1), o algorítimo do Trailing Stop não é usado (Trailing Stop não é usado).

Figura 3. Resultados dos Testes do Expert Advisor com sinais de negociação, com base nos padrões candles de reversão

Figura 3. Resultados dos Testes do Expert Advisor com sinais de negociação, com base nos padrões candles de reversão


Anexos: O SignalAlligator.mqh com a classe CSignalCandles estão localizados a pasta terminal_data_folder\MQL5\Include\Expert\Signal.

O expert_candles.mq5 contém o código do Expert Advisor criado no Assistente MQL5.


Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/268

O manipulador de evento "Nova barra" para indicadores. O manipulador de evento "Nova barra" para indicadores.

Este indicador permite-lhe executar o recálculo dos dados do indicador somente quando aparecer uma nova barra no gráfico.

Export Indicator's Values Export Indicator's Values

Este script exporta os valores do indicador para um arquivo CSV.

sChartsSynchroScroll_v2 sChartsSynchroScroll_v2

Nova versão do sript sChartsSynchroScroll.

ZigZag Profissional ZigZag Profissional

Versão melhorada do indicador ZigZag.