Color Day: O Indicador Visual para MetaTrader 5

Mike 2017.01.18 18:27 16 0 0
Anexo

O indicador Color Day é uma ferramenta que colore os dias de alta e baixa no seu gráfico, facilitando a visualização das tendências do mercado.

Quando o fechamento diário é maior que a abertura, o dia é colorido em azul (pode ser ajustado nas configurações).

input color UP = Blue;  // cor do dia de alta

Se o fechamento diário for menor que a abertura, o dia aparece em vermelho (também personalizável).

input color DN = Red;  // cor do dia de baixa

Copie os preços de abertura e fechamento, além do horário de abertura, para o número especificado de dias Days:

CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

Esses dados serão armazenados em arrays:

datetime tm[];
double op[];
double cl[];

Antes de instalar o indicador no gráfico, é importante definir o tamanho dos arrays:

int OnInit()
  {
//--- mapeamento dos buffers do indicador
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }

Depois, atribua os valores das células dos arrays a variáveis e determine o horário de fechamento diário time1:

datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

Utilizando a função PutRect():

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- cria o retângulo com as coordenadas dadas
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- define a cor do retângulo
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- habilita (true) ou desabilita (false) o modo de preenchimento do retângulo
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }

Agora, pinte o dia dependendo de para onde o preço foi:

if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

Agora, itere sobre todos os dias especificados no parâmetro Days em um loop:

for(int i=0;i<=Days;i++)
     {
      CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

      datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

      if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

Quando você deletar o indicador do gráfico, utilize a função DeleteObjects():

void DeleteObjects()
  {
   for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--)
     {
      string name=ObjectName(0,i,0,OBJ_RECTANGLE);
      if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name);
     }
  }

Remova os objetos criados do gráfico:

void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }

Configurações:

input int   Days = 11;  // dias para cálculo
input color UP = Blue;  // cor do dia de alta
input color DN = Red;   // cor do dia de baixa

Fig. 1. O indicador no gráfico

Dicas:

  • O Color Day é um assistente visual de trading que pode facilitar sua análise.
Lista
Comentário 0