English Русский 中文 Español Deutsch 日本語
Padrões disponíveis ao negociar cestas de moedas

Padrões disponíveis ao negociar cestas de moedas

MetaTrader 5Negociação | 3 fevereiro 2017, 08:51
1 465 0
Andrei Novichkov
Andrei Novichkov

Introdução

Meu artigo anterior sobre negociação de cestas de moedas, residia em seus princípios básicos, abordagens e terminologia. Claro, isso não é suficiente para seguir com êxito este método complexo. Entender as condições de entrada e saída, bem como sinais, permanece crucial. Em outras palavras, precisamos de descrições dos padrões atualmente conhecidos, que podem aumentar significativamente a rentabilidade. Este será o objetivo do artigo: fornecer aos traders uma descrição detalhada dos padrões formados ao trabalhar com cestas de moedas. Vamos aplicar a terminologia, bem como as descrições de cestas e ferramentas técnicas semelhantes aos artigos anteriores. Também vamos aplicar os indicadores baseados no "Williams Percent Range" combinados, para analisar o status da cesta de moedas.

Vamos caracterizar esse indicador brevemente. Os valores parentais de WPR, variam de 0% para -100%. Esta faixa não é adequada para nós, pelas razões apresentadas abaixo. A faixa de valores de 100% a -100% com a transição para zero é necessária para exibir todos os padrões corretamente. Esta alteração pode ser facilmente levada em conta no código do indicador. Além disso, assumimos que os níveis de sobrevenda/sobrecompra existentes para o indicador pai permanecem relevantes para o combinado, portanto vamos usá-los ativamente.


Recursos de entrada dinâmicos. Padrões #1, 2

A entrada dinâmica significa entrar no mercado quando um indicador atinge um certo valor, usado como um sinal de entrada sem esperar que o candle atual feche. Primeiro, vamos considerar o padrão de fortalecimento/enfraquecimento considerável de uma cesta de moedas. Do ponto de vista do mercado, isso significa a ocorrência de um ou mais eventos, levando os investidores a comprar ou vender uma determinada moeda e forçá-la para cima ou para baixo em relação a outras. Por exemplo, as aparições públicas do chefe do BCE, Mario Draghi, podem facilmente reforçar ou enfraquecer o EUR em relação a outras moedas. Nesse caso, o WPR combinado aproxima-se do limite superior ou inferior do intervalo. Um trader pode entrar no mercado depois que o indicador atinge um certo valor sem esperar por uma vela fechar executando uma entrada dinâmica.

  • Padrão #1

Este padrão pode muitas vezes ser encontrado em numerosas descrições de indicadores técnicos. 

O indicador quase toca a borda, e então inverte e quebra a linha de sobrecompra para baixo ou a linha de sobrevenda para cima. Este é um sinal de entrada da tendência consequente em todas as moedas dentro da cesta.

De acordo com muitas fontes oficiais, de maneira alguma tal entrada deve ser realizada dinamicamente. Portanto, eu recomendo fortemente não usar o padrão #1 na negociação.

  • Padrão #2

O segundo padrão é uma versão modificada do anterior.

O indicador quase toca a borda do intervalo e está prestes a inverter juntamente com a tendência atual. Este é um sinal de entrada de contra-tendência em todas as moedas dentro da cesta.

Seria incorrecto esperar uma reversão iminente dos preços de acordo com as leituras de um único indicador. No entanto, tenha em mente que o WPR combinado é um oscilador que não funciona numa tendência. Na situação atual, o indicador pode ficar ao redor das fronteiras do intervalo por bastante tempo, se desviando um pouco deles de uma vez e aproximando-os novamente depois. Enquanto isso, a tendência atual continua a aumentar as perdas do trader. Naturalmente, isto finalmente terminará numa reversão das bordas, mas isso pode demorar um pouco. Ninguém pode garantir que a retirada permanecerá tolerável, e os resultados financeiros podem ser devastadores.

No entanto, alguns traders usam este padrão quando o indicador mostra valores significativamente superiores a 90% ou inferior a -90%. A razão é que o padrão #2 também tem a incrível vantagem de permitir que os traders capturem uma tendência desde o seu início. Aparentemente, precisamos de alguns sinais de entrada adicionais. Podemos procurá-los usando a Ação do Preço.

Além disso, é aconselhável não negociar esse padrão se ele for formado por notícias fundamentais recém-chegadas. Em vez disso, é mais confiável usar o padrão na tendência já formada, pois ele pode sugerir a sua finalização.

Como exemplo, podemos usar o histórico de preços de CHF durante o evento "cisne negro" em meados de janeiro de 2015. O monitoramento do histórico é anexado em arquivos CSV (MS Excel). Os nomes dos arquivos correspondem à data e hora de início da monitoração. Os arquivos contêm quatro colunas de dados:

Tempo de monitoramento Leituras do indicador H1 Leituras do indicador H4 Leituras do indicador D1
... ... ... ...
12:51:32 99.16 99.17 99.17
12:51:34 98.85 98.87 98.88
... ... ... ...

