English Русский 中文 Español Deutsch 日本語
Trabalhando com cesta de moedas no mercado Forex

Trabalhando com cesta de moedas no mercado Forex

MetaTrader 4Negociação | 14 outubro 2016, 10:18
2 099 0
Andrei Novichkov
Andrei Novichkov

Introdução

Todos os dias lemos muitas notícias financeiras do mercado global, contendo frases como "O dólar enfraqueceu em relação às principais moedas...", isto significa que o status de uma moeda mudou em relação a um grupo de outras moedas. O uso constante de tais construções verbais geram a necessidade de organizar uma lista inteira de pares de moedas, dividindo-as em grupos e subgrupos.

Os materiais dedicados a vários métodos de símbolos divididos em grupos ou "cestas" não são incomuns em vários fóruns de negociação. A divisão de pares de moedas por "cestas" é feito para uma análise com precisão do comportamento do conjunto dos símbolos adjacentes a outras "cestas". Supõe-se que estes pares de moeda normalmente se comportam de maneira semelhante e formam valores extremos, aproximadamente ao mesmo tempo com movimento principal na mesma direção. Tal grupo de símbolos,(ou "cesta"), é representado como um par de moeda com média virtual que pode ser devidamente analisada.

Princípios e definições

Toda a ideia é baseada no reagrupamento por atributos importantes aos traders. Alguns atributos deste tipo são bem conhecidos por todos, por exemplo a correlação entre os preços do petróleo e da taxa de rublo ou correlação entre o EURUSD e USDCHF. Portanto, podemos combiná-los dentro de um grupo (cesta de moedas). Após definir o conteúdo da cesta, podemos planejar possíveis ações com ela, incluindo ações que afetam todos os pares simultaneamente dentro dela (no nosso caso são o EURUSD e o USDCHF). Em ambos os casos, podemos controlar o comportamento dos pares e realizar operações de negociação.

Comprar ou vender uma cesta de moedas envolve operações de negociações simultâneas com cada moeda dentro dela. Neste caso, um cesta com ordens baseada em direções opostas é composta a princípio em "um par de moeda — uma ordem". As condições pelas quais as operações de negociação são realizadas caracterizam o status da cesta de moedas.

Por ter um princípio natural e óbvio, o agrupamento dos pares de moedas podem ser aplicados em trabalhos futuros. Todos os vinte e oito principais pares de moeda são divididos em cestas de acordo com as suas moedas base (ou moedas cotadas) que devem estar presentes em cada par. Uma cesta é denominado de acordo com uma moeda base (ver um exemplo na Tabela 1). Neste caso, o status da cesta é definido pelo status da moeda base. Os parâmetros do status incluem o estado de compra/venda e outros atributos semelhantes. Eles são fornecidos pelos mesmos meios de análise técnica que usamos para avaliar os pares de moedas comuns.

Principais cestas de moedas

Vamos dividir todo o conjunto de pares de moedas de acordo com o princípio declarado acima. Como resultado, temos oito cestas de moedas contendo sete pares de moedas cada uma:

 Número  Nome da cesta  Moeda da cesta  Pares de moedas da cesta
1
Cesta AUD
Cesta AUD
AUDUSD, AUDNZD, AUDJPY, AUDCAD, AUDCHF, EURAUD, GBPAUD
2
Cesta CAD
CAD
USDCAD, AUDCAD, NZDCAD, GBPCAD, EURCAD, CADCHF, CADJPY
3
Cesta CHF
CHF
CHFJPY, USDCHF, GBPCHF, EURCHF, AUDCHF, NZDCHF, CADCHF
4
Cesta EUR
EUR
EURUSD, EURJPY, EURCHF, EURGBP, EURNZD, EURCAD, EURAUD
5
Cesta GBP
GBP
EURGBP, GBPAUD, GBPCAD, GBPCHF, GBPJPY, GBPNZD, GBPUSD
6
Cesta JPY
JPY
AUDJPY, CADJPY, CHFJPY, EURJPY, GBPJPY, NZDJPY, USDJPY
7
Cesta NZD
NZD
NZDUSD, AUDNZD, NZDJPY, NZDCAD, NZDCHF, EURNZD, GBPNZD
8
Cesta USD
USD
EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, USDJPY

