Stratégie de trading dynamique de l'écart de juste valeur : système de backtesting multi-périodes basé sur la théorie SMC

FVG SMC SL TP Risk-Reward Ratio
Date de création: 2025-03-26 15:27:29 Dernière modification: 2025-03-26 15:27:29
Copier: 2 Nombre de clics: 601
2
Suivre
319
Abonnés

Stratégie de trading dynamique de l’écart de juste valeur : système de backtesting multi-périodes basé sur la théorie SMC Stratégie de trading dynamique de l’écart de juste valeur : système de backtesting multi-périodes basé sur la théorie SMC

Aperçu

La stratégie utilise trois formes de fil pour détecter les déséquilibres d’offre et de demande dans le comportement des prix, et pour effectuer des transactions d’entrée de marché lorsque les prix sont réévalués. La stratégie utilise un rapport de risque-rendement fixe pour la gestion des risques et met en place un mécanisme de placement forcé à des heures spécifiques de la journée pour éviter les risques du jour au lendemain.

Principe de stratégie

Le principe central de la stratégie de négociation de la faille de juste valeur est basé sur les “zones non négociées” ou “fours” laissées par les prix en mouvement rapide. Ces zones représentent de graves déséquilibres d’offre et de demande qui seront généralement “remplis” ou “retestés” à l’avenir.

  1. Mécanisme de détection des faillesLa stratégie utilise un modèle à trois fils pour identifier deux types de FVG:

    • FVG: Le prix minimum actuel du fil est supérieur au prix maximum précédent pour les deux fil, et le prix de clôture du fil précédent est supérieur au prix maximum précédent pour les deux fil.
    • Baisse FVG: le prix le plus élevé de la ligne est inférieur au prix le plus bas des deux lignes précédentes, et le prix de clôture de la ligne précédente est inférieur au prix le plus bas des deux lignes précédentes.
  2. La logique d’entrée de détectionLa stratégie consiste à ne pas entrer immédiatement dans le marché dès la formation du FVG, mais à attendre que le prix réponde à ces zones:

    • FVG: lorsque le prix revient à la limite supérieure de la zone FVG (le point culminant), le signal de multiplication est déclenché.
    • Baisse du FVG: lorsque le prix rebondit jusqu’à la limite inférieure de la zone du FVG (le point bas), déclenche un signal de couverture.
  3. Gestion des risques

    • Le stop loss est placé à la frontière du correspondant FVG (le bas du FVG baissier ou le haut du FVG baissier).
    • L’objectif de profit est calculé sur la base d’un ratio de risque/rendement de 1:2, c’est-à-dire le prix d’entrée ± (le prix d’entrée - le stop-loss) × 2 .
  4. Paie de fin de journéeLa stratégie consiste à liquider automatiquement tous les détenteurs de positions et à éliminer tous les ensembles de FVG à 15h15 (heure indienne) chaque jour, en vue de la prochaine journée de négociation.

  5. Les opérations de superposition: la stratégie permet jusqu’à 5 opérations de superposition (pyramiding), ce qui signifie que plusieurs positions peuvent être détenues dans la même direction, ce qui augmente les gains dans les marchés à forte tendance.

Cette approche exploite la théorie de la discontinuité dans la structure du marché et du comportement des prix pour tenter de capturer le comportement prévisible des prix lorsqu’ils remplissent ces zones d’inégalité.

Avantages stratégiques

Après une analyse approfondie du code, la stratégie a montré plusieurs avantages:

  1. Critères de négociation objectifsLa stratégie utilise des conditions mathématiques bien définies pour identifier les FVG et les points d’entrée, éliminant les jugements subjectifs et améliorant la discipline et la cohérence des transactions.

  2. Transactions basées sur la structure du marchéLa stratégie se concentre sur les zones de véritables déséquilibres de l’offre et de la demande sur le marché, plutôt que de s’appuyer sur les signaux des indicateurs traditionnels, qui ont tendance à être en retard par rapport à l’action des prix.

  3. Les mécanismes de contrôle des risques

    • Le stop loss prédéfini définit le risque maximal de chaque transaction.
    • Le retour sur risque fixe est plus raisonnable que le taux de victoire nécessaire pour assurer des profits à long terme.
    • La clôture obligatoire de la journée élimine le risque du lendemain.
  4. Potentiel de revenu composé: En permettant la superposition de transactions (jusqu’à 5 positions), la stratégie peut augmenter considérablement les gains dans un marché en forte tendance, tout en contrôlant les risques de chaque position par stop loss.

  5. La capacité d’adaptationLa stratégie ne repose pas sur des niveaux de prix fixes, mais identifie dynamiquement les zones critiques dans les conditions actuelles du marché, ce qui les rend adaptables dans différents environnements et outils de marché.

  6. Efficacité de la programmation: Le code utilise l’arithmétique pour stocker les informations FVG et gérer efficacement plusieurs opportunités de transactions potentielles, en veillant à ce que le système puisse suivre et répondre à plusieurs niveaux de prix.

  7. Aide visuelle: Stratégie: affiche les zones de FVG de manière intuitive sur le graphique (le vert est le FVG baissier, le rouge le FVG baissier) pour aider les traders à comprendre le processus de décision du système.

