Beranda Perdagangan Sistem Postingan

EA Sederhana Menggunakan Indikator DeMarker untuk MetaTrader 4

Lampiran
32418.zip (1.46 KB, Unduh 2 kali)

Pernahkah kamu berpikir untuk menggunakan EA (Expert Advisor) dalam trading? Saya juga! Di sini, saya akan berbagi tentang EA sederhana yang saya gunakan, dan ini adalah yang paling mudah yang pernah saya buat. Setelah membaca, jangan lupa untuk memberikan penilaian, ya!

EA ini bekerja pada satu pasangan mata uang saja. Kamu bisa mengatur periode waktu, lot, stop loss, dan take profit melalui menu properti yang tersedia.


extern ENUM_TIMEFRAMES TF  = PERIOD_CURRENT;// Pilih Time Frame 
extern int period          = 8;// Periode DeMarker
extern double lt           = 0.01;// Lot
extern int sl              = 100;// Stop Loss
extern int tp              = 100;// Take Profit
extern double OB           = 0.7;// Over Sold
extern double OS           = 0.3;// Over Bought
extern bool OPENBAR        = false;// Trading di harga open bar baru

Berikut adalah rahasianya, saya membagi variabel ini menjadi 3 bagian:
1. Data | Timeframe
2. Order
3. Pair

//+------------------------------------------------------------------+
//-- time frame|indicator
double dmrk[5];
int signal  =-1;//-- 0.buy 1.sell
int hold = 0;

//-- order
int ticket  =0;
double lot  =0.0;
int typ     =-1;

//-- pair
datetime t1=0;
bool newbar=false;
bool entry =false;

//+------------------------------------------------------------------+

Di fungsi OnInit(), saya harus menginisialisasi array variabel indikator DeMarker dan juga memeriksa ukuran lot minimum untuk jenis broker tertentu.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   ArrayInitialize(dmrk,0.0);
  //---
      const double test_lot   = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
      if(lt<test_lot)   lt    = test_lot;
  }

Di fungsi OnTick(), saya menghitung indikator dan menentukan sinyal beli dan jual.

//---------------------------------------------------------------------------
   signal = -1;
//---------------------------------------------------------------------------

//---calc
   for(int i=0; i<ArraySize(dmrk); i++)
     {
      dmrk[i]  =  iDeMarker(Symbol(),TF,period,i);
     }
//---

   if(dmrk[1] > OB)
     {
      hold = 1;//set
     }
   else
      if(dmrk[1] < OS)
        {
         hold = -1;//set
        }
      else
        {
         hold = 0;//reset
        }

   if(hold ==  1)
     {
      if(dmrk[0]<OB && dmrk[1]>OB)
        {
         signal = OP_SELL;
        }
     }
   if(hold == -1)
     {
      if(dmrk[0]>OS && dmrk[1]<OS)
        {
         signal = OP_BUY;
        }
     }

Untuk membuka sinyal beli dan jual...

//---------------------------------------------------------------------------
   if(signal != -1)
      if(newbar==true)
         if(entry==false)//pintu terbuka
           {
            //---
            entry =true;//set
            //---

            if(signal == OP_BUY)
              {
               ticket = OrderSend(Symbol(),OP_BUY,lt,Ask,(int)((Ask-Bid)/Point,
                                   sl>0?Bid-sl*Point:0.0,
                                   tp>0?Bid+tp*Point:0.0,
                                  EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold),
                                  EANumber,
                                  0,
                                  clrBlue);
               signal=-1;
               //hold =0;
              }//reset
            else
               if(signal == OP_SELL)
                 {
                  ticket = OrderSend(Symbol(),OP_SELL,lt,Bid,(int)((Ask-Bid)/Point,
                                     sl>0?Ask+sl*Point:0.0,
                                     tp>0?Ask-tp*Point:0.0,
                                     EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold),
                                  EANumber,
                                   0,
                                   clrRed);
                  signal=-1;
                  //hold =0;
                     }//reset signal

             }


Dan untuk penutupan...

   if(entry == true) // penutupan
     {
      if(OrderSelect(ticket,SELECT_BY_TICKET))
        {
         if(OrderCloseTime() == 0)//-- order masih aktif
           {
            /*  todo kondisi untuk menutup  */
            //entry = false;
           }
         //else
            if(OrderCloseTime() != 0)//--  close by 1. manual 2. sl/tp 3. ea
              {
               entry = false;//reset entry
              }
        }
     }

  



Postingan terkait

Komentar (0)