Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
95
Note:
(3)
Publié:
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

GBPUSD 1H RC4 Cycle - vrai backtest non optimisé


Cet Expert Advisor est un système multi-stratégies divisé en quatre sous-systèmes de trading indépendants (Cycle 1 à Cycle 4). Chaque cycle fonctionne avec son propre « Magic Number », ses indicateurs, ses déclencheurs d’entrée et ses paramètres de gestion de capital spécifiques.

1. Logique du Cycle 1 : convergence de plusieurs indicateurs

Le Cycle 1 s'appuie sur un filtre composite combinant jusqu'à trois moyennes mobiles (MA), un indice de force relative (RSI) et un pourcentage de variation de Williams (WPR).

Déclencheurs d’entrée

Une variable centrale, c1_signal, fait office de registre binaire pour garantir que les indicateurs ne se contredisent pas. Si l’indicateur A émet un signal d’achat, c1_signal prend la valeur 1. Si l’indicateur B émet ensuite un signal de vente, c1_signal est réinitialisé à 0 pour invalider la transaction.

  • Moyennes mobiles 1, 2 et 3 :

    • Condition d’achat : la barre précédente clôture au-dessus de la moyenne mobile, et la barre actuelle ouvre au-dessus de la moyenne mobile ($Close[1] > MA$ et $Open[0] > MA$).

    • Condition de vente : la barre précédente clôture en dessous de la moyenne mobile, et la barre actuelle s’ouvre en dessous de la moyenne mobile ($Close[1] < MA$ et $Open[0] < MA$).

  • Filtre RSI :

    • Condition d’achat : le RSI passe en dessous du seuil de survente ( RSI_Buy_Level , par exemple 30).

    • Condition de vente : le RSI dépasse le seuil de surachat ( RSI_Sell_Level , par exemple 70).

  • Filtre WPR :

    • Condition d'achat : le WPR passe en dessous de WPR_Buy_Level (par exemple, -80).

    • Condition de vente : le WPR dépasse le niveau WPR_Sell_Level (par exemple, -20).

Traitement des signaux

  • Règle des signaux inversés : si Reverse_Signals = true, un signal d'achat final (1) se transforme en signal de vente (2), et inversement.

  • Contrainte « une transaction par barre » : l’EA vérifie si le cours d’ouverture actuel correspond à c1_open_price. Si c’est le cas, une position a déjà été traitée sur cette barre, et toute nouvelle exécution est bloquée jusqu’à l’ouverture d’une nouvelle barre.

2. Logique du cycle 2 : suivi de tendance avec des enveloppes

Le cycle 2 utilise un indicateur classique d’enveloppes à double bande pour identifier les cassures structurelles du marché.

  • Déclencheur d’achat : la barre précédente clôture au-dessus de la bande supérieure de l’enveloppe, et la barre actuelle s’ouvre au-dessus de celle-ci ($Close[1] > UpperBand$ et $Open[0] > UpperBand$). Cela suppose une forte cassure haussière.

  • Déclencheur de vente : la barre précédente clôture en dessous de la bande inférieure de l’enveloppe, et la barre actuelle ouvre en dessous de celle-ci ($Close[1] < LowerBand$ et $Open[0] < LowerBand$), indiquant une cassure baissière.

  • Inversion des signaux : si Reverse_Signals2 = true, les cassures sont considérées comme des faux signaux (le signal de cassure à la baisse/à la hausse est ignoré).

3. Logique du cycle 3 : retour à la moyenne des enveloppes

Le cycle 3 suit des paramètres identiques à ceux du cycle 2, mais inverse la logique d’exécution par défaut pour cibler le retour à la moyenne (atténuation des extrêmes).

  • Déclencheur d’achat : la barre précédente clôture au-dessus de la bande supérieure de l’enveloppe, et la barre actuelle ouvre au-dessus de celle-ci. Logique : le code attribue ici un signal de vente, car il part du principe que l’actif est surévalué et qu’il va revenir à l’intérieur des bandes.

  • Déclencheur de vente : la barre précédente clôture en dessous de la bande inférieure de l’enveloppe, et la barre actuelle ouvre en dessous de celle-ci. Logique : le code attribue ici un signal d’achat, pariant sur un rebond immédiat depuis la zone de survente.

4. Logique du cycle 4 : cassure de la distance au point des enveloppes

Le cycle 4 introduit une contrainte stricte de volatilité/distance en pips dans l’indicateur « Envelopes », agissant ainsi comme un système de cassure agressif.

  • Déclencheur d’achat : la distance entre la bande inférieure de l’enveloppe et la clôture précédente est supérieure à Distance en points, ET la distance entre la bande inférieure de l’enveloppe et le cours acheteur actuel est également supérieure à Distance ($LowerBand - Close[1] > Distance$ et $LowerBand - Bid > Distance$).

  • Déclencheur de vente : la distance entre le cours de clôture précédent et la bande supérieure, ainsi que celle entre le cours acheteur actuel et la bande supérieure, dépassent toutes deux la « Distance » ($Close[1] - UpperBand > Distance$ et $Bid - UpperBand > Distance$).

