Stratégie de trading multi-périodes basée sur la classification de Lorenz

EMA CI HTF TA
Date de création: 2024-07-31 11:49:32 Dernière modification: 2024-07-31 11:49:32
Copier: 0 Nombre de clics: 673
1
Suivre
1617
Abonnés

Stratégie de trading multi-périodes basée sur la classification de Lorenz

Aperçu

Cette stratégie est un système de trading à plusieurs périodes, basé sur la classification de Lorentz, combinant un prix cible et un mécanisme de stop-loss dynamique. Elle utilise les moyennes mobiles (EMA) et les indices de classement (CI) pour identifier les tendances du marché et effectuer une analyse croisée sur les périodes de temps élevé et les périodes de temps actuelles.

Principe de stratégie

Le cœur de la stratégie est la classification de Lorentz, qui combine une moyenne mobile triple indice (EMA) et un indice de classification (CI) pour générer un signal de transaction. Les étapes sont les suivantes:

  1. Calculer une triple EMA: EMA1, EMA2 et EMA3
  2. Le calcul de l’indice de classification est le suivant: CI = (EMA1 - EMA2) / (0.015 * EMA ((((EMA1 - EMA2 , long)) * 100。
  3. La ligne de Lorentz est égale à EMA3 + CI.

Les stratégies calculent la ligne de Lorentz à la fois sur la période actuelle et sur les périodes supérieures pour fournir une perspective multidimensionnelle du marché. Les signaux de transaction sont basés sur la croisée des prix avec la ligne de Lorentz et sont confirmés par un mécanisme de rétroaction. Les signaux d’achat sont déclenchés lorsque le prix traverse la ligne de Lorentz et que le prix le plus bas de la période de rétroaction est inférieur à la ligne de Lorentz.

La stratégie a également introduit un mécanisme de prix cible qui détermine le point de sortie en fonction du pourcentage de cible fixé par l’utilisateur. Parallèlement, il a également réalisé un stop loss dynamique pour contrôler le risque.

Avantages stratégiques

  1. Analyse de plusieurs périodes: en combinant les lignes de Lorentz des périodes actuelles et plus élevées, la stratégie permet de capturer des tendances de marché plus complètes et de réduire les faux signaux.

  2. Identification dynamique des tendances: la classification de Lorentz est capable de s’adapter rapidement aux changements du marché et offre une capacité d’identification de tendances sensible.

  3. Mécanisme de confirmation des signaux: utilisation d’une période de rétroaction pour confirmer les signaux de transaction, réduisant efficacement la probabilité d’une transaction erronée.

  4. Optimisation des prix cibles: en définissant des pourcentages cibles, la stratégie permet de maximiser les bénéfices dans des conditions favorables.

  5. Gestion des risques: introduction d’un mécanisme de stop loss dynamique permettant de contrôler efficacement le risque de chaque transaction.

  6. Visualisation et statistiques: les stratégies offrent une présentation graphique intuitive et des statistiques de négociation qui permettent aux traders d’analyser et d’optimiser la performance des stratégies.

  7. Flexibilité: plusieurs paramètres réglables permettent aux traders d’optimiser en fonction des différentes conditions du marché et des préférences personnelles.

Risque stratégique

  1. Sensitivité des paramètres: la performance d’une stratégie dépend fortement de la sélection des paramètres d’entrée. Une mauvaise configuration des paramètres peut entraîner une survente des transactions ou des opportunités manquées.

  2. Dépendance aux conditions du marché: dans un marché en crise, la stratégie peut générer de fréquents faux signaux, entraînant des pertes continues.

  3. Risque de glissement: dans un marché qui fluctue rapidement, le prix d’exécution réel peut être significativement différent du prix du signal.

  4. Risque d’optimisation excessive: un ajustement excessif des paramètres pour s’adapter aux données historiques peut entraîner une suradaptation et affecter les performances futures du disque dur.

  5. Les défaillances techniques: les défaillances du système ou les erreurs de données peuvent entraîner des décisions de transaction erronées en fonction de calculs complexes d’indicateurs techniques.

Pour réduire ces risques, il est recommandé de:

  • Les tests de retour et de prospective sont effectués en profondeur.
  • Utiliser des mesures appropriées de gestion des positions et de contrôle des risques.
  • Examiner et ajuster régulièrement les paramètres de la stratégie en fonction des conditions changeantes du marché.
  • Mise en place d’un mécanisme solide de traitement des erreurs et de surveillance.

Orientation de l’optimisation de la stratégie

  1. Ajustement dynamique des paramètres: un mécanisme d’ajustement des paramètres adaptatifs est mis en œuvre pour ajuster automatiquement la longueur et la valeur de la barre d’ouverture de l’EMA en fonction de la volatilité du marché.

  2. Ajout de filtres: introduire des indicateurs techniques ou fondamentaux supplémentaires comme filtres pour améliorer la qualité du signal.

  3. Intégration de l’apprentissage automatique: optimisation du processus de sélection des paramètres et de génération de signaux à l’aide d’algorithmes d’apprentissage automatique.

  4. Analyse de la corrélation entre plusieurs variétés: les données de plusieurs variétés concernées sont prises en compte pour fournir une perspective plus globale du marché.

  5. L’intégration des événements d’actualité: ajout d’une fonctionnalité d’analyse des événements d’actualité pour ajuster les actions stratégiques lors de la publication de données économiques importantes.

  6. Adaptation à la volatilité: le pourcentage et le niveau de stop loss sont ajustés en fonction de la dynamique de la volatilité du marché.

  7. Amélioration de la gestion des risques: mise en place de stratégies de gestion des positions et de contrôle des risques plus complexes, telles que l’ajustement des positions en fonction de la volatilité.

Ces orientations d’optimisation visent à améliorer l’adaptabilité et la stabilité des stratégies, leur permettant de rester performantes dans différentes conditions de marché.

Résumer

La stratégie d’objectifs multi-temporels de la classification de Lorenz est un système de négociation intégré qui combine des méthodes d’analyse technique avancées et un mécanisme de gestion des risques intelligent. Grâce à l’analyse multi-temporelle, à l’identification des tendances dynamiques et à l’optimisation des prix cibles, la stratégie a le potentiel d’obtenir une performance de négociation stable dans une variété de conditions de marché. Cependant, elle est également confrontée à des défis tels que la sensibilité aux paramètres et la dépendance du marché.

Code source de la stratégie
/*backtest
start: 2023-07-31 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lorenzian Classification Strategy with Target and Multi-Timeframe", overlay=true)

// Input parameters
length = input.int(5, "Lorenzian Length", minval=1)
threshold = input.float(1.0, "Threshold", step=0.1)
lookback = input.int(3, "Lookback Candles", minval=1, maxval=20)
targetPercentage = input.float(1.5, "Target Percentage (%)", step=0.1) // Target percentage for exit
higherTimeframe = input.timeframe("D", "Higher Timeframe") // Higher timeframe for multi-timeframe analysis

// Lorenzian Classification calculation for current timeframe
ema1 = ta.ema(hlc3, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)

d = ema1 - ema2
ci = d / (0.015 * ta.ema(math.abs(d), length)) * 100

lorenzian = ema3 + ci

// Lorenzian Classification calculation for higher timeframe
hlc3_htf = request.security(syminfo.tickerid, higherTimeframe, (high + low + close)/3 )
ema1_htf = ta.ema(hlc3_htf, length)
ema2_htf = ta.ema(ema1_htf, length)
ema3_htf = ta.ema(ema2_htf, length)

d_htf = ema1_htf - ema2_htf
ci_htf = d_htf / (0.015 * ta.ema(math.abs(d_htf), length)) * 100

lorenzian_htf = ema3_htf + ci_htf

// Signal generation
crossUp = ta.crossover(close, lorenzian)
crossDown = ta.crossunder(close, lorenzian)

// Determine color based on price position relative to the line
lineColor = close > ema3 ? color.green : color.red
lineColorH = close > ema3_htf ? color.blue : color.red

// Plot the line with dynamic color
plot(ema3, color=lineColor, title="EMA3", linewidth=2)
plot(ema3_htf, color=lineColorH, title="EMA3 HTF", linewidth=2)

// Function to check for opposite movement
oppositeMove(isLong) =>
    if isLong
        lowest = ta.lowest(low, lookback)
        lowest < lorenzian[lookback]
    else
        highest = ta.highest(high, lookback)
        highest > lorenzian[lookback]

// Generate buy and sell signals
buySignal = crossUp and oppositeMove(true)
sellSignal = crossDown and oppositeMove(false)

// Calculate and manage target price
var float targetPrice = na
var float plotTargetPrice = na
var float entryPrice = na

// Variables to track trade outcomes
var int targetMet = 0
var int targetNotMet = 0
var int totalTrades = 0

if (buySignal)
    strategy.entry("Buy", strategy.long)
    entryPrice := close
    targetPrice := entryPrice * (1 + targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    entryPrice := close
    targetPrice := entryPrice * (1 - targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

// Check if target price is met to exit
if (not na(targetPrice))
    if (strategy.position_size > 0 and high >= targetPrice) // Long position exit condition
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size > 0 and low < entryPrice * (1 - targetPercentage/100)) // Stop loss for long
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1
    
    if (strategy.position_size < 0 and low <= targetPrice) // Short position exit condition
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size < 0 and high > entryPrice * (1 + targetPercentage/100)) // Stop loss for short
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1

// Reset plotTargetPrice when position is closed
if (strategy.position_size == 0)
    plotTargetPrice := na

// Plot signals and target price
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small)
plot(plotTargetPrice, color=color.yellow, title="Target Price", style=plot.style_circles, linewidth=2)

// Add alerts
alertcondition(buySignal, title="Buy Signal", message="Lorenzian Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="Lorenzian Sell Signal")

// Calculate success percentage
successPercentage = totalTrades > 0 ? (targetMet / totalTrades) * 100 : 0

// Create a table to display trade outcomes
var table tradeStats = table.new(position.top_right, 2, 3, border_width=1)
table.cell(tradeStats, 0, 0, "Targets Met", bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 0, "Targets Missed", bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 1, str.tostring(targetMet), bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 1, str.tostring(targetNotMet), bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 2, "Success Rate", bgcolor=color.new(color.blue, 30))
table.cell(tradeStats, 1, 2, str.tostring(successPercentage, "#.##") + "%", bgcolor=color.new(color.blue, 30))