Tabela 1. Cesta de moedas

Agora que nós definimos o conteúdo das cestas, é hora de esclarecermos as principais operações de negociação com as mesmas. Vamos assumir que a compra e venda de uma cesta significa comprar e vender a sua moeda.

Supondo que notícias positivas sobre o yen chegaram a sugerir a seu possível fortalecimento. Um trader decide comprar o JPY De acordo com o nosso paradigma, o trader deverá aderir a uma operação VENDIDA, em todos os seus pares de moedas, para comprar a cesta JPY. Caso contrário, o trader deverá entrar numa operação comprada em todos os pares da cesta para vender a cesta JPY.

O caso não parece tão confuso ao lidar com a cesta EUR. Se o trader quer comprar a cesta EUR, ele entra numa operação comprada em todos os seus pares e vice-versa. Para a EUR e JPY, a cesta consiste em ordens unidirecionais.

Vamos organizar a tabela a seguir para evitar confusão com as operações de negociação:

Número Nome da cesta Operação de negociação com a cesta de moeda
Operação de negociação com os pares da cesta de moedas

1

Cesta AUD

 

AUDUSD AUDNZD AUDJPY AUDCAD AUDCHF EURAUD GBPAUD
VENDA venda venda venda venda venda compra compra
COMPRA compra compra compra compra compra venda venda

2

Cesta CAD

 

USDCAD AUDCAD NZDCAD GBPCAD EURCAD CADCHF CADJPY
VENDA compra compra compra compra compra venda venda
COMPRA venda venda venda venda venda compra compra

3

Cesta CHF

 

CHFJPY USDCHF GBPCHF EURCHF AUDCHF NZDCHF CADCHF
VENDA venda compra compra compra compra compra compra
COMPRA compra venda venda venda venda venda venda

4

Cesta EUR

 

EURUSD EURJPY EURCHF EURGBP EURNZD EURCAD EURAUD
VENDA venda venda venda venda venda venda venda
COMPRA compra compra compra compra compra compra compra

5

Cesta GBP

 

EURGBP GBPAUD GBPCAD GBPCHF GBPJPY GBPNZD GBPUSD
VENDA compra venda venda venda venda venda venda
COMPRA venda compra compra compra compra compra compra

6

Cesta JPY

 

AUDJPY CADJPY CHFJPY EURJPY GBPJPY NZDJPY USDJPY
VENDA compra compra compra compra compra compra compra
COMPRA venda venda venda venda venda venda venda

7

Cesta NZD

 

NZDUSD AUDNZD NZDJPY NZDCAD NZDCHF EURNZD GBPNZD
VENDA venda compra venda venda venda compra compra
COMPRA compra venda compra compra compra venda venda

8

Cesta USD

 

EURUSD GBPUSD AUDUSD NZDUSD USDCAD USDCHF USDJPY
VENDA compra compra compra compra venda venda venda
COMPRA venda venda venda venda compra compra compra

Tabela 2. Operações de negociação com as cestas

Status da cesta de moedas

Como devemos decidir sobre a realização de uma operação de negociação com uma cesta de moedas? Seria muito difícil fazê-lo com base unicamente no comportamento dos pares de moedas, devido ao tamanho das cestas. Precisamos de dados técnicos adicionais sobre os parâmetros de status da cesta de moeda. Vamos concentrar nossa atenção no gráfico do indicador RSI para os três pares de moedas da cesta GBP, nomeadas como GBPUSD, GBPJPY e GBPCHF. O gráfico D1 é exibido na imagem abaixo:


