Home Systeemhandel Bericht

Sluit Orders op Doel of Beperk Verlies - Handige Expert voor MetaTrader 4

Bijlage
34194.zip (995 bytes, Downloaden 2 keer)

In de wereld van trading is het cruciaal om je verliezen te beperken en je winsten veilig te stellen. Daarom gebruik ik deze Expert Advisor (EA) als een waardevol hulpmiddel in mijn handelsstrategie.

Essentiële Instellingen

Deze EA vereist drie belangrijke invoerparameters:

  • Winstdoel
  • Verliesbeperking
  • Magic Number
extern    double         inTargetProfitMoney     = 10;       // Winstdoel (€)
extern    double         inCutLossMoney          = 0.0      // Verliesbeperking (€)
extern    int            inMagicNumber           = 0        // Magic Number

Wanneer deze EA wordt uitgevoerd, wordt eerst de OnInit() functie aangeroepen. Hier controleren we de invoer en initialiseren we de variabelen.

int OnInit()
  {
//---
   if(inTargetProfitMoney <= 0)
     {
      Alert("Ongeldige invoer");
      return(INIT_PARAMETERS_INCORRECT);
     }

   inCutLossMoney = MathAbs(inCutLossMoney) * -1;

//---
   return(INIT_SUCCEEDED);
  }

Bij elke prijsbeweging (tick) wordt de OnTick() functie aangeroepen.

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();
     }

  }

In de OnTick functie berekenen we voortdurend de totale winst of verlies. Vervolgens sluiten we alle orders die aan de voorwaarden voldoen, zoals het behalen van het winstdoel of het overschrijden van de verlieslimiet.

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("WAARSCHUWING: Sluiten mislukt");
              }
           }
        }
     }
  }

Voor meer gedetailleerde informatie en het delen van MQL4-code en educatie, sluit je aan bij onze Telegram-groep: t.me/codeMQL


Gerelateerde berichten

Reactie (0)