sábado, 6 de agosto de 2016

Metatrader 5: Regra de Cores

Position Trader
Muitas vezes recebo emails perguntando como colorir o gráfico de candlestick do Metatrader 5 a partir de uma determinada regra de cor. No CMA e no Amibroker isso é bem simples, enquanto que no MT5 a estrutura é um pouco mais avançada. Mas não pense que isso exija grande conhecimento de programação, na verdade basta ter um pouco de raciocínio lógico e curiosidade.

No site do MQL5 há vários artigos com passo a passo de como codificar um determinado recurso, mas em várias ocasiões exige-se uma maior desenvoltura com a programação e o leitor pode acabar se assustando. Com isso em mente, resolvi traduzir o código de um desses artigos para colorir candles a partir da situação do Índice de Força Relativa (IFR) trabalhar abaixo ou acima de 50%. O artigo original com todos os códigos está em https://www.mql5.com/pt/articles/135.

Aqui só destacarei as partes fundamentais e o código modificado com as explicações traduzidas ficará no grupo do Facebook de Dólar e Índice Futuro (aba: Arquivos). Então vamos lá:

Além de um buffer para armazenar os valores do indicador IFR, como iremos colorir o candlestick, é necessário criar um buffer para cada um dos seus 4 elementos (abertura, máxima, mínima e fechamento):

   SetIndexBuffer(0,buffer_abe,INDICATOR_DATA);
   SetIndexBuffer(1,buffer_max,INDICATOR_DATA);
   SetIndexBuffer(2,buffer_min,INDICATOR_DATA);
   SetIndexBuffer(3,buffer_fec,INDICATOR_DATA);

Também é necessário criar um buffer para armazenar as regras de cor (0 em caso afirmativo e 1 se for falso).

   SetIndexBuffer(4,buffer_color_line,INDICATOR_COLOR_INDEX);

Como nesse exemplo usaremos duas possibilidades, é preciso indicar essa quantidade de cores

   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);

E em seguida definir quais serão essas cores que o candle terá no caso de uma determina condição ser ou não satisfeita.

   PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,Red);   // satisfeita
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,Green);  // não satisfeita

O restante do código é o padrão usado no MQL5 e convido o leitor a abrir o código completo para o seu contínuo aprendizado. Aqui só quero destacar a condição de coloração dos candles onde a "mágica" acontece.
  • Caso a sentença seja verdadeira o buffer de cor receberá o valor zero (0)
  • Caso a sentença seja falsa o buffer de cor receberá o valor um (1)
      if(buffer_RSI[i]<50)          
        {   buffer_color_line[i]=0;   }
      else
        {  buffer_color_line[i]=1;   }  
     }


Pronto, agora você tem um código que irá colorir o seu gráfico baseado em uma regra pré-definida. A ideia é que a partir daí o leitor possa construir regras mais sofisticadas como por exemplo, três cores para identificar quando os preços estão em tendência de alta, de baixa ou em acumulação.

Um comentário:

  1. Nesse caso como ficaria usando no lugar, ou juntamente com os níveis, uma média móvel?

    ResponderExcluir