Lá você pode ver como os dados do menor timeframe mudam em comparação com os maiores e como as leituras de indicadores quase alcançam as fronteiras de intervalo, divergindo e se aproximando novamente. Qualquer um que se atreveu a entrar no mercado em tal momento, certamente obterá uma stop loss rápido.

Claro, é possível encontrar exemplos contrastantes nos gráficos quando uma entrada dinâmica traz um lucro considerável. No entanto, a grande probabilidade de falha torna o padrão #2 muito arriscado. Portanto, eu não recomendo também.


Entrada no fechamento da barra. Padrão #3

Um trader recebe um sinal de entrada em todos os pares de moeda de uma cesta, se o nível de sobrecompra é cruzado para baixo ou um sobrevendido é cruzado para cima pelo WPR combinado, após a candle do período atual ser fechada.

Este método de entrada no mercado é amplamente conhecido para certos pares de moedas. No entanto, se tivermos em mente que os indicadores combinados herdam as propriedades dos pais, conforme especificado no artigo anterior, a entrada no avanço dos níveis de sobrevenda/sobrecompra pode ser considerada válida quando se lida com cestas de pares de moeda também. Além disso, uma vez que um avanço de nível segue a inversão do indicador perto das margens da variação (o que implica a presença de algum movimento, embora curto), a entrada segue a tendência. A principal condição do padrão #3 é identificar uma tendência, após a candle de tempo atual for fechada.

A entrada em si é executada de forma padrão. Os traders podem seguir o mercado ou usar ordens de limite. No entanto, no segundo caso, a entrada pode não ocorrer em todos os pares de moeda. Isso pode, por sua vez, levar a uma perda global para a operação inteira de compra/venda da cesta. Vamos ilustrar isso usando o exemplo a seguir.

Um trader entra no mercado com todos os pares de moedas da cesta, tendo em mente que nem todos os pares podem eventualmente ser rentáveis. Alguns pares podem mostrar um resultado zero, enquanto alguns podem estar perdendo se a notícia local vir a ser principalmente negativa. Suponha que o gráfico EURJPY está num mercado de baixa por muito tempo já, devido a problemas na área do euro e estatísticas ruins. Assim, a linha combinada de WPR para as cestas de EUR vão para baixo e começam a se aproximar do limite da variação. Neste momento, o sentimento do mercado muda, as estatísticas tornam-se mais favoráveis e a confiança dos investidores é restabelecida. O movimento EURJPY torna-se plana e o movimento de alta parece inevitável. A linha combinada do WPR inverte e cruza a linha de sobrevenda. O trader segue o sinal e entra no mercado comprando a cesta de EUR. Mas por alguma razão, o gráfico de EURJPY ainda permanece lateral e inclina-se em direção a um mercado de baixa novamente.

Por que? Porque as boas notícias sobre o EUR foram seguidas pelas boas notícias sobre o JPY. Portanto, os investidores começaram a comprar JPY empurrando-o para cima também (pode ser ainda mais rápido do que EUR), daí o movimento pode ser lateral e até mesmo de baixa. Assim, as expectativas do trader a respeito deste par acabaram por estar erradas. Mas a cesta tem outros pares sem estatísticas frescas para eles em tudo. Eles renderam lucro. Mas se o trader usou ordens limite para comprar a cesta EUR, a situação pode ter se revelado ainda menos favorável, uma vez que nem todos os pares de moedas poderiam ter sido desencadeadas durante a entrada. Além disso, apenas um par (EURJPY) poderia ter sido provocado a todos causando uma perda.

Vamos considerar um exemplo da prática real. Vamos usar o mesmo par EURJPY e lançar o testWPR.mq5, indicador do teste em H1:

//+------------------------------------------------------------------+
//|                                                      testWPR.mq5 |
//|                                        MetaQuotes Software Corp. |
//|                                               http://fxstill.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 1
#property indicator_plots   1

input int     WPR=14;                    //Períddo WRP
input color   clr= clrBlue;

#define LG 7
string pair[]={"EURUSD","EURJPY","EURCHF","EURGBP","EURNZD","EURCAD","EURAUD"};
int h[LG];

double ind[];
//+------------------------------------------------------------------+
//|Função de inicialização do indicador personalizado                |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- mapeamento de buffers do indicador
   for(int i=0; i<LG; i++)
     {
      h[i]=iWPR(pair[i],0,WPR);
     }
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);

   IndicatorSetString(INDICATOR_SHORTNAME,"testWPR");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPR_");

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetValue(int shift)
  {
   double dBuf[1];
   double res=0.0;
   for(int i=0; i<LG; i++)
     {
      CopyBuffer(h[i],0,shift,1,dBuf);
      res+=dBuf[0];
     }//end for (int i = 0; i < iCount; i++)      
   res=res/LG;
   return (NormalizeDouble((res + 50) * 2, _Digits) );
  }
//+------------------------------------------------------------------+
//| Função de interação de indicador personalizado                   |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
     }
   else
     {
     }
