Stratégie de trading quantitative de rupture de prix clé à long terme de Livermore

ATR Pivot Points Trend Analysis JESSE LIVERMORE risk management
Date de création: 2025-07-16 11:24:22 Dernière modification: 2025-08-07 10:07:04
Copier: 0 Nombre de clics: 326
2
Suivre
319
Abonnés

Stratégie de trading quantitative de rupture de prix clé à long terme de Livermore Stratégie de trading quantitative de rupture de prix clé à long terme de Livermore

Aperçu

La stratégie de négociation quantitative de rupture de prix clé à plusieurs têtes de Livermore est une méthode de négociation systématique basée sur la philosophie de négociation de Jesse Livermore. La stratégie capture avec précision le moment où le prix franchit les points critiques de soutien et de résistance en identifiant les principales tendances du marché, les retournements naturels et les retournements secondaires.

Principe de stratégie

Cette stratégie est basée sur la philosophie de trading de Jesse Livermore et divise les tendances du marché en six états: tendance haussière principale (MAIN_UP), tendance baissière principale (MAIN_DOWN), rebond naturel (NATURAL_REBOUND), rebond naturel (NATURAL_RETRACEMENT), rebond secondaire (SECONDARY_REBOUND) et rebond secondaire (SECONDARY_RETRACEMENT).

La stratégie consiste à déterminer l’état de la tendance du marché en calculant la relation entre le prix actuel et les points clés historiques, en combinaison avec un rapport de distance pivot par défaut (qui peut être un pourcentage fixe ou basé sur un calcul dynamique de l’ATR). La logique est la suivante:

  1. Dans une tendance majeure à la hausse, maintenir l’état de tendance à la hausse et renouveler le point le plus élevé lorsque la hausse ou la reprise des prix ne dépasse pas la limite définie par le multiplicateur de l’axe principal; lorsque la reprise dépasse la limite, passer à l’état de reprise naturelle.

  2. Dans une tendance majeure à la baisse, maintenir un état de tendance à la baisse et mettre à jour le point le plus bas lorsque les prix continuent à baisser ou lorsque le rebond ne dépasse pas le seuil défini par le multiplicateur de l’axe majeur; passer à un état de rebond naturel lorsque le rebond dépasse le seuil.

  3. La conversion de tendance entre les rebonds naturels et les rebonds secondaires est jugée en fonction de la relation entre le prix et les hauts et les bas historiques, ainsi que des multiples de l’axe principal et secondaire prédéfinis.

La logique de génération de signaux de négociation est la suivante: établir une position de multiples lorsque deux cycles consécutifs de tendance confirment une tendance à la hausse principale; et une position de placement lorsque deux cycles consécutifs de tendance confirment une tendance à la baisse principale.

Avantages stratégiques

  1. Systématisation des jugements de tendanceLa stratégie consiste à systématiser la théorie de la négociation de Livermore, en définissant les différents états de tendance par des modèles mathématiques clairs, éliminant ainsi les incertitudes liées au jugement subjectif.

  2. Très adaptable: La flexibilité de la stratégie est renforcée par la possibilité d’adapter la stratégie à différents environnements de marché et conditions de volatilité grâce à des pourcentages de distance de pivot paramétrables et des options ATR.

  3. Mécanisme de confirmationLa stratégie exige deux cycles consécutifs de confirmation de la tendance avant d’exécuter une transaction, ce qui réduit efficacement les pertes causées par les fausses ruptures.

  4. Intégration de la gestion des fondsStratégie: Utiliser les pourcentages d’intérêt des comptes pour gérer les positions, en veillant à maintenir une marge de risque uniforme pour les différentes tailles de comptes.

  5. Capture des tendances à long termeEn distinguant les tendances majeures des tendances secondaires, la stratégie capture efficacement les tendances macrocycliques et évite d’être perturbée par le bruit à court terme.

