Home Systeemhandel Bericht

Babi Ngepet - De ultieme Expert Advisor voor MetaTrader 5

Bijlage
64444.zip (7.11 KB, Downloaden 2 keer)

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).

  1. Het valideert en normaliseert de lotgrootte op basis van de minimum, maximum en stapgrootte van de broker.

  2. Het controleert op voldoende vrije marge met behulp van CheckMargin().

  3. Het voert de trade uit zonder een vaste Take Profit of Stop Loss (tp_calculated is 0).

  4. 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:

  1. Het valideert de lotgrootte en controleert op voldoende marge.

  2. Het valideert de instapprijs op basis van de minimumafstand van de broker (SYMBOL_TRADE_STOPS_LEVEL).

  3. Het berekent een vaste Take Profit (tp) op basis van de TakeProfit invoer.

  4. 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:

  1. Het kijkt terug naar FindHighLowBackBars om de Hoogste High en Laagste Low te vinden.

  2. Het berekent priceSellLimit (Hoogste High + 1 tick) en priceBuyLimit (Laagste Low - 1 tick).

  3. Het controleert of Buy Limit en Sell Limit orders met de MagicNumber van de EA al bestaan.

  4. 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:

  1. Tijdcontrole: Voorkomt overbodige berekeningen op dezelfde tick.

  2. Filtercontrole: Als handelen niet is toegestaan op basis van dag/datums, worden alle pending orders verwijderd.

  3. 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.

  4. 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.

  5. 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:

  1. 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.

  2. 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).

  3. 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

Reactie (0)