In deze blogpost bespreken we een handige code die automatisch al je openstaande orders sluit zodra de drawdown een bepaald percentage van je rekeningbalans bereikt. Dit kan een waardevolle functie zijn om je verliezen te beperken en je kapitaal te beschermen.
Je hoeft alleen het magische nummer van de orders in te voeren (voer 0 in om alle orders te controleren) en het maximale percentage drawdown dat je wilt toestaan voordat de code de orders sluit.
Om deze code te gebruiken, roep je eenvoudigweg de functie DD_close aan.
Bijgevoegd is het headerbestand van deze code met de EA die op deze code is gebouwd.
// Om deze optie te gebruiken, hoef je alleen de functie aan te roepen: ( DD_close ) //+------------------------------------------------------------------+ //| Globale scope | //+------------------------------------------------------------------+ bool Close_All_V; //+------------------------------------------------------------------+ //| Hoofdfunctie | //+------------------------------------------------------------------+ // DD: Hier is het DD percentage, 100 betekent nooit een order sluiten. // Magic_Number: Je EA magische nummer, voer 0 in om alle orders te controleren. void DD_close(int DD,int Magic_Number) { if(DD(Magic_Number)>=DD) Close_All_V=true; if(Close_All_V) Close_All(Magic_Number); } //+------------------------------------------------------------------+ //| Controleer sluiten | //+------------------------------------------------------------------+ void Check_Close(int Check_Number) // controleer sluitorder { if(Check_Number<0) Print("OrderClose mislukt met fout: ",ErrorDescription(GetLastError())); else Close_All_V=false; } //+------------------------------------------------------------------+ //| Sluit alles | //+------------------------------------------------------------------+ void Close_All(int M_N) { int Loop=0; for(int i=0; Loop<OrdersTotal(); i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Loop++; if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==M_N || OrderMagicNumber()==0) { if(OrderType()==OP_BUY) Check_Close(OrderClose(OrderTicket(),OrderLots(),Bid,100,clrNONE)); if(OrderType()==OP_SELL) Check_Close(OrderClose(OrderTicket(),OrderLots(),Ask,100,clrNONE)); } } } //+------------------------------------------------------------------+ //| Bereken verlies | //+------------------------------------------------------------------+ double Loss(int M_N) { double re=0; int Loop=0; for(int i=0; Loop<OrdersTotal(); i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Loop++; if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==M_N || OrderMagicNumber()==0) re=re+OrderProfit(); } return re * -1; } //+------------------------------------------------------------------+ //| Bereken drawdown percentage | //+------------------------------------------------------------------+ double DD(int M_N) { return ( 100 / AccountBalance ( ) ) * Loss ( M_N ); } //+------------------------------------------------------------------+
Gerelateerde berichten
- MQL5 Wizard: Creëer Handelsstrategieën met Bullish en Bearish Engulfing Candlestick Patronen en Stochastic
- Efficiënt Trendvolgend Handelsysteem met Exp_X2MA_JFatl voor MetaTrader 5
- Close Cross MA: Efficiënt Orders Sluiten met MetaTrader 4
- Efficiënt Handelen met het ColorSchaffJCCXTrendCycle Systeem voor MetaTrader 5
- Efficiënt Handelen met de Ang_Zad_C Indicator voor MetaTrader 5