Risque stratégique

  1. Risque de retard: La stratégie nécessite de confirmer l’état de la tendance sur deux cycles avant d’exécuter la transaction, ce qui peut entraîner la perte d’une partie des bénéfices au début de la tendance ou la perte d’un retrait plus important lorsque la tendance est inversée.

  2. Paramètre SensibilitéLes performances de la stratégie dépendent fortement de paramètres tels que le pourcentage de distance entre les axes pivots, le nombre de multiplications des axes pivots principaux et secondaires, et les paramètres inappropriés peuvent entraîner des transactions excessives ou des signaux importants manqués.

  3. Restrictions sur les transactions à sens unique: La stratégie est conçue pour exécuter uniquement des transactions à plusieurs titres, ce qui peut entraîner une plus longue période d’immobilisation dans un marché à la baisse, ce qui affecte le taux de rendement global.

  4. La complexité de la définition des tendances: La logique de conversion entre les six états de tendance est plus complexe et peut entraîner des changements d’état fréquents en cas de forte volatilité du marché, augmentant les coûts de transaction.

  5. Manque de mécanisme de prévention: Le code n’a pas de paramètre de stop loss explicite, ce qui pourrait entraîner des pertes importantes en cas de reprise brutale du marché.

Orientation de l’optimisation de la stratégie

  1. Augmentation du mécanisme de prévention des pertesIntroduction d’une stratégie de stop loss basée sur l’ATR ou un pourcentage fixe pour contrôler le risque d’une seule transaction avant le renversement de la tendance. La mise en œuvre concrète permet de définir un prix de stop loss tout en établissant des positions multiples pour protéger la sécurité des fonds.

  2. Optimisation du mécanisme de confirmation de tendance: La stratégie actuelle nécessite deux cycles consécutifs de confirmation de tendance. On peut envisager de combiner le trafic ou d’autres indicateurs techniques pour la confirmation de tendance et améliorer la qualité du signal.

  3. Ajout d’une fonction de prévisualisationExpansion de la stratégie pour soutenir les transactions aériennes, exploiter les opportunités de profit dans les tendances baissières et améliorer la performance de la stratégie tout au long de la saison

  4. Ajustement des paramètres dynamiquesL’introduction d’un mécanisme d’ajustement des paramètres dynamiques basé sur la volatilité historique ou l’état du marché permet à la stratégie de mieux s’adapter aux différentes conditions du marché.

  5. Ajout de conditions de filtrageLe filtrage de base, combiné à des filtres cycliques, saisonniers ou fondamentaux, permet d’éviter les positions dans des conditions défavorables et d’améliorer le taux de victoire.

  6. Construction par lots et stockageLe but de ce projet est de mettre en place un mécanisme d’entrée et de sortie par lots, de réduire le risque de sélection des opportunités et d’optimiser l’efficacité de l’utilisation des fonds.

Résumer

La stratégie de négociation quantifiée de rupture des cours clés de plusieurs têtes de Livermore a réussi à transformer la philosophie de négociation classique de Jesse Livermore en un système algorithmique d’exécution quantifiable. En définissant avec précision les six états de tendance du marché et leurs conditions de conversion, la stratégie est capable d’identifier et de suivre efficacement les principales tendances à la hausse et d’exécuter des transactions multiples sur la base de tendances confirmées.

Bien que les stratégies présentent des avantages tels que la systématisation, l’adaptabilité et le mécanisme de confirmation intégré, elles sont également exposées à des risques tels que le retard, la sensibilité des paramètres et le manque de stop loss. L’optimisation de la direction de l’augmentation du mécanisme de stop loss, de l’optimisation de la reconnaissance des tendances, de l’extension de la fonction de blanchiment et de la réalisation de l’ajustement des paramètres dynamiques peut améliorer encore la stabilité et la rentabilité des stratégies.

Dans l’ensemble, la stratégie fournit un cadre solide pour les investisseurs qui cherchent à mettre en œuvre la philosophie de trading de Livermore de manière systématique, avec des rendements stables et à long terme sur les transactions réelles, grâce à un ajustement approprié des paramètres et à une optimisation de la gestion des risques.