Como você pode ver, estes três gráficos têm muito em comum: muitos valores extremos estão localizados de forma semelhante, tanto para cima, quanto para baixo e seus intervalos também têm muito em comum. Essa semelhança pode ser explicada pela mesma cesta de moeda — a libra Britânica. Seu fortalecimento e enfraquecimento as conduzem para intervalos tanto para cima, quanto para baixo.

As diferenças em todos os três gráficos apresentados são em sua maioria explicadas pelo comportamento distintos das cotações da moeda. Neste caso, a influência deste comportamento diferente pode ser visto no valores "extra" das extremidades locais, vários gradientes de movimentos ascendentes e descendentes, assim como as alterações da direção local.

Se definirmos o comportamento do parâmetro em comum (compartilhado por todos os pares de uma cesta) e eliminar suas diferenças, vamos realizar o nosso objetivo principal — a visualização dos parâmetros. No exemplo atual o status de comprado/vendido do GBP é um parâmetro frequente da moeda, agindo como um "RSI unificado" e mostrando o status de uma única cesta de moedas em vez de um par.

Claramente, não devemos nos limitar somente ao RSI. Podem haver outros indicadores semelhantes fundamentando um padrão. Vamos chamá-los de "indicadores unificados".


Métodos para calcular os parâmetros de status da cesta de moeda

Com a finalidade de resolver a tarefa, será necessário considerar os já existentes e tentar agir de forma semelhante. A primeira coisa que vem à mente, refere-se ao índice do USD. Tal como no lembramos, o mesmo mostra o status do USD contra as seis principais moedas. Primeiramente, vamos analisar a equação do cálculo. Esta é uma média geométrica proporcional ao peso. Tentaremos aplicar este princípio, na nossa cesta USD, usando um conjunto de pares de moedas personalizados. Vamos aceitar outra hipótese — remover a proporção do peso e reduzir a equação para cálcular a média geométrica normal. Implementaremos essas mudanças para aplicar o princípio da média geométrica, para que deste modo possamos executar os cálculos em todas as cestas. Na prática real, não tomaremos conhecimento das relações de peso para qualquer par de moedas.

Analisaremos se as alterações resultaram em algum efeito. Para fazer isso, vamos utilizar um indicador simples:

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1

input int     iBarsTotal=300;       

string pair[]={"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY"};
bool bDirect[]={false,false,false,false,true,true,true};
int iCount=7;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetValue(int shift)
  {
   double res=1.0,t;
   for(int i=0; i<iCount; i++)
     {
      t=iClose(pair[i],0,shift);
      if(!bDirect[i]) t=1/t;
      res*=t;
     }//fim para (int i = 0; i < iCount; i++)
   return (NormalizeDouble(MathPow (res, (double)1/iCount), _Digits) );
  }

double upp[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorShortName("testBasket");
   IndicatorDigits(_Digits);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,clrGreen);
   SetIndexBuffer(0,upp);
   SetIndexLabel(0,"testBasket");

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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)
     {

      int total;
      if(iBarsTotal==0) total=rates_total;
      else total= MathMin(iBarsTotal,rates_total);
      for(int i = 0; i<total; i++) upp[i] = GetValue(i);
     }//fim se (prev_calculated == 0)
   else
     {
      upp[0]=GetValue(0);
     }
   return(rates_total);
  }

Para comparar, nós utilizamos o indicador livre USDX.mq4 e desenhamos o índice USD na sua forma padrão. A seguir, estão os resultados (timeframe de H1):


O indicador testBasket.mq4 está sendo destacado na imagem em verde escuro, o indicador USDX.mq4 é mostrado em vermelho e verde claro (média). Podemos perceber uma boa combinação no timeframe H1. A direções dos movimento na maioria dos segmentos coincidem, assim como, a grande maioria dos locais de pontos extremos.


