Indikator Color Day adalah alat yang sangat berguna bagi trader untuk memberi warna pada hari-hari bullish dan bearish di chart MetaTrader 5.
Jika harga Close harian lebih tinggi dari Open, indikator ini akan memberi warna biru (yang bisa disesuaikan di pengaturan).
input color UP = Blue; // warna hari bullish
Sebaliknya, jika harga Close harian lebih rendah dari Open, indikator ini akan memberi warna merah (juga bisa disesuaikan).
input color DN = Red; // warna hari bearish
Indikator ini juga dapat menyalin harga Open, Close, dan waktu pembukaan untuk jumlah hari yang ditentukan 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);
Data tersebut akan disimpan ke dalam array yang sesuai:
datetime tm[]; double op[]; double cl[];
Sebelum memasang indikator ini ke chart, pastikan untuk mengatur dimensi array:
int OnInit() { //--- pemetaan buffer indikator Comment(""); ArrayResize(tm,Days); ArrayResize(op,Days); ArrayResize(cl,Days); //--- return(INIT_SUCCEEDED); }
Selanjutnya, kita akan menetapkan nilai dari sel array ke variabel dan menentukan waktu penutupan harian time1:
datetime time0=tm[i]; datetime time1=time0+3600*24; double dopen=op[i]; double dclose=cl[i];
Kita akan menggunakan fungsi PutRect() untuk menggambar persegi panjang:
void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr) { ObjectDelete(0,name); //--- membuat persegi panjang dengan koordinat yang diberikan ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2); //--- menetapkan warna persegi panjang ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- mengaktifkan (true) atau menonaktifkan (false) mode pengisian persegi panjang ObjectSetInteger(0,name,OBJPROP_FILL,true); }
Warna hari akan ditentukan berdasarkan pergerakan harga:
if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN); if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);
Iterasi ini akan dilakukan untuk semua hari yang ditentukan dalam parameter Days:
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);
Ketika menghapus indikator dari chart menggunakan fungsi 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); } }
Jangan lupa untuk menghapus objek yang dibuat dari chart:
void OnDeinit(const int reason) { Comment(""); DeleteObjects(); }
Pengaturan:
input int Days = 11; // jumlah hari untuk perhitungan input color UP = Blue; // warna hari bullish input color DN = Red; // warna hari bearish

Gambar 1. Indikator pada chart
Tips:
- Indikator Color Day — asisten visual untuk trading.
Komentar 0