Auteur de l'idée — Vladimir Khlystov, auteur du code MQL5 — barabashkakvn.
La stratégie de trading : le breakout d’un High/Low sur le délai sélectionné. Pour récupérer des positions perdantes, le Système Trading utilise la stratégie "Nevalyashka" combinée à une technique de martingale pour augmenter le volume des lots.
Le Système Trading calcule le prix High et Low dans l'intervalle de temps spécifié allant de "Time start" à "Time end" :

Si le prix dépasse le High de cette période, une position d'achat est ouverte. Si le prix est en dessous du Low, une position de vente est ouverte. Le StopLoss est placé à la frontière opposée de la période, c'est-à-dire au prix Low pour les positions d'achat et au prix High pour les positions de vente. Le TakeProfit est défini en fonction de la hauteur de la période de contrôle.
Si Utiliser le temps de clôture est activé, le paramètre Time close (temps pour fermer toutes les positions) sera actif.
Seules les heures et les minutes sont prises en compte pour les paramètres "Time start", "Time end" et "Time close".
La clôture par StopLoss est surveillée dans OnTradeTransaction.
Lorsque "DEAL_ENTRY_OUT" est détecté, vérifiez le champ commentaire de cette opération. Si le commentaire contient "sl", cela signifie que l'opération a été clôturée par le StopLoss :
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { MqlDateTime str1; TimeToStruct(TimeCurrent(),str1); //--- il y a une chance que cela ait été une fermeture au TakeProfit if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0) { TradeDey=str1.day; return; } //--- il y a une chance que cela ait été une fermeture au StopLoss if(StringFind(deal_comment,"sl",0)!=-1) { if(TradeDey!=str1.day) { Print("Une clôture StopLoss a été détectée!"); double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume); if(deal_type==DEAL_TYPE_SELL) // la position d'achat est clôturée { 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) // la position de vente est clôturée { 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; } }
Ouvrez une position opposée à celle qui a été clôturée (si le type d'opération est "DEAL_TYPE_SELL", alors une position d'achat a été clôturée ; "DEAL_TYPE_BUY" signifie qu'une position de vente a été clôturée), avec un volume de lot augmenté multiplié par K. martin. Si une position a été clôturée avec un bénéfice positif, le Système Trading attend le début du prochain intervalle de temps "Time end", et répète la procédure ci-dessus.
Le paramètre "No loss" signifie le breakeven ; lorsque la moitié du profit de la position est atteinte, le StopLoss est déplacé au prix d'ouverture de la position.
Exemple de test sur EURUSD,M30 :

Commentaire 0