Em D1, o quadro é o menos favorável, porém ainda é bastante aceitável. As posições da maioria dos locais de pontos extremos são as mesmas, assim como a direção do movimento na maioria das áreas. A diferenças em algumas áreas são facilmente explicadas pela falta das propoções entre o peso e um conjunto diferente de pares de moedas. Além disso, as escalas dos gráficos sobrepostos uns sobre os outros são distintas.

Com base nos resultados obtidos, consideramos a equação do cálculo da média geométrica aceitável para determinar os diferentes parâmetros de status da cesta de moedas. Posteriormente chamaremos de método #1. No entanto, devemos estar ciente sobre as limitações que a equação apresenta. Mais especificamente, seria uma má ideia usá-la com argumentos que podem se tornar valores negativos. Existem diversos argumentos em indicadores técnicos. Também, o cálculo da média geométrica pode sobrecarregar consideravelmente o terminal, caso tais cálculos não estejam numa biblioteca separada.

Podemos aplicar outra equação para eliminar as limitações a respeito da utilização de valores negativos como argumentos, sendo ela, a média aritmética comum. Criaremos mais um indicador de teste para realizar os cálculos com base nessa equação. Valores dos indicadores estocásticos são usados como argumentos:

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_minimum    0
#property indicator_maximum    100

#property indicator_buffers 2

input int     iBarsTotal=3000;

string pair[]={"EURUSD","EURJPY","EURCHF","EURGBP","EURNZD","EURCAD","EURAUD"};
int iCount=7;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void GetValue(int shift,double &s1,double &s2)
  {
   s1=0; s2=1;
   for(int i=0; i<iCount; i++) 
     {
      s1 += iStochastic(pair[i],0,5,3,3,MODE_SMA,0,0,shift);
      s2 *= iStochastic(pair[i],0,5,3,3,MODE_SMA,0,0,shift);
     }
   s1 = NormalizeDouble(s1/iCount, _Digits);
   s2 = NormalizeDouble(MathPow (s2, (double)1/iCount), _Digits);
  }

double upp[],upp1[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorShortName("testBasketS");
   IndicatorDigits(_Digits);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,clrRed);
   SetIndexBuffer(0,upp);
   SetIndexLabel(0,"testBasketSA");
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2,clrGreen);
   SetIndexBuffer(1,upp1);
   SetIndexLabel(1,"testBasketSG");

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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)
     {

      int total;
      if(iBarsTotal==0) total=rates_total;
      else total= MathMin(iBarsTotal,rates_total);
      for(int i = 0; i<total; i++) GetValue(i,upp[i],upp1[i]);
     }//fim se (prev_calculated == 0)
   else
     {
      GetValue(0,upp[0],upp1[0]);
     }
   return(rates_total);
  }

Baixe este indicador para o gráfico EURGBP D1. O resultado obtido é apresentado abaixo:


As linhas finas representam o estocástico original, a linha com o dobro de largura vermelha é um novo estocástico unificado, baseado na equação da média aritmética, enquanto, a linha verde de largura dupla, faz uma comparação baseada na média geométrica.

Ao analisar as equações, podemos observar que elas produzem resultados bastante similares. O gráfico fundamentado na média geométrica tem pontos extremos mais visíveis, enquanto o que tem como base a média aritmética é mais suave. Embora, isto talvez não seja significativo, porém a nossa impressão é subjetiva. As limitações associadas com os argumentos negativos e o poder de processamento do PC, parecem ser os fatores críticos que afetam ao aplicação prática. Geralmente, a média aritmética também pode ser aplicada aos cálculos como o método #2.

Conclusões práticas iniciais