Risque stratégique

Malgré la solide base théorique et les nombreux avantages de cette stratégie, il y a plusieurs facteurs de risque à prendre en compte:

  1. Risque de fausse percée: Dans un marché de consolidation, les prix peuvent toucher plusieurs fois la frontière FVG sans former une tendance continue, entraînant plusieurs arrêts de perte. La solution peut inclure l’ajout de filtres supplémentaires d’environnement de marché ou d’indicateurs de confirmation de tendance.

  2. Risque de transaction de couvertureIl est recommandé de mettre en place des restrictions de risque globales, telles que le risque maximal de toutes les positions ne dépasse pas un certain pourcentage du compte.

  3. Limitation du ratio de retour sur risque fixe: l’utilisation d’un ratio de risque/rendement fixe de 1:2 peut ne pas convenir à toutes les conditions du marché. Dans les marchés à faible volatilité, il peut être difficile d’atteindre un tel objectif; dans les marchés à forte volatilité, il peut être prématuré de se retirer d’une transaction rentable.

  4. Le manque de filtrage du marché: la stratégie génère des signaux dans toutes les conditions du marché, sans tenir compte de la tendance générale ou de l’état de fluctuation. Dans un environnement de forte tendance, la contrepartie FVG peut entraîner des pertes continues. L’ajout d’un filtre de tendance peut améliorer considérablement les performances.

  5. Absence de confirmation de la transaction: la stratégie est basée uniquement sur le comportement des prix et ne prend pas en compte la confirmation du volume des transactions, ce qui peut entraîner la production de faux signaux dans les zones de faible volume des transactions. L’intégration de l’analyse du volume des transactions peut améliorer la qualité du signal.

  6. Problème potentiel de sortie à une heure fixe: Le fait de se retirer à une certaine heure de la journée peut conduire à une sortie prématurée dans une position avantageuse ou à la perte d’une meilleure occasion de se retirer dans une position désavantageuse.

  7. Il s’appuie sur des hypothèses de retracement historique.: Les hypothèses stratégiques sont que le comportement des FVG à l’avenir sera similaire aux modèles observés dans le passé. Les dynamiques du marché peuvent changer et affaiblir l’efficacité de ces modèles. Il est important de ré-optimiser régulièrement les paramètres et de vérifier les hypothèses.

Orientation de l’optimisation de la stratégie

Sur la base d’une analyse approfondie du code, voici quelques pistes d’optimisation possibles:

  1. Filtrage de la structure du marché

    • La mise en place d’un système de détection de tendances plus avancé, permettant de négocier uniquement dans la direction de la tendance FVG.
    • On peut ajouter des filtres de direction de simple moyenne mobile ou des analyses de structure de marché plus complexes.
    • Ces filtres permettent de réduire considérablement les pertes liées aux transactions à contre-courant.
  2. Adaptation à la volatilité

    • L’objectif est de réaliser des objectifs de stop-loss et de profit dynamiques basés sur la volatilité du marché actuel, plutôt que d’utiliser un ratio de retour sur risque fixe.
    • Élargir les objectifs dans des environnements à forte volatilité et les resserrer dans des environnements à faible volatilité.
    • La volatilité peut être quantifiée avec l’ATR (Average True Range) ou un indicateur similaire.
  3. Confirmation de la transaction

    • Ajout d’une condition de volume de transactions pour s’assurer que le volume de transactions est suffisant pour soutenir la formation et la réévaluation du FVG.
    • Cela permet de réduire les faux signaux dans les environnements à faible mobilité.
  4. Adaptation à la taille de la position

    • La taille de position dynamique est basée sur le taux de victoire historique, la volatilité actuelle et les caractéristiques spécifiques du FVG.
    • Il est possible d’augmenter la taille de position pour des FVG plus “propres” (un modèle à trois lignes plus clair) ou pour des FVG formées dans des tendances fortes.
  5. Analyse de plusieurs périodes

    • Intégrer l’analyse des FVG des périodes plus élevées, en donnant la priorité aux signaux alignés sur les FVG des périodes plus élevées.
    • Cette approche permet d’améliorer la qualité du signal et le taux de réussite global.
  6. Les opérations de superposition intelligente

    • Modification de la logique de superposition des transactions en fonction de la force de la tendance et du succès des transactions précédentes.
    • On peut augmenter la probabilité de superposition après une transaction gagnante et la diminuer après une transaction perdante.
  7. Le renforcement de l’apprentissage automatique

    • La mise en œuvre d’algorithmes d’apprentissage automatique pour identifier les caractéristiques des FVG les plus susceptibles de réussir.
    • Cela peut inclure l’analyse de facteurs tels que la taille des FVG, la vitesse de leur formation et le contexte du marché.
  8. Cadre de rétroaction statistique

    • Développer un cadre de rétroaction plus complet pour évaluer la performance de la stratégie dans différentes conditions de marché.
    • L’utilisation de simulations de Monte-Carlo pour évaluer les résultats attendus dans différentes combinaisons de paramètres et conditions de marché.

