Idee Auteur — Vladimir Khlystov, code auteur — barabashkakvn.
Deze trading strategie draait om het doorbreken van een High/Low binnen een geselecteerde tijdsperiode. Om verliezende posities te herstellen, maakt de EA gebruik van de "Nevalyashka" strategie en past een martingale techniek toe om de lotgrootte te verhogen.
De EA berekent de High en Low prijs in de opgegeven tijdsperiode van "Starttijd" tot "Eindtijd":

Wanneer de prijs de High van deze periode overschrijdt, wordt er een BUY positie geopend. Als de prijs onder de Low ligt, wordt er een SELL positie geopend. De StopLoss wordt ingesteld op de tegenovergestelde grens van de periode, dat wil zeggen op de Low prijs voor BUY posities en op de High prijs voor SELL posities. De TakeProfit wordt bepaald op basis van de hoogte van de controleperiode.
Als Gebruik tijdsluiting is ingesteld op waar, dan is de Tijdsluiting parameter (tijd om alle posities te sluiten) actief.
Bij de parameters "Starttijd", "Eindtijd" en "Tijdsluiting" worden alleen uren en minuten in overweging genomen.
Sluiting door StopLoss wordt gecontroleerd in OnTradeTransaction.
Bij het vinden van "DEAL_ENTRY_OUT", controleer je het commentaarveld van deze deal. Als het commentaar "sl" bevat, betekent dit dat de deal werd gesloten door StopLoss:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { MqlDateTime str1; TimeToStruct(TimeCurrent(),str1); //--- kans dat dit een sluiting op TakeProfit was if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0) { TradeDey=str1.day; return; } //--- kans dat dit een sluiting op StopLoss was if(StringFind(deal_comment,"sl",0)!=-1) { if(TradeDey!=str1.day) { Print("Een sluiting door StopLoss is gedetecteerd!"); double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume); if(deal_type==DEAL_TYPE_SELL) // de kooppositie is gesloten { double SL=m_symbol.Bid()+loss*m_symbol.Point(); double TP=m_symbol.Bid()-loss*m_symbol.Point(); double Lot=LotCheck(deal_volume*InpK_martin); if(Lot==0.0) return; OpenSell(SL,TP,Lot,"Nevalyashka"); if(deal_type==DEAL_TYPE_BUY) // de verkooppositie is gesloten { double SL=m_symbol.Ask()-loss*m_symbol.Point(); double TP=m_symbol.Ask()+loss*m_symbol.Point(); double Lot=LotCheck(deal_volume*InpK_martin); if(Lot==0.0) return; OpenBuy(SL,TP,Lot,"Nevalyashka"); } return; } } }
Open een positie tegenover de gesloten positie (als het dealtype "DEAL_TYPE_SELL" was, dan is er een BUY positie gesloten; "DEAL_TYPE_BUY" betekent dat er een SELL positie is gesloten), met een verhoogde lotgrootte vermenigvuldigd met K. martin. Als een positie werd gesloten met een positieve winst, wacht de Expert Advisor op de starttijd van de volgende periode "Eindtijd", en herhaalt de bovenstaande procedure.
"Geen verlies" parameter betekent de break-even; wanneer de helft van de positie winst is bereikt, wordt de StopLoss verplaatst naar de openingsprijs van de positie.
Voorbeeld als je test op EURUSD, M30:

Gerelateerde berichten
- MQL5 Wizard: Creëer Handelsstrategieën met Bullish en Bearish Engulfing Candlestick Patronen en Stochastic
- MQL5 Wizard: Handelsignalen Geïnspireerd Door Morning/Evening Stars + MFI voor MetaTrader 5
- MQL5 Wizard: Handelsignalen Geïnspireerd door Morning/Evening Stars en RSI voor MetaTrader 5
- Efficiënt Trendvolgend Handelsysteem met Exp_X2MA_JFatl voor MetaTrader 5
- Close Cross MA: Efficiënt Orders Sluiten met MetaTrader 4