Parameters van de Expert Advisor (Inputs)
De EA biedt verschillende externe parameters die je kunt aanpassen om het gedrag ervan te regelen:
Algemene Parameters
| Parameter | Type | Beschrijving |
| MagicNumber | int | Een unieke identificatie voor de trades van de EA. |
| InitialLot | double | De begin lotgrootte voor de eerste trade in een serie. |
| AllowBuy | bool | Vlag om de EA toestemming te geven om kooptransacties te openen (initieel en Martingale). |
| AllowSell | bool | Vlag om de EA toestemming te geven om verkooptransacties te openen (initieel en Martingale). |
| TakeProfit | int | Een vaste Take Profit in punten/pips die wordt gebruikt bij het plaatsen van pending orders (niet voor marktuitvoering). |
| FindHighLowBackBars | int | Het aantal voorgaande bars om terug te kijken voor het bepalen van de hoogste high en laagste low voor de initiële pending order. |
| ResetAfterBars | int | Het aantal bars waarna de initiële pending orders zullen worden verwijderd en opnieuw geëvalueerd (als er geen positie open is). |
Martingale Strategie
| Parameter | Type | Beschrijving |
| ReverseMartingale | bool | Als waar, zullen de volgende Martingale trades in de tegenovergestelde richting van de laatste trade in de serie zijn (dit zou typisch een anti-Martingale of hedge-aanpak zijn, maar de code opent in dezelfde richting als false). De huidige logica suggereert openen in de zelfde richting als ReverseMartingale false is. |
| LotMultiplier | double | De factor waarmee de lotgrootte wordt vermenigvuldigd voor de volgende trade in de verlieslatende serie (bijv. 2.0 betekent dat de lotgrootte verdubbeld wordt). |
| SecureProfitMartingaleTarget | double | De totale drijvende winst (in accountvaluta) waarop de gehele serie van open trades zal worden gesloten. |
| DistanceMartingalePips | int | De afstand (in pips) die de prijs moet bewegen tegen de open prijs van de laatste trade voordat een nieuwe Martingale trade wordt geopend. |
| MaxTradesInSeries | int | Het maximale aantal trades dat is toegestaan in een enkele Martingale serie. |
Tijd Strategie
| Parameter | Type | Beschrijving |
| AllowMonday... AllowFriday | bool | Vlaggen om het handelen op specifieke dagen van de week in of uit te schakelen. |
| ForbiddenDates | string | Een door komma's gescheiden lijst van data (formaat YYYY.MM.DD) waarop handelen is verboden. |
Overzicht van de Kernfuncties
OnInit() (Initialisatie)
Stelt de MagicNumber van de EA, margemodus en afwijking in. Het reset de Martingale status variabelen (s_currentLot, s_totalTradesInSeries, enz.) naar hun initiële waarden, ter voorbereiding op een frisse start.
OnDeinit() (Deinitialisatie)
Een eenvoudige functie voor opruiming, die een bericht afdrukt wanneer de EA wordt gestopt of verwijderd.
IsTradingDateAllowed() en IsTradingDayAllowed() (Handelsfilters)
Deze functies controleren de huidige dag en datum op basis van de door de gebruiker gedefinieerde ingangen (AllowMonday tot AllowFriday en ForbiddenDates) om te bepalen of handelen is toegestaan.
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Marktuitvoering)
Deze functie behandelt het openen van nieuwe marktposities (Kopen of Verkopen).
Het valideert en normaliseert de lotgrootte op basis van de minimum, maximum en stapgrootte van de broker.
Het controleert op voldoende vrije marge met behulp van CheckMargin().
Het voert de trade uit zonder een vaste Take Profit of Stop Loss (tp_calculated is 0).
Het werkt de globale Martingale statusvariabelen bij: s_currentLot, s_lastOpenPrice, s_seriesType, en s_totalTradesInSeries.
CloseAllPositions()
Doorloopt alle momenteel open posities en sluit diegene die door deze EA zijn geopend (met een overeenkomende MagicNumber).
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Pending Order Plaatsing)
Deze functie plaatst Buy Limit of Sell Limit orders:
Het valideert de lotgrootte en controleert op voldoende marge.
Het valideert de instapprijs op basis van de minimumafstand van de broker (SYMBOL_TRADE_STOPS_LEVEL).
Het berekent een vaste Take Profit (tp) op basis van de TakeProfit invoer.
Het verzendt de trade-aanvraag. Opmerking: De functie UpdateHighLowAndOrders roept deze aan om initiële Buy Limit en Sell Limit orders te plaatsen.
UpdateHighLowAndOrders() (Initiële Ingangslogica)
Dit is het initiële ingangsmechanisme wanneer er geen posities open zijn:
Het kijkt terug naar FindHighLowBackBars om de Hoogste High en Laagste Low te vinden.
Het berekent priceSellLimit (Hoogste High + 1 tick) en priceBuyLimit (Laagste Low - 1 tick).
Het controleert of Buy Limit en Sell Limit orders met de MagicNumber van de EA al bestaan.
Het plaatst een initiële Sell Limit order net boven de recente hoogste high en een Buy Limit order net onder de recente laagste low, elk met de InitialLot.
OnTick() (Hoofdlogica)
De kern van de uitvoeringslogica van de EA:
Tijdcontrole: Voorkomt overbodige berekeningen op dezelfde tick.
Filtercontrole: Als handelen niet is toegestaan op basis van dag/datums, worden alle pending orders verwijderd.
Winstdoelcontrole (Serie-uitgang): Als eaHasOpenPositions waar is EN totalFloatingProfit is ≥ SecureProfitMartingaleTarget, wordt CloseAllPositions() aangeroepen en worden alle Martingale statusvariabelen gereset om een nieuwe serie te starten.
Initiële Orderplaatsing: Als !eaHasOpenPositions EN handelen is toegestaan, reset het de Martingale status en controleert of er een nieuwe bar is gevormd.
Als er een nieuwe bar is gevormd, controleert het of barsCount is ≥ ResetAfterBars. Als dat zo is, verwijdert het pending orders en roept UpdateHighLowAndOrders() aan om nieuwe initiële orders te plaatsen. Zo niet, dan roept het gewoon UpdateHighLowAndOrders() aan.
Martingale Staplogica: Als eaHasOpenPositions waar is EN s_totalTradesInSeries is <$< MaxTradesInSeries:
Het controleert of totalFloatingProfit negatief is EN de prijs met minstens DistanceMartingalePips tegen de laatste open trade is bewogen.
Als aan beide voorwaarden is voldaan, berekent het de nextLot door s_currentLot te vermenigvuldigen met LotMultiplier.
Het bepaalt de orderToOpen richting (ofwel dezelfde richting als de serie of de tegenovergestelde, op basis van ReverseMartingale).
Het roept OpenTradeLogic() aan om de nieuwe, vermenigvuldigde positie te openen en de Martingale serie voort te zetten.
Samenvatting van de Strategie
De "Babi Ngepet" EA implementeert een riskante maar potentieel hoogrenderende Martingale strategie gecombineerd met een breakout/range-reversie initiële ingang:
Initiële Ingang: De EA plaatst een initiële Buy Limit (onder recente low) en een Sell Limit (boven recente high). Dit suggereert een initiële aanname van range-bound gedrag—het gaat kopen wanneer de prijs naar een low zakt, en verkopen wanneer de prijs naar een high stijgt.
Trade Management: Als een van de initiële trades wordt geactiveerd en de positie beweegt naar een aggregaatverlies (negatieve drijvende winst), en de prijs blijft tegen de open posities bewegen met een gedefinieerde afstand, opent de EA een nieuwe positie in dezelfde richting met een grotere lotgrootte (Martingale).
Exit Strategie: De serie van trades blijft de lotgrootte verhogen totdat de aggregaat drijvende winst van alle trades in de serie de SecureProfitMartingaleTarget bereikt, op welk punt alle posities worden gesloten en de EA reset voor een nieuwe serie.
Waarschuwing: De Martingale strategie staat bekend om hoge drawdowns en een hoog risico op kapitaalverlies omdat de lotgrootte na elke verliezende stap toeneemt.
Gerelateerde berichten
- MQL5 Wizard: Handelsignalen Geïnspireerd Door Morning/Evening Stars + MFI voor MetaTrader 5
- MQL5 Wizard: Handelsignalen Gebaseerd op Morning/Evening Stars + Stochastic voor MetaTrader 5
- MQL5 Wizard: Handelsignalen Geïnspireerd door Morning/Evening Stars en RSI voor MetaTrader 5
- MQL5 Wizard: Handelsignalen op Basis van Hammer/Hanging Man + MFI voor MetaTrader 5
- MQL5 Wizard: Handelsignalen op basis van Hammer/Hanging Man + RSI voor MetaTrader 5