//--- Valor retornado do prev_calculated para a próxima chamada
   return(rates_total);
  }
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
   for(int i=0; i<LG; i++)
     {
      if(h[i]!=INVALID_HANDLE) IndicatorRelease(h[i]);
     }
   string text;
   switch(reason)
     {
      case REASON_PROGRAM:
         text="O indicador terminou sua operação chamando a função ExpertRemove()";break;
      case REASON_INITFAILED:
         text="Este valor significar que o manipulador OnInit() "+__FILE__+" retornou um valor diferente de zero";break;
      case REASON_CLOSE:
         text="Terminal foi encerrado"; break;
      case REASON_ACCOUNT:
         text="conta foi alterada";break;
      case REASON_CHARTCHANGE:
         text="Símbolo ou timeframe foi alterado";break;
      case REASON_CHARTCLOSE:
         text="Gráfico foi encerrado";break;
      case REASON_PARAMETERS:
         text="Parâmetro de entrada foi alterado";break;
      case REASON_RECOMPILE:
         text="Programa "+__FILE__+" foi recompilado";break;
      case REASON_REMOVE:
         text="Programa "+__FILE__+" foi removido do gráfico";break;
      case REASON_TEMPLATE:
         text="Novo modelo foi aplicado ao gráfico";break;
      default:text="Outro motivo";
     }
   PrintFormat("%s",text);
  }
//+------------------------------------------------------------------+

Uma vez que o intervalo do WPR combinado é de -100% a 100%, o nível de sobrecompra está localizado a 60%, em vez do WPR-20%. Assim, o nível de sobrevenda está em -60%, em vez de -80%. Tendo isso em mente, vamos marcar esses níveis no gráfico dos indicadores.

Devemos analisar o ponto de passagem dos níveis de sobrecompra/sobrevenda. Até o momento da escrita deste texto, ele está localizado no fechamento de uma candle de três horas 17.10.2016 em H1: 


Vamos supor que entramos no mercado naquele momento. Deveríamos definir o ponto de saída com antecedência. Vamos sair do mercado quando o valor indicador se aproxima ou toca o nível zero, independentemente dos resultados das negociações. Este momento virá às sete horas da manhã do mesmo dia. Vamos marcar os dois pontos com linhas verticais. As capturas de tela para outros pares de moedas no cesto EUR podem ser encontradas no arquivo anexado abaixo com as linhas já marcadas. Observe que EURNZD mostra o resultado negativo, EURGBP mostra aproximadamente o zero um, enquanto os restantes dos cinco pares são rentáveis.

No entanto, há uma questão de saber se os níveis de sobrevenda e sobrecompra estão corretos. Ao comparar os gráficos de indicadores Estocásticos padrão e combinado no artigo anterior, ficou claro que o combinado é mais suave. A mesma coisa pode ser vista ao comparar o WPR padrão e o combinado (veja a imagem abaixo):

Aqui temos os gráficos dos WPRs combinados (linha azul espessa) e padrão (linha azul fina).

Será que os valores dos níveis de sobrecompra/sobrevenda dos indicadores combinados permanecerão inalterados em comparação com os de origem? Para responder a esta pergunta, precisamos realizar uma extensa pesquisa para encontrar algumas provas concretas. Dentro dos quadros do presente artigo, só podemos fazer estimativas muito ásperas (principalmente visuais). Para evitar julgamentos subjetivos, parece inadequado dar opiniões pessoais sobre este assunto aqui.

Há mais uma pergunta sobre esse padrão (e alguns outros). Quais são as condições de saída do mercado? Podemos oferecer duas respostas para esta pergunta:

  1. Sair do mercado em diferentes pares de moedas de forma independente de acordo com as regras da Ação do Preço. Isto permite que você use ferramentas já familiares e o trailing stop. Mas isso é arriscado, uma vez que a cesta não pode ser fechada completamente e as ordens abertas podem finalmente causar perdas superiores ao lucro obtido. Naturalmente, um trader é o único responsável em evitar isso.
  2. Saia do mercado de todos os pares de uma vez, de acordo com as leituras do indicador. Por exemplo, um trader pode comprar uma cesta depois que o nível de sobrecompra (-60%) é cruzado e vendê-la quando o indicador atinge zero (ou -10%). Neste caso, a cesta está completamente fechada, embora nem todos os lucros esperados possam ser recebidos.

Vamos resumir os resultados da análise do padrão #3:

  1. O padrão pode ser aplicado na negociação. Ele é definido após o fechamento da candle e identificado por níveis. Cruzar esses níveis serve como possível sinal de entrada.
  2. O padrão não tem muitas regras de entrada e saída estritamente definidas. No entanto, a presença dos níveis de sobrevenda e de sobrecompra que definem o sinal de entrada no mercado são inquestionáveis.
  3. O padrão permite um rebaixamento significativo.
  4. O padrão não considera a existência de uma segunda moeda em cada par. Este é o inconveniente mais significativo que pode causar longos rebaixamentos, bem como perdas.
  5. Há também outra desvantagem que é implícita, mas não menos significativa. Como mencionamos anteriormente, podemos esperar resultados negativos, zeros e positivos ao lidar com cestas de pares de moedas. Os traders recebem lucro porque o status do par de uma cesta mostra a direção mais promissora, aumentando a probabilidade de alcançar um resultado positivo na maioria dos pares dentro da cesta. Nesta fase, os resultados de negociação podem ser negativamente afetados por trocas, comissões e diferentes preços pontuais de vários pares de moedas.