Após ter lido os parágrafos anteriores, você pode se perguntar "Qual é a necessidade de tudo isso?". Nós obtivemos um novo indicador para esboçar um gráfico semelhante ao índice USD, assim como, conseguimos outro indicador que esboça um gráfico do tipo Estocástico. Nós também podemos obter outro indicador do esboço gráfico semelhante ao padrão RSI. Entretanto, já temos o RSI e o Estocástico convencionais. Por que precisamos de outros? Tentaremos responder a esta pergunta.

  1. Os indicadores unificados fornecem dados sobre o status das cestas de moedas, permitindo aos traders obter uma previsão dos movimentos de todos os pares de moedas dentro da cesta. Por sua vez, tal previsão permite operações de negociação com todos os pares de moedas dentro da cesta.
  2. A combinação de indicadores similares aos convencionais (como na última imagem contendo Estocástico) formam um filtro que ajuda aos traders a evitarem entradas em certos pares dentro da cesta, além de analisar os pontos de intersecção no gráfico e detectar as divergências.
  3. Não se esqueça de que duas moedas formam um par, e cada uma delas, tem a sua própria cesta. Os traders podem obter dados sobre cada uma delas e assim planejar suas ações futuras utilizando os indicadores unificados.

Qualquer um destes pontos podem servir como base para o desenvolvimento de um sistema de negociação eficaz. Além disso, os indicadores unificados pode ser usados em conjunto com outros sistemas de negociação. No entanto, este tópico excede os limites do presente artigo introdutório.


Conclusão

Tenha em mente que as decisões de negociação devem ser feitas como base em vários sinais, a menos que você aplique um método de negociação sem o uso de indicador. O presente artigo descreveu um método de obtenção de tais sinais de forma relativamente nova. No entanto, não deve ser considerado como uma substituição completa do uso padrão. O uso do RSI unificado, Estocástico e outros indicadores em conjunto com os padrões podem fornecer suficientes sinais de confirmação de alta qualidade, melhorando assim, a sua eficiência na negociação.


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

Arquivos anexados |
testBasket.mq4 (2.73 KB)
USDX.mq4 (9.48 KB)
Rede neural: Expert Advisor auto-otimizável Rede neural: Expert Advisor auto-otimizável
Será que é possível criar um Expert Advisor que, de acordo com os comandos do código, otimize os critérios de abertura e fechamento das posições automaticamente e em intervalos regulares? O que acontecerá se nós implementarmos no EA uma rede neural (um perceptron multi-camada) que, sendo módulo, analise o histórico e avalie a estratégia? É possível dar ao código um comando para uma otimização mensal (semanal, diária ou por hora) de rede neural com um processo subsequente. Assim, é possível criar um Expert Advisor que se auto-otimize.
Guia Prático MQL5 - Sinais de negociação de canais móveis Guia Prático MQL5 - Sinais de negociação de canais móveis
O artigo descreve o processo de desenvolvimento e implementação de uma classe para envio de sinais com base nos canais móveis. Cada versão do sinal é seguido por uma estratégia de negociação com os resultados dos testes. As classes da Biblioteca Padrão são utilizadas para criar classes derivadas.
Interfaces Gráficas VIII: O Controle Calendário (Capítulo 1) Interfaces Gráficas VIII: O Controle Calendário (Capítulo 1)
Na parte VIII da série de artigos dedicados à criação de interfaces gráficas no MetaTrader, nós vamos introduzir os controles compostos complexos como os calendários, lista hierárquica e o navegador de arquivos. Devido à grande quantidade de informações, os artigos foram escritos separadamente para cada assunto. O primeiro capítulo desta parte descreve o controle calendário e sua versão expandida — um calendário suspenso.
Interfaces Gráficas VII: O Controle Guias (Capítulo 2) Interfaces Gráficas VII: O Controle Guias (Capítulo 2)
Foi introduzido no primeiro capítulo da sétima parte três classes de controles para a criação de tabelas: Tabela com o rótulo de texto (CLabelsTable), tabela com a caixa de edição (CTable) e a tabela renderizada (CCanvasTable). Neste artigo (capítulo dois) nós vamos introduzir o controle Guias.