Résumer

La stratégie de négociation intraday de l’écart de valeur équitable dynamique offre une méthode systématique pour identifier et négocier les zones d’inégalité d’offre et de demande sur le marché. Grâce à l’utilisation du modèle FVG à trois lignes et des règles d’entrée de rétroaction claires, la stratégie a à la fois une solidité théorique et une fonctionnalité pratique. Son cadre de gestion des risques robuste, comprenant des stop-loss prédéfinis, des rapports de rendement des risques fixes et des mécanismes de placement à terme, fournit une base solide pour la discipline de négociation.

Les principaux avantages de la stratégie résident dans son objectivité et son approche basée sur la structure du marché, ce qui lui permet de rester pertinent dans différents environnements de marché. Cependant, l’efficacité de la stratégie peut être considérablement améliorée par la mise en œuvre de directions d’optimisation des recommandations, en particulier l’ajout de filtres d’environnement de marché, d’ajustements basés sur la volatilité et de confirmation des volumes de transactions.

Il convient de noter que toute stratégie de trading, aussi parfaite soit-elle, ne garantit pas le succès. Une transaction réussie nécessite non seulement une stratégie solide, mais également une discipline d’exécution stricte, une gestion appropriée des fonds et une compréhension approfondie du marché.

Code source de la stratégie
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)

// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()

detectFVG() =>

    // Bullish FVG: Current low > prior high AND next high < current low
    bullCondition = low > high[2] and close[1] > high[2]
    // Bearish FVG: Current high < prior low AND next low > current high
    bearCondition = high < low[2] and close[1] < low[2]


    if bullCondition 
        // log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
        array.push(bullFVGHigh, low)
        array.push(bullFVGLow, low[2])
        array.push(bullFVGIndex, bar_index)

    
    if bearCondition
        // log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
        array.push(bearFVGHigh, high[2])
        array.push(bearFVGLow, high)
        array.push(bearFVGIndex, bar_index)

detectFVG()

// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
    // log.info("{0} : {1}", bar_index, time)
    i = array.size(arrayHigh) - 1
    
    while i >= 0

        // log.info("barIndex : {0}" , array.get(barIndex, i))
        // log.info("bar_index : {0}" , bar_index)
        
        if array.get(barIndex, i) <  bar_index
            
            fvgHigh = array.get(arrayHigh, i)
            fvgLow = array.get(arrayLow, i)
            // log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
            
            if direction == "long" and low <= fvgHigh
                // log.info("entering long")
                sl = array.get(arrayLow, i)  // Previous candle's low
                entry = close
                tp = entry + (entry - sl)*2
                strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
                strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
                array.remove(arrayHigh, i)
                array.remove(arrayLow, i)
                array.remove(barIndex, i)
            
            if direction == "short" and high >= fvgLow
                // log.info("entering short")
                sl = array.get(arrayHigh, i)   // Previous candle's low
                entry = close
                tp = entry - (sl - entry)*2
                strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
                strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
                array.remove(arrayHigh, i)
                array.remove(arrayLow, i)
                array.remove(barIndex, i)
        
        i := i - 1


checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")

// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
    strategy.close_all()
    array.clear(bullFVGHigh)
    array.clear(bullFVGLow)
    array.clear(bearFVGHigh)
    array.clear(bearFVGLow)
    array.clear(bullFVGIndex)
    array.clear(bearFVGIndex)