Somos capazes de melhorar a eficiência padrão, reduzir os levantamentos e aumentar a rentabilidade? Acontece que somos: vamos passar para o próximo padrão.

Entrada no momento que uma moeda está se fortalecendo, enquanto outro está enfraquecendo. Padrão #4

Ao contrário do padrão anterior, este leva em conta duas moedas para formar o preço.

Por exemplo, o preço pode mover-se para baixo em três casos no EURJPY:

  • A primeira moeda torna-se mais forte - EUR. Isto refere-se ao já descrito padrão #3 com todas as suas desvantagens e benefícios.
  • A segunda moeda torna-se mais fraca - JPY. Isto também se relaciona com o padrão #3.
  • O EUR está se fortalecendo e o JPY está enfraquecendo simultaneamente. Este evento aumenta a probabilidade de uma reversão e se move numa direção favorável. A probabilidade aumenta enquanto as moedas estão em um processo de fortalecimento e enfraquecimento.

O padrão #4 fornece um sinal de entrada no mercado que define a situação descrita no terceiro ponto. Isso ocorre da seguinte maneira.

Cada par é composto por duas moedas que potencialmente pertencentes a duas cestas diferentes. Por exemplo, o EURJPY pode ser analisado utilizando os dois indicadores combinados, um deles baseado no EUR, enquanto outro baseia-se no JPY. Assim, é possível gerenciar o fortalecimento/enfraquecimento de cada uma das duas moedas. Além disso, é possível identificar o padrão #3 também, embora o #4 seja o mais importante.

Ele é identificado através da análise do gráfico de uma diferença entre as leituras de indicadores combinados para uma moeda base e uma moeda de cotação. Embora esta diferença permaneça aproximadamente 0%, o mercado é lateral, uma vez que ambas as moedas que formam o par são de potências aproximadamente iguais. Os investidores confiam em ambas as moedas, a notícia é na maior parte neutra e não há nenhum movimento ríspido. Portanto, o indicador combinado fornece valores semelhantes para cada moeda, e a diferença entre eles é pequena. Parece razoável não entrar no mercado neste momento.

Mas a situação começa a mudar. O JPY está se tornando mais forte, enquanto o EUR está enfraquecendo. Isso continua por um certo tempo, o que significa que esta é uma tendência ao invés de um movimento único. Um trader percebe que as leituras dos indicadores combinados estão mudando. As leituras do EUR estão se movendo gradualmente para uma área negativa, aproximando-se das bordas da variação. JPY está mostrando o movimento oposto. O gráfico do EURJPY está inclinando-se para vender. Agora, o trader examina o gráfico da diferença entre os indicadores combinados para EUR e JPY. Ele mve-se para baixo visando seu valor mínimo de -200%.

No caso de um movimento oposto, o valor máximo é de 200%. Eu acredito, é claro agora por que precisamos alterar a variação combinada do WPR para que ele mude de 100% para -100% que eu mencionei no início do artigo. Isso nos permite colocar os gráficos dos indicadores combinados e a diferença entre eles numa única janela. A fim de se livrar do valor "inelegante" de 200%, a diferença entre os dois indicadores combinados deve ser dividido pela metade, trazendo-o para 100%.

Assim, o trader recebe um sinal de entrada quando a diferença entre as leituras dos indicadores combinados atinge um certo valor. Mais especificamente, o trader espera até que o gráfico de diferença se aproxime de uma das bordas da variação, inverte e quebra a linha de sobrevenda para baixo ou a linha de sobrecompra para cima. A descoberta deve ser assumida para ocorrer num fechamento de uma candle. Em outras palavras, a estratégia é semelhante à do padrão #3, embora com algumas diferenças:

  • Dois indicadores combinados definem o status de cada moeda com um par para fazer a decisão de uma negociação aumentar sua potencial rentabilidade.
  • A entrada no mercado é realizada num único par dentro da cesta (não todos). Assim, conseguimos reduzir o rebaixamento.

Vamos examinar usando o padrão #4 na prática. Para fazer isso, devemos criar mais um indicador para a cesta JPY. Vamos desenvolvê-la da mesma maneira como o testWPR. A lista do par de moedas do cesto JPY deve ser retirada do artigo anterior. Como o código do indicador é semelhante ao testWPR, não há nenhum necessidade de mostrá-lo aqui. O código do indicador compilado é anexado ao artigo. Nós só precisamos mudar a cor do indicador para vermelho e colocá-lo no EURJPY para a mesma janela onde o testWPR já está presente. O resultado é mostrado abaixo: 

Pontos de interesse são anotados por linhas verticais. Mesmo um pequeno fragmento permite ver a correlação entre o gráfico de preços e a diferença entre os indicadores (a distância entre as moedas mais fracas e mais fortes).

No entanto, é difícil rastrear a diferença desejada em tal gráfico. Vamos escrever mais um indicador teste testDistance.mq5:

