Rejoignez notre page de fans
- Vues:
- 138
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Paramètres du conseiller expert (entrées)
Le conseiller expert dispose de plusieurs paramètres externes que l'utilisateur peut modifier pour contrôler son comportement :
Paramètres généraux
| Paramètre | Type de paramètre | Description des paramètres |
| Nombre magique | int | Un identifiant unique pour les transactions de l'EA. |
| Lot initial | double | La taille du lot initial pour le premier trade d'une série. |
| AllowBuy | bool | Indicateur permettant à l'EA d'ouvrir des transactions d'achat (initial et Martingale). |
| AllowSell | bool | Indicateur permettant à l'EA d'ouvrir des transactions de vente (initiales et Martingale). |
| TakeProfit | int | Un Take Profit fixe en points/pips utilisé lors du placement d'ordres en attente (mais pas pour l'exécution du marché). |
| FindHighLowBackBars | int | Le nombre de barres précédentes à regarder en arrière pour déterminer le plus haut et le plus bas pour le placement initial d'un ordre en attente. |
| ResetAfterBars | int | Nombre de barres après lequel les ordres en attente initiaux seront supprimés et réévalués (si aucune position n'est ouverte). |
Stratégie Martingale
| Paramètre | Type de paramètre | Description |
| ReverseMartingale | bool | Si vrai, les transactions Martingale suivantes seront dans la direction opposée à la dernière transaction de la série (il s'agirait typiquement d'une approche anti-Martingale ou de couverture, mais le code ouvre dans la même direction s'il est faux). La logique actuelle suggère d'ouvrir dans la même direction si ReverseMartingale est faux. |
| Multiplicateur de lot | double | Facteur par lequel la taille du lot est multipliée pour la transaction suivante dans la série déficitaire (par exemple, 2 .0 signifie que le lot est doublé). |
| SecureProfitMartingaleTarget | double | Le profit flottant total (dans la devise du compte) auquel toute la série de transactions ouvertes sera clôturée. |
| DistanceMartingalePips | int | La distance (en pips) que le prix doit parcourir par rapport au prix d'ouverture de la dernière transaction avant qu'une nouvelle transaction Martingale ne soit ouverte. |
| MaxTradesInSeries | int | Le nombre maximum de transactions autorisées dans une seule série Martingale. |
Stratégie temporelle
| Paramètre | Type de stratégie | Description |
| AllowMonday... Autoriser le vendredi | bool | Indicateurs permettant d'activer ou de désactiver la négociation certains jours de la semaine. |
| Dates interdites | chaîne de caractères | Liste de dates séparées par des virgules (format AAAA.MM.JJ) pour lesquelles la négociation est interdite. |
Aperçu des fonctions principales
OnInit() (Initialisation)
Définit le nombre magique, le mode de marge et la déviation de l'EA. Il réinitialise les variables d'état Martingale ( s_currentLot , s_totalTradesInSeries , etc.) à leurs valeurs initiales, préparant ainsi un nouveau départ.
OnDeinit() (Désinitialisation)
Une fonction simple de nettoyage, imprimant un message lorsque l'EA est arrêté ou supprimé.
IsTradingDateAllowed() et IsTradingDayAllowed() (Filtres de trading)
Ces fonctions vérifient le jour et la date actuels par rapport aux entrées définies par l'utilisateur ( AllowMonday to AllowFriday et ForbiddenDates ) pour déterminer si le trading est autorisé.
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Exécution du marché)
Cette fonction gère l'ouverture de nouvelles positions de marché (achat ou vente).
-
Elle valide et normalise la taille du lot par rapport au minimum, au maximum et à la taille de l'échelon du courtier.
-
Elle vérifie que la marge libre est suffisante en utilisant CheckMargin() .
-
Il exécute la transaction sans Take Profit ou Stop Loss fixe ( tp_calculated est 0).
-
Elle met à jour les variables d'état Martingale globales : s_currentLot , s_lastOpenPrice , s_seriesType , et s_totalTradesInSeries .
CloseAllPositions()
Interroge toutes les positions actuellement ouvertes et ferme toutes celles qui ont été ouvertes par cet EA (correspondant au nombre magique).
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Placement d'ordres en attente)
Cette fonction place des ordres d'achat ou de vente à cours limité:
-
Elle valide la taille du lot et vérifie que la marge est suffisante.
-
Elle valide le prix d'entrée par rapport à la distance minimale du courtier ( SYMBOL_TRADE_STOPS_LEVEL ).
-
Il calcule un Take Profit ( tp ) fixe basé sur l'entrée TakeProfit.
-
Il envoie la demande de transaction. Remarque : la fonction UpdateHighLowAndOrders fait appel à cette fonction pour placer les ordres initiaux d'achat limite et de vente limite.
UpdateHighLowAndOrders() (Logique d'entrée initiale)
Il s'agit du mécanisme d'entrée initiale lorsqu'aucune position n'est ouverte :
-
Il consulte FindHighLowBackBars pour trouver le High High le plus élevé et le Low le plus bas.
-
Il calcule priceSellLimit (Highest High + 1 tick) et priceBuyLimit (Lowest Low - 1 tick).
-
Il vérifie si des ordres Buy Limit et Sell Limit avec le MagicNumber de l'EA existent déjà.
-
Il place un ordre initial de vente à cours limité juste au-dessus du plus haut récent et un ordre d'achat à cours limité juste en dessous du plus bas récent, chacun utilisant l'InitialLot .
OnTick() (Logique principale)
Le cœur de la logique d'exécution de l'EA :
-
Vérification du temps : Empêche les calculs redondants sur le même tick.
-
Vérification du filtre : Si le trading n'est pas autorisé par jour/date, il supprime tous les ordres en attente.
-
Vérification de l'objectif de profit (Series Exit) : Si eaHasOpenPositions est vrai ET que totalFloatingProfit est ≥ SecureProfitMartingaleTarget, il appelle CloseAllPositions() et réinitialise toutes les variables d'état Martingale pour commencer une nouvelle série.
-
Placement initial de l'ordre : Si !eaHasOpenPositions ET que le trading est autorisé, il réinitialise le statut Martingale et vérifie si une nouvelle barre s'est formée.
-
Si une nouvelle barre s'est formée, il vérifie si barsCount est ≥ ResetAfterBars . Si c'est le cas, il supprime les ordres en attente et appelle UpdateHighLowAndOrders() pour placer de nouveaux ordres initiaux. Si ce n'est pas le cas, il appelle simplement UpdateHighLowAndOrders() .
-
-
Logique de l'étape Martingale : Si eaHasOpenPositions est vrai ET s_totalTradesInSeries est $< MaxTradesInSeries` :
-
Il vérifie si le totalFloatingProfit est négatif ET si le prix a évolué par rapport à la dernière position ouverte d'au moins DistanceMartingalePips .
-
Si les deux conditions sont remplies, il calcule le lot suivant en multipliant s_currentLot par LotMultiplier .
-
Il détermine la direction de l'ordre d'ouverture (soit la même direction que la série, soit l'inverse, sur la base de ReverseMartingale).
-
Il appelle OpenTradeLogic() pour ouvrir la nouvelle position multipliée et poursuivre la série Martingale.
-
Résumé de la stratégie
L'EA "Babi Ngepet" met en œuvre une stratégie Martingale risquée mais potentiellement très rémunératrice, combinée à une entrée initiale de type breakout/range-reversal :
-
Entrée initiale : L'EA place une limite d'achat initiale (en dessous du plus bas récent) et une limite de vente (au-dessus du plus haut récent). Cela suggère une hypothèse initiale de comportement de range-reversal - il entre un achat lorsque le prix baisse à un niveau bas, et une vente lorsque le prix augmente à un niveau haut.
-
Gestion des transactions : Si l'une des transactions initiales est déclenchée et que la position évolue vers une perte globale (profit flottant négatif), et que le prix continue d'évoluer à l'encontre des positions ouvertes sur une distance définie, l'EA ouvre une nouvelle position dans la même direction avec une taille de lot plus importante (Martingale).
-
Stratégie de sortie : La série de transactions continue d'augmenter la taille des lots jusqu'à ce que le bénéfice flottant global de toutes les transactions de la série atteigne la cible SecureProfitMartingale , à ce moment-là, toutes les positions sont fermées et l'EA se réinitialise pour une nouvelle série.
Avertissement : La stratégie Martingale est connue pour ses drawdowns élevés et son risque important de perte de capital car la taille du lot augmente après chaque étape perdante.
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/64444
UtterFractals
Cet indicateur, contrairement aux "fractales" standard et à toutes sortes de zig-zags, montre la "structure du marché intérieur", aussi proche que possible de la réalité.
ÉQUILIBRE-2011
Grille de calcul multidevises avec limitation des risques (version présentée à l'Automated Trading Championship 2011 et mise à jour).
Conseiller expert en théorie des probabilités pour le Forex
Conseiller en théorie des probabilités
Niveaux fractals
L'indicateur FractalLevels affiche un canal construit à l'aide de fractales.