Code source de la stratégie
/*backtest
start: 2024-07-16 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bozhang_ox

//@version=6
strategy("Trading strategy Jesse Livermore", overlay=true)

// Input parameters
pivot_distance_percentage = input.float(0.5, title="Pivot Distance Percentage")
major_pivot_multiplier = input.int(6, title="Major Pivot Multiplier")
minor_pivot_multiplier = input.int(3, title="Minor Pivot Multiplier")
use_atr_pivot_distance = input.bool(false, title="Use ATR for Pivot Distance")
atr_period = input.int(14, title="ATR Period")
atr_pivot_multiplier = input.float(1, title="ATR Pivot Multiplier")

// Calculate ATR
atr = ta.atr(atr_period)

// Helper function to calculate pivot distance ratio
pivot_distance_ratio = use_atr_pivot_distance ? (atr * atr_pivot_multiplier) / close : pivot_distance_percentage / 100

// Trend states
NONE = 0
MAIN_UP = 6
MAIN_DOWN = 1
NATURAL_REBOUND = 2
NATURAL_RETRACEMENT = 5
SECONDARY_REBOUND = 4
SECONDARY_RETRACEMENT = 3

// Variables to track trends
var float main_up_max = na
var float main_down_min = na
var float natural_rebound_max = na
var float natural_retracement_min = na
var int trend = NONE
var int prev_trend = NONE
var int prev_prev_trend = NONE


// Initialize variables
if na(main_up_max)
    main_up_max := -1e10
if na(main_down_min)
    main_down_min := 1e10
if na(natural_rebound_max)
    natural_rebound_max := -1e10
if na(natural_retracement_min)
    natural_retracement_min := 1e10

// Trend logic
if trend == NONE
    if close > close[1]
        trend := MAIN_UP
        main_up_max := close
    else
        trend := MAIN_DOWN
        main_down_min := close
else if trend == MAIN_UP
    if close > close[1] or (main_up_max - close < close[1] * pivot_distance_ratio * major_pivot_multiplier)
        trend := MAIN_UP
        main_up_max := math.max(main_up_max, close)
    else
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close
else if trend == MAIN_DOWN
    if close < close[1] or (close - main_down_min < close[1] * pivot_distance_ratio * major_pivot_multiplier)
        trend := MAIN_DOWN
        main_down_min := math.min(main_down_min, close)
    else
        trend := NATURAL_REBOUND
        natural_rebound_max := close
else if trend == NATURAL_REBOUND
    if close > close[1]
        if close <= main_up_max
            if close - natural_rebound_max <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
                trend := NATURAL_REBOUND
                natural_rebound_max := math.max(natural_rebound_max, close)
            else
                trend := MAIN_UP
                main_up_max := close
        else
            trend := MAIN_UP
            main_up_max := close
    else
        if natural_rebound_max - close <= close[1] * pivot_distance_ratio * major_pivot_multiplier
            trend := NATURAL_REBOUND
        else if close < natural_retracement_min
            trend := NATURAL_RETRACEMENT
            natural_retracement_min := close
        else
            trend := SECONDARY_RETRACEMENT
else if trend == NATURAL_RETRACEMENT
    if close < close[1]
        if close >= main_down_min
            if natural_retracement_min - close <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
                trend := NATURAL_RETRACEMENT
                natural_retracement_min := math.min(natural_retracement_min, close)
            else
                trend := MAIN_DOWN
                main_down_min := close
        else
            trend := MAIN_DOWN
            main_down_min := close
    else
        if close - natural_retracement_min <= close[1] * pivot_distance_ratio * major_pivot_multiplier
            trend := NATURAL_RETRACEMENT
        else if close > natural_rebound_max
            trend := NATURAL_REBOUND
            natural_rebound_max := close
        else
            trend := SECONDARY_REBOUND
else if trend == SECONDARY_REBOUND
    if close <= natural_rebound_max and close >= natural_retracement_min
        trend := SECONDARY_REBOUND
    else if close < natural_retracement_min
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close
    else
        trend := NATURAL_REBOUND
        natural_rebound_max := close
else if trend == SECONDARY_RETRACEMENT
    if close >= natural_retracement_min and close <= natural_rebound_max
        trend := SECONDARY_RETRACEMENT
    else if close > natural_rebound_max
        trend := NATURAL_REBOUND
        natural_rebound_max := close
    else
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close


// Execute trades based on trend changes
if prev_trend != prev_prev_trend
    if trend == MAIN_UP and prev_trend == MAIN_UP
        strategy.entry("Long Entry", strategy.long, comment="Long Entry")
    else if trend == MAIN_DOWN and prev_trend == MAIN_DOWN
        strategy.close("Long Entry", comment = "Long Close")

// Update previous trend
prev_prev_trend := prev_trend
prev_trend := trend