//+------------------------------------------------------------------+
//|                                                 testDistance.mq5 |
//|                                   2016 MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 1
#property indicator_plots   1

input int WPR = 14;//Period WPR
input color   clr= clrGreen;

double ind[];
//+------------------------------------------------------------------+
//| Função de inicialização de indicador personalizado               |
//+------------------------------------------------------------------+
int h,h1;
int OnInit()
  {
//--- mapeamento de buffers do indicador
      h = iCustom(NULL,0,"testWPR",WPR);
      if (h == INVALID_HANDLE) {
         Print("Erro ao criar testWPR");
         return (INIT_FAILED);
      }
      h1 = iCustom(NULL,0,"testWPRjpy",WPR);
      if (h1 == INVALID_HANDLE) {
         Print("Erro ao criar testWPRjpy");
         return (INIT_FAILED);
      }  
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);        
  
   IndicatorSetString(INDICATOR_SHORTNAME,"testWPRdistance");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPRdistance_");    
//---
   return(INIT_SUCCEEDED);
  }
  
double GetValue(int shift)
  {
   double dBuf[1], dBuf1[1];
   double res=0.0;
   CopyBuffer(h,0,shift,1,dBuf);
   CopyBuffer(h1,0,shift,1,dBuf1);
   return (NormalizeDouble((dBuf[0] - dBuf1[0])/2, _Digits) );
  }  
//+------------------------------------------------------------------+
//| Função de interação de indicador personalizado                   |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
     }
   else
     {
     }
//--- Valor retornado do prev_calculated para a próxima chamada
   return(rates_total);
  }
void OnDeinit(const int reason)
  {
   IndicatorRelease(h);
   IndicatorRelease(h1);

  }
//+------------------------------------------------------------------+

Coloque-o numa janela separada no EURJPY e examine a área previamente marcada:


A diferença entre os dois WPRs combinados para EUR e JPY é mostrada com uma linha verde. Seria interessante examinar como a diferença entre uma moeda forte e uma moeda fraca está relacionada com a tendência atual e suas reversões. Aqui também podemos falar sobre as áres de sobrecompra/sobrevenda, bem como sobre a identificação do padrão #4 numa candle de fechamento após as áreas serem cruzadas (ver a última imagem). Neste caso, se um trader tivesse entrado no mercado em 21 de outubro (às 11:00), eles teriam sido capazes de capturar o início da tendência que não terminou até agora (1 de novembro). 

Assim, trabalhar com o padrão #4 na fase de implementação é semelhante ao trabalhar com uma ordem comum ao invés de uma cesta de ordens como no caso do Padrão #3. Portanto, podemos esperar uma redução significativa no rebaixamento. Também podemos esperar um aumento no número de negociações rentáveis (mas não em seu número total) desde que o padrão #4 aumente a probabilidade de lucro. Tenha em mente que podemos aplicar o trailing stop e usar outras ferramentas que estamos acostumados, uma vez que há apenas uma ordem e pode ser seguido o caminho usual.

O padrão #4 pode também ser potencialmente aplicado como um filtro em conjunto com o padrão #3. A entrada no mercado pode ser realizada em todos os pares da cesta de acordo com o padrão #3, enquanto o filtro baseado no padrão #4 é capaz de resolver alguns deles. Assim, é possível aproximar a rentabilidade total do terceiro padrão em vários pares, mantendo as vantagens da quarta. No entanto, esta é apenas a minha teoria. Eu não testei a combinação dos padrões na negociação real.

Agora, vamos descrever situações quando o padrão #4 dá sinais falsos. Trata-se de situações bastante claras quando o movimento do indicador combinado com as bordas da variação e as reversões subseqüentes ocorrem à custa de outros pares de moedas, enquanto o par, no qual um trader está prestes a entrar no mercado, permanece imóvel. Devemos entender que uma cesta contém vários pares e o indicador combinado mostra um valor médio. Eventos locais podem afetar negativamente o par, no qual um trader usou pra entrar no mercado. Já mencionei isso ao descrever o padrão #3. Isso também é verdade para o padrão #4, embora a probabilidade é muito menor.

Vamos resumir nossos dados sobre o padrão #4.

Vantagens:

  1. Maior probabilidade de lucro.
  2. Redução de perda.
  3. É provável que o lucro planejado seja alcançado em menos tempo. Talvez, esta não seja uma vantagem inteiramente separada, mas sim um complemento ao primeiro. 
  4. Os traders não têm que lidar com uma cesta de ordens, em vez disso, eles negociam uma única ordem. Portanto, rastrear uma negociação é simples. 

Desvantagens:

  1. As condições adequadas para a identificação do padrão #4 não são muito comuns.
  2. Menor lucro total, uma vez que apenas uma única ordem é rentável. 

Vamos tentar reduzir os efeitos negativos das desvantagens do quarto padrão. Para fazer isso, devemos definir se existem maneiras de aumentar o número de negociações quando uma moeda é severamente enfraquecida, enquanto outra é muito forte, além de usar o padrão #4. Talvez, haja outra maneira de entrar no mercado, além do avanço dos níveis de sobrecompra/sobrevenda:

