Indikator Color Day adalah alat yang sangat berguna untuk membantu trader mengenal pasti hari bullish dan bearish dengan lebih mudah.
Apabila harga penutupan harian lebih tinggi daripada harga pembukaan, indikator ini akan mewarnakan hari tersebut dengan biru (warna boleh disesuaikan dalam tetapan).
input color UP = Blue; // warna hari bullish
Jika harga penutupan harian lebih rendah daripada harga pembukaan, ia akan diwarnakan dengan merah (juga boleh disesuaikan dalam tetapan).
input color DN = Red; // warna hari bearish
Indikator ini juga membolehkan anda untuk menyalin harga Open, Close, dan masa pembukaan untuk bilangan hari yang ditetapkan 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 ini akan disalin ke dalam array yang bersesuaian:
datetime tm[]; double op[]; double cl[];
Sebelum anda memasang indikator ini ke dalam carta, anda perlu menetapkan dimensi array:
int OnInit() { //--- pemetaan buffer indikator Comment(""); ArrayResize(tm,Days); ArrayResize(op,Days); ArrayResize(cl,Days); //--- return(INIT_SUCCEEDED); }
Seterusnya, anda perlu menetapkan nilai-nilai sel array kepada pembolehubah dan menentukan masa penutupan harian time1:
datetime time0=tm[i]; datetime time1=time0+3600*24; double dopen=op[i]; double dclose=cl[i];
Dengan menggunakan fungsi PutRect():
void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr) { ObjectDelete(0,name); //--- buat segi empat tepat dengan koordinat yang diberikan ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2); //--- tetapkan warna segi empat tepat ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- aktifkan (true) atau matikan (false) mod pengisian segi empat tepat ObjectSetInteger(0,name,OBJPROP_FILL,true); }
Warna hari bergantung kepada 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);
Seterusnya, lakukan pengulangan untuk semua hari yang ditetapkan 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);
Apabila anda ingin memadam indikator dari carta, gunakan 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); } }
Seterusnya, hapuskan objek yang telah dibuat dari carta:
void OnDeinit(const int reason) { Comment(""); DeleteObjects(); }
Tetapan:
input int Days = 11; // bilangan hari untuk pengiraan input color UP = Blue; // warna hari bullish input color DN = Red; // warna hari bearish

Gambar 1. Indikator pada carta
Petua:
- Indikator Color Day — pembantu visual dalam trading.
Komen 0