Indikator Color Day untuk MetaTrader 5: Panduan Lengkap

Mike 2017.01.18 18:27 10 0 0
Lampiran

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.
Daftar
Komentar 0