DRAW_COLORS_LINE gerando problemas no indicador

 

Tudo bem? Continuamos na saga de estudos do MQL5 e preciso de ajuda para desvendar esse mistério.

Vejam, estou com um indicador funcionando normalmente, sem problemas:



Só que uma melhoria que poderia ser implementada seria colorir a linha azul em diferentes cores, então fizemos:

#property indicator_type1   DRAW_COLOR_LINE
#property indicator_label1  "Linha Azul"
#property indicator_style1  STYLE_SOLID
#property indicator_color1  clrBlue,clrGreen,clrRed
#property indicator_width1  2
#property indicator_type2   DRAW_LINE
#property indicator_label2  "Linha Branca"
#property indicator_style2  STYLE_SOLID
#property indicator_color2  clrWhite
#property indicator_width2  1

Novo buffer para cores:

double bufferMAColors[];
SetIndexBuffer(4, bufferMAColors, INDICATOR_COLOR_INDEX);

Defini os indices:

PlotIndexSetInteger(0, PLOT_COLOR_INDEXES, 3);

E defini a condição de mudança de cor:

if (bufferMASa[i] > bufferSignal[i]) bufferMAColors[i] = 1;
else if (bufferMASa[i] < bufferSinal[i]) bufferMAColors[i] = 2;
else bufferMAColors[i] = 0;


Quando defino #property indicator_type1   DRAW_COLOR_LINE, o indicador agora plota totalmente errado:


Ele não plota mais a linha branca e a linha azul está com valores totalmente errados agora. Se eu mudo #property indicator_type1 para  DRAW_LINE, ele volta a plotar tudo corretamente.


   //--- indicator buffers mapping
   SetIndexBuffer(0, bufferMASa, INDICATOR_DATA);
   SetIndexBuffer(1, bufferMASa2, INDICATOR_DATA);
   SetIndexBuffer(2, bufferMA, INDICATOR_CALCULATIONS);
   SetIndexBuffer(3, bufferSignal, INDICATOR_CALCULATIONS);
   SetIndexBuffer(4, bufferMAColors, INDICATOR_COLOR_INDEX);


Esses são os buffers plotados, 0 linha azul e 1 linha branca.

 
b2tradingclub:

Tudo bem? Continuamos na saga de estudos do MQL5 e preciso de ajuda para desvendar esse mistério.

Vejam, estou com um indicador funcionando normalmente, sem problemas:



Só que uma melhoria que poderia ser implementada seria colorir a linha azul em diferentes cores, então fizemos:


Quando defino #property indicator_type1   DRAW_COLOR_LINE, o indicador agora plota totalmente errado:


Ele não plota mais a linha branca e a linha azul está com valores totalmente errados agora. Se eu mudo #property indicator_type1 para  DRAW_LINE, ele volta a plotar tudo corretamente.



Esses são os buffers plotados, 0 linha azul e 1 linha branca.

O problema foi resolvido com ajuda de um membro do fórum. Para quem não sabe, o buffer do color index precisa ser sequenciado ao indicador_data. Era justamente esse o problema. Quando você definir um buffer com indicator_data e quiser colorir ele, precisa colocar o color_index logo abaixo dele, na sequência. Era justamente esse o problema, pois estava colocando os buffers do colors nos últimos buffers.