5. Sortie, clôture du panier et logique de gestion des risques

L’architecture de gestion des sorties n’utilise pas d’ordres standard de Stop Loss (SL) ou de Take Profit (TP) par position. Elle s’appuie plutôt sur un système global de suivi du panier de capital du compte, cartographié par cycle.

Saisie des jalons

Lorsque le nombre de positions d’un cycle passe de 0 à 1 (suivi via c1_Buycount == 0 ou c1_Sellcount == 0), l’EA référence la valeur exacte de la capitalisation de référence du compte de trading à ce moment précis :

$$\text{Capital de référence} = \text{AccountInfoDouble}(\text{ACCOUNT\_EQUITY})$$

À partir de cette valeur de référence, il définit des objectifs globaux statiques pour cette direction de trading spécifique :

  • Objectif de prise de bénéfices : si target_amount est spécifié, il attribue $\text{Valeur de référence} + \text{target\_amount}$. Sinon, il utilise une formule en pourcentage :

    $$\text{Prix cible} = \text{Valeur de référence} + \left(\frac{\text{Valeur de référence} \times \text{target\_percent}}{100}\right)$$
  • Objectif de stop loss : utilise une contrainte de drawdown en pourcentage par rapport à la valeur du capital capturée à un instant donné :

    $$\text{Prix de risque} = \text{Baseline} - \left(\frac{\text{Baseline} \times \text{Account\_Risk\_percent}}{100}\right)$$

Vérification dynamique du panier

À chaque tick, l’EA calcule le cumul des gains/pertes flottants en temps réel, des swaps et des commissions pour toutes les positions actives correspondant au Magic Number et au type de transaction ( MyAccountProfit_Buy ou MyAccountProfit_Sell ) de ce cycle spécifique.

$$\text{Valeur actuelle du portefeuille} = \text{Capital de référence} + \text{Gains/pertes latents}$$

Exécution de la sortie

Si $\text{Valeur actuelle du portefeuille} \ge \text{Prix cible}$ (objectif de profit atteint) OU $\text{Valeur actuelle du portefeuille} \le \text{Prix de risque}$ (dépassement du plafond de risque maximal) :

  1. L’EA appelle la fonction ClosePositions().

  2. Il parcourt toutes les positions en sens inverse, en filtrant celles qui correspondent au « Magic Number » et au type de position.

  3. Chaque transaction corrélée est instantanément liquidée via un ordre au marché.

  4. Le compteur de cycle de direction est remis à 0, ce qui permet à l’EA d’établir un instantané de référence entièrement nouveau lors du prochain signal de l’indicateur structurel.

6. Logique de dimensionnement (gestion de capital)

Les calculs de volume sont effectués de manière dynamique par la routine getLots(int cycle) :

  • Lotage fixe : si AutoLots est faux, elle renvoie le paramètre de taille de lot de base codé en dur (par exemple, LotSize = 0,01).

  • Mise à l'échelle dynamique du risque : si AutoLots = true, le système ajuste automatiquement le volume de la transaction en fonction de la marge disponible :

    1. Il interroge la marge exacte requise pour traiter une transaction standard de 1,0 lot sur l’actif actuel à l’aide de OrderCalcMargin.

    2. Il estime la capacité d’investissement disponible à l’aide de la formule suivante :

      $$\text{Volume projeté} = \frac{\text{AccountFreeMargin} \times \left(\frac{\text{Lots\_Risk}}{100}\right)}{\text{Marge par lot de 1,0}}$$
    3. Le résultat final est limité par les contraintes imposées par le courtier à l’aide de MathMin et MathMax afin de garantir qu’il se situe précisément dans la plage valide comprise entre SYMBOL_VOLUME_MIN et SYMBOL_VOLUME_MAX, arrondi proprement à l’unité de volume de l’actif boursier la plus proche (SYMBOL_VOLUME_STEP).

Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/74818

FX Dashboard FX Dashboard

This is a FX Dashboard style terminal panel on the MT5 chart, plus lines drawn on the chart (EMA, Bollinger, Donchian).

Day Trader Dashboard Day Trader Dashboard

The Day Trader Dashboard is a Bloomberg-style visual panel for MetaTrader 5 that tracks an intraday price range and flags when price is inside it (fade zone) or has broken out of it. It doesn't place trades — it's a decision-support overlay that computes the range High/Low from recent bars, draws those levels directly on the chart, and shows a live status readout (scanning / within range / breakout) in a themed, auto-scaling panel. It supports multiple independent instances on the same chart, several color themes, and cleans up 100% of its objects when removed.

MA + Envelope Breakouts MA + Envelope Breakouts

Ruptures basées sur un canal ou une bande d'enveloppe, logique multi-EA dans un seul EA

MT5 EA Acceptance Harness MT5 EA Acceptance Harness

Deterministic synthetic acceptance checks for MT5 EA entry-state logic, with no market, account or order access.