Entrada considerando a média móvel. Padrão #5

A média móvel é um método reconhecido e respeitado de análise de mercado. Muitos indicadores e EAs os usam em seus cálculos. Assumimos que os níveis de sobrecompra/sobrevenda funcionam no WPR combinado. O mesmo é verdadeiro para a diferença entre os dois WPRs combinados. Portanto, nada nos impede de adicionar uma média móvel para os indicadores gráficos também.

Obviamente, podemos adicioná-la ao terceiro e quarto gráficos de detecção de padrões. Eu acredito que não há nenhum ponto em descrever a idéia atrás da média móvel. Suas vantagens e desvantagens (incluindo sua natureza retardada) são bem conhecidas também. Levando em conta tudo isso, podemos analisar os resultados ao colocar a média móvel nos gráficos afim de encontrar o padrão #5:

Um trader recebe um sinal de entrada quando o indicador gráfico cruza a média móvel. Supõe-se que este evento tenha acontecido quando a candle do período atual é fechada.

Esses cruzamentos são bastante freqüentes, especialmente se usarmos o MA rápido, portanto, o número de negociações aumenta. A partir de agora, vamos analisar o MA localizado no quarto gráfico de detecção de padrão. Os leitores podem analisar a aplicação do MA sobre a detecção de um terceiro padrão.

Você pode perguntar: É correto chamar a aplicação do MA um padrão separado? Não é apenas um filtro adicional para o padrão #4? Não, é um padrão separado. Às vezes, os níveis de sobrecompra/sobreventa são quebrados quase simultaneamente com o indicador gráfico cruzando o MA. Neste caso, os padrões #4 e #5 reforçam uns aos outros tornando impossível definir "o mais importante" deles. Em outros casos, o padrão # 4é um padrão independente que não tem nada a ver com o gráfico que atravessa o MA (padrão #5).

De qualquer forma, vamos introduzir algumas regras:

  • Se o padrão #5 "precede" o padrão #4 (isto é, é identificado entre o limite de intervalo e um nível de sobrevenda/sobrecompra), não é negociado.
  • Em outros casos, uma decisão de entrada no mercado é feita independentemente se o padrão #4 preceder o padrão #5 ou não.

A segunda regra deve ser examinada mais detalhadamente. Para analisar possíveis situações com o padrão #5, devemos criar um novo indicador (o último deste artigo):

//+------------------------------------------------------------------+
//|                                                 testDistance.mq5 |
//|                                   2016 MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#property indicator_buffers 2
#property indicator_plots   2

input int WPR       = 14; //Período do WPR
input int maperiod  = 10; //Período do MA
input color   clr   = clrGreen;
input color   clrMA = clrMagenta;


double ind[],ma[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado               |
//+------------------------------------------------------------------+
int h,h1;
int OnInit()
  {
//--- mapeamento de buffers do indicador
      h = iCustom(NULL,0,"testWPR",WPR);
      if (h == INVALID_HANDLE) {
         Print("Erro ao criar testWPR");
         return (INIT_FAILED);
      }
      h1 = iCustom(NULL,0,"testWPRjpy",WPR);
      if (h1 == INVALID_HANDLE) {
         Print("Erro ao criar testWPRjpy");
         return (INIT_FAILED);
      }  
   ArraySetAsSeries(ind,true);
   SetIndexBuffer(0,ind);        
  
   IndicatorSetString(INDICATOR_SHORTNAME,"testWPRdistance");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrRed);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,-60);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,60);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clr);
   PlotIndexSetString(0,PLOT_LABEL,"_tstWPRdistance_");    
  
   ArraySetAsSeries(ma,true);  
   SetIndexBuffer(1,ma);
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_LINE           );
   PlotIndexSetInteger(1, PLOT_LINE_STYLE, STYLE_SOLID            );
   PlotIndexSetInteger(1, PLOT_LINE_WIDTH, 1            );
   PlotIndexSetInteger(1, PLOT_LINE_COLOR, clrMA            );
   PlotIndexSetString (1, PLOT_LABEL, "Middle_Basket_line_MA" );    
//---
   return(INIT_SUCCEEDED);
  }
  
double GetValue(int shift)
  {
   double dBuf[1], dBuf1[1];
   double res=0.0;
   CopyBuffer(h,0,shift,1,dBuf);
   CopyBuffer(h1,0,shift,1,dBuf1);
   return (NormalizeDouble((dBuf[0] - dBuf1[0])/2, _Digits) );
  }  
//+------------------------------------------------------------------+
//| Função de interação de indicador personalizado                   |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0 || rates_total>prev_calculated+1)
     {
      int rt=rates_total-WPR;//-maperiod;
  
      for(int i=1; i<rt; i++)
        {
         ind[i]= GetValue(i);
        }
      rt -= maperiod;  
      for (int i = 1; i< rt; i++)
        {
         ma[i] = GetMA(ind, i, maperiod, _Digits);
        }
     }
   else
     {
     }
