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.
{ 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.
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)
{ 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.
Nesse caso como ficaria usando no lugar, ou juntamente com os níveis, uma média móvel?
ResponderExcluir