Laman utama Perdagangan Sistem Siaran

Tutup Pesanan Mengikut Sasaran atau Had Kerugian - Alat untuk MetaTrader 4

Lampiran
34194.zip (995 bytes, Muat turun 0 kali)
Kita akan menggunakan EA ini sebagai alat perdagangan.

Untuk menggunakan EA ini, terdapat 3 input yang diperlukan seperti berikut:

  • Sasaran Keuntungan
  • Had Kerugian
  • Nombor Ajaib
extern    double         inTargetProfitMoney     = 10;       //Sasaran Keuntungan ($)
extern    double         inCutLossMoney          = 0.0      //Had Kerugian ($)
extern    int            inMagicNumber           = 0        //Nombor Ajaib


Apabila EA ini dijalankan, ia akan memanggil fungsi OnInit(). Di sini, kita akan menyemak input dan inisialisasi variabel.

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

   inCutLossMoney = MathAbs(inCutLossMoney) * -1;

//---
   return(INIT_SUCCEEDED);
  }


Setiap kali pergerakan harga (tick) berlaku, 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();
     }

  }

Dalam fungsi OnTick, ia akan terus mengira jumlah keuntungan atau kerugian. Kemudian, ia akan menutup semua pesanan yang memenuhi sasaran atau had kerugian maksimum.

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("AMARAN: Penutupan Gagal");
              }
           }
        }
     }
  }


Untuk maklumat lanjut dan perkongsian pendidikan kod mql4, sila sertai telegram kami t.me/codeMQL




Siaran berkaitan

Komen (0)