Indikator Color Day untuk MetaTrader 5: Panduan Lengkap

Mike 2017.01.18 18:27 9 0 0
Lampiran

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.
Senarai
Komen 0