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.
Comentário 0