Beranda Perdagangan Sistem Postingan

Menutup Order Berdasarkan Target Profit atau Cut Loss di MetaTrader 4

Lampiran
34194.zip (995 bytes, Unduh 2 kali)

Halo, sobat trader! Kali ini kita akan membahas tentang penggunaan Expert Advisor atau EA untuk menutup order berdasarkan target profit atau cut loss di MetaTrader 4. Ini adalah alat yang sangat berguna untuk membantu kita dalam mengelola risiko trading.

Apa yang Perlu Dipersiapkan?

Ada tiga input yang perlu kita siapkan sebelum menggunakan EA ini:

  • Target Profit
  • Cut Loss
  • Magic Number
extern    double         inTargetProfitMoney     = 10;       //Target Profit ($)
extern    double         inCutLossMoney          = 0.0      //Cut Loss ($)
extern    int            inMagicNumber           = 0        //Magic Number

Bagaimana Cara Kerjanya?

Saat EA ini dijalankan, pertama-tama akan memanggil fungsi OnInit(). Di sini kita akan memverifikasi input dan inisialisasi variabel:

int OnInit()
  {
//---
   if(inTargetProfitMoney <= 0)
     {
      Alert("Input tidak valid");
      return(INIT_PARAMETERS_INCORRECT);
     }

   inCutLossMoney = MathAbs(inCutLossMoney) * -1;

//---
   return(INIT_SUCCEEDED);
  }

Setiap kali terjadi pergerakan harga (tick), fungsi OnTick() akan dipanggil:

void OnTick()
  {
//---

   double   tFloating = 0.0;
   int tOrder  = OrdersTotal();
   for(int i=tOrder-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderMagicNumber() == inMagicNumber)
           {
            tFloating   += OrderProfit()+OrderCommission() + OrderSwap();
           }
        }
     }

   if(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0))
     {
      fCloseAllOrders();
     }

  }

Di dalam fungsi OnTick, EA ini akan terus menghitung total profit atau loss. Jika target profit atau batas maksimum kerugian tercapai, semua order yang memenuhi syarat akan ditutup.

void fCloseAllOrders()
  {
   double   priceClose = 0.0;
   int tOrders = OrdersTotal();
   for(int i=tOrders-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL))
           {
            priceClose  = (OrderType()==OP_BUY)?MarketInfo(OrderSymbol(), MODE_BID):MarketInfo(OrderSymbol(), MODE_ASK);
            if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold))
              {
               Print("PERINGATAN: Penutupan Gagal");
              }
           }
        }
     }
  }

Kesimpulan

Dengan menggunakan EA ini, kita dapat lebih mudah mengelola trading kita dengan menetapkan target profit dan cut loss yang jelas. Jika ada pertanyaan atau ingin berbagi kode MQL4 lebih lanjut, yuk gabung di t.me/codeMQL.

Postingan terkait

Komentar (0)