Home Systeemhandel Bericht

Nevalyashka BreakdownLevel: Een Slimme Trading Strategie voor MetaTrader 5

Bijlage
18645.zip (5.92 KB, Downloaden 0 keer)

Idee AuteurVladimir Khlystov, code auteurbarabashkakvn.

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":

Nevalyashka BreakdownLevel

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:

Nevalyashka BreakdownLevel test EURUSD M30

Gerelateerde berichten

Reactie (0)