//--- retornar valor do prev_calculated para a próxima chamada
   return(rates_total);
  }
void OnDeinit(const int reason)
  {
   IndicatorRelease(h);
   IndicatorRelease(h1);
   string text;
   switch(reason)
     {
      case REASON_PROGRAM:
         text="O indicador terminou sua operação chamando a função ExpertRemove()";break;
      case REASON_INITFAILED:
         text="Este valor significa que o manipulador OnInit() "+__FILE__+" retornou um valor diferente de zero";break;
      case REASON_CLOSE:
         text="Terminal foi encerrado"; break;
      case REASON_ACCOUNT:
         text="Conta foi alterada";break;
      case REASON_CHARTCHANGE:
         text="Símbolo ou timeframe foi alterado";break;
      case REASON_CHARTCLOSE:
         text="Gráfico foi encerrado";break;
      case REASON_PARAMETERS:
         text="Parâmetro de entrada foi alterado";break;
      case REASON_RECOMPILE:
         text="Programa "+__FILE__+" foi recompilado";break;
      case REASON_REMOVE:
         text="Programa "+__FILE__+" foi removido do gráfico";break;
      case REASON_TEMPLATE:
         text="Novo modelo foi aplicado ao gráfico";break;
      default:text="Outro motivo";
     }
   PrintFormat("%s",text);
  }
//+------------------------------------------------------------------+

double GetMA(const double& arr[], int index , int period, int digit) {
   double m = 0;
   for (int j = 0; j < period; j++)  m += arr[index + j];
   m /= period;
   return (NormalizeDouble(m,digit));
}

Vamos colocar o indicador nos mesmos símbolos. Os resultados são fornecidos abaixo:


Aqui, a média móvel é mostrada como uma fina linha vermelho escuro. Alguns segmentos que podem ser identificados como os que contêm o padrão #5 são marcados por linhas verticais. As linhas azuis esperam pelo sinal de compra, enquanto as vermelhas marcam um sinal da venda. Podemos facilmente ver que em alguns pontos onde o gráfico de diferença cruza o MA não são marcados. Vamos explicar isso mantendo as regras introduzidas anteriormente em mente.

Devemos dividir toda a faixa de indicadores em várias áreas e definir as regras finais para o padrão #5:

  • Se o cruzamento do MA/indicador gráfico ocorrem em algum ponto entre a borda do indicador e a área de sobrevenda/sobrecomprada, o sinal é ignorado. Estes pontos são a Zona #0 (zonas de zero). Existem duas dessas zonas (consulte a captura de tela).
  • Como já mencionei, os padrões #4 e 5 podem ocorrer simultaneamente reforçando uns aos outros. Se um trader identifica o padrão #4 (ou #4 e 5) e entra no mercado, eles devem considerar ignorar todos os padrões subseqüentes do #5 até sair do mercado usando o padrão #4.
  • Ao longo do tempo, uma moeda forte pode enfraquecer, enquanto uma fraca pode crescer mais forte, ou o fraco pode continuar a enfraquecer enquanto o forte pode começar a mover para baixo também, ou ambas as moedas podem começar a crescer mais forte. Em qualquer caso, o indicador gráfico começará a se afastar das margens da faixa e dos níveis de sobrecompra/sobrevenda. O gráfico se moverá para o valor zero do indicador, significando que cada moeda corrente é grosseiramente igual. Assim, a tendência atual está chegando ao fim, transformando-se num plano que pode se transformar numa inversão e o ciclo será repetido. Este é um sinal de saída do mercado. Permanecer no mercado quando os poderes das duas moedas se tornam aproximadamente iguais é perigoso, uma vez que a probabilidade de uma reversão é alta. Vamos chamar a zona zero da Zona #3. Você pode definir suas bordas por conta própria, embora eu prefira o intervalo entre 10% e -10%. Todos os padrões #5 são ignorados lá, enquanto os negócios previamente abertos são considerados a serem fechados (pelo menos parcialmente) ou movido para um empate.
  • Somente duas zonas são adequadas para negociação ao usar o padrão #5:
    • Zona #1 para compra. As negociações apropriadas são mostradas como as linhas verticais azuis na última captura de tela. Quanto mais próximo o padrão #5 é para a fronteira entre as zonas #1 e 0, maior a probabilidade de que a negociação do padrão gere lucro.
    • Zona #2 para vender. Os negócios apropriados são mostrados como as linhas verticais vermelhas na última captura de tela. Quanto mais próximo estiver o padrão do limite superior da zona #2, maior a probabilidade de lucro.

    Regra geral importante: Os padrões de compra #5, formados dentro da zona #2, são ignorados. Os padrões de venda #5 são formados dentro da zona #1 também são ignorados.

O padrão #5 tem o mesmo problema que o padrão #4:

  • Pode ocorrer no par diferente do que o trader irá usar para entrar no mercado. Em outras palavras, o risco de um resultado negativo permanece, embora tenhamos considerado todas as formas possíveis de minimizá-lo.

Algumas considerações gerais

Todos os padrões descritos têm uma coisa em comum: o nível de sobrecompra/sobrevenda avançado ocorre após a candle do timeframe atual ser fechada. Suponha que queremos corrigir um avanço do nível de supercompra. O nível está localizado a 60% na janela do WPR combinada. O gráfico sobe para 61,5%, mas depois cai chegando a 59% no fechamento da candle. Devemos considerar isso como um avanço ou não? Tecnicamente, as condições são atendidas. Mas esse padrão microscópico vale a pena negociar?

Outra situação que ocorre mais frequentemente do que você poderia esperar: uma candle com um grande corpo é formado, e o valor do indicador no fechamento da candle está no nível zero ou mesmo perto da fronteira oposta da faixa. Novamente, o avanço está tecnicamente presente, mas o padrão vale a pena negociar?

Eu acredito, que devemos negociar apenas padrões claramente visíveis, não causando dúvidas. Isto é semelhante à regra aplicada ao traçar linhas de suporte/resistência: as linhas devem ser claras e indiscutíveis. Falando do caso anterior, o avanço do nível de sobrecompra teria sido considerado como tendo ocorrido se o valor do indicador tivesse diminuído para os níveis de 45-55% de 70% ou mais. Além disso, há uma possibilidade de mover-se para a zona zero, onde você pode fechar sua posição ou fazer alguma outra decisão negociando.

O mesmo é verdadeiro para o MA, que cruza o gráfico do indicador. Tal cruzamento deve ocorrer na zona necessária, ser claro e perceptível, pode-se até dizer "bonito". Se o indicador gráfico começar a se mover próximo ao MA, cruzando-o superficialmente, em seguida, na outra direção, considere ignorar esse padrão.

Em outras palavras, padrões incertos e controversos devem ser considerados como de alto risco e ignorados. Enfim, esta é a opinião pessoal do autor, refletindo sua opinião sobre o mercado. Assim, não pode ser considerado como um axioma.


Conclusão

Tudo o que foi escrito aqui, usando o exemplo do indicador WPR combinado também, é verdadeiro para outros indicadores combinados e baseados em osciladores. Isso nos fornece níveis de sobrecompra/sobrevenda claros, mantendo as limitações do oscilador, o que significa que pode haver outras ferramentas interessantes que podem ser aplicadas as trocas de cestas de moedas.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/2816

Arquivos anexados |
monitor.zip (855.82 KB)
pattern3.zip (137.12 KB)
testWPR.zip (15.36 KB)
testWPRjpy.ex5 (14.86 KB)
testDistance.zip (13.37 KB)
testDistanceMA.zip (16.56 KB)
Exemplo de desenvolvimento de uma estratégia de spread nos futuros da MICEX-RTS Exemplo de desenvolvimento de uma estratégia de spread nos futuros da MICEX-RTS
A MetaTrader 5 permite desenvolver e testar robôs que negociam simultaneamente em vários instrumentos. O testador de estratégia embutido na plataforma baixa automaticamente - a partir do servidor de negociação da corretora - o histórico de ticks e leva em conta as especificações do contrato, assim, o desenvolvedor não precisa fazer nada com suas mãos. Isto torna possível reproduzir com facilidade e confiança todas as condições do ambiente de negociação, até intervalos de milissegundos entre o surgimento de ticks em símbolos diferentes. Neste artigo, vamos mostrar como desenvolver e testar estratégias de spread em dois futuros da Bolsa de Valores de Moscou (MICEX-RTS).
Três Aspectos Sobre Automação da Negociação Manual. Parte 1: Negociação Três Aspectos Sobre Automação da Negociação Manual. Parte 1: Negociação
Este artigo é o primeiro de uma série de artigos sobre automação da negociação manual na plataforma МetaТrader 4. Cada artigo será dedicado a um dos seguintes aspectos: automação da negociação manual, atual estado da exibição da automação da negociação e automação dos relatórios sobre os resultados da negociação. Neste artigo, vou apresentar uma abordagem interessante para a criação de EAs controlados manualmente por um trader.
Incorpore o terminal web MetaTrader 4/5 em seus sites, já que é gratuito e permite ganhar dinheiro Incorpore o terminal web MetaTrader 4/5 em seus sites, já que é gratuito e permite ganhar dinheiro
Os traders estão bem familiarizados com o terminal web, ele permite negociar nos mercados financeiros diretamente desde o navegador da web. E gostaríamos de oferecer colocá-lo em seu site, uma vez que é totalmente gratuito. Você tem clientes, as corretoras estão interessadas em novas iniciativas, nós, por sua vez, temos uma solução web pronta. E para que tudo corra bem, é necessário apenas incorporar um iframe em seu site.
Interfaces Gráficas X: Caixa de Edição de Texto, Slider de Imagens e Controles Simples (build 5) Interfaces Gráficas X: Caixa de Edição de Texto, Slider de Imagens e Controles Simples (build 5)
Este artigo irá considerar novos controles: A Caixa de Edição de Texto, o Slider de Imagem, bem como os controles simples adicionais: Rótulo de Texto e Imagem. A biblioteca continua a crescer, e, além da introdução de novos controles, aqueles que foram criados anteriormente também estão sendo melhorados.