Stratégie de trading dynamique basée sur le Z-score et la supertrend : système de commutation long-short

RSI ATR SMA
Date de création: 2024-11-27 16:01:20 Dernière modification: 2024-11-27 16:01:20
Copier: 0 Nombre de clics: 528
1
Suivre
1617
Abonnés

Stratégie de trading dynamique basée sur le Z-score et la supertrend : système de commutation long-short

Aperçu

Cette stratégie est un système de trading quantitatif qui combine une méthode statistique de Z-Score, un indicateur relativement fort (RSI) et un indicateur de Supertrend (Supertrend). La stratégie cherche des opportunités de trading à haute probabilité sur le marché en surveillant l’écart statistique des prix, en combinant les indicateurs de dynamique et la confirmation de la tendance.

Principe de stratégie

La logique centrale de la stratégie est basée sur la synergie de trois principaux indicateurs techniques: d’abord, la mesure de l’écart du prix actuel par rapport à la moyenne historique par le calcul d’un Z-score, qui utilise une moyenne mobile et un écart-type de 75 cycles. Lorsque le Z-score est supérieur à 1,1 ou inférieur à -1,1, il indique un écart statistique significatif.

Avantages stratégiques

  1. Confirmation de signaux multiples: amélioration de la fiabilité des signaux de trading en combinant les trois dimensions de l’indicateur: statistique, dynamique et tendance.
  2. Adaptabilité: la méthode de calcul du score Z permet à la stratégie de s’adapter à différents environnements de marché sans être affectée par le niveau de prix absolu.
  3. Contrôle des risques amélioré: l’indicateur de tendance super offre un suivi automatique des tendances et un mécanisme de contrôle des risques.
  4. La stratégie permet de saisir les opportunités dans les deux sens de l’espace libre, ce qui améliore l’efficacité de l’utilisation des fonds.
  5. Signal clair: la stratégie utilise des modèles mathématiques clairs et des indicateurs objectifs, évitant ainsi les jugements subjectifs.

Risque stratégique

  1. Risque de retard: la stratégie peut être en retard de signal dans un marché en évolution rapide en raison de l’utilisation de moyennes mobiles sur plusieurs cycles.
  2. Risque de fausse rupture: Il est possible que des signaux de fausse rupture se produisent fréquemment sur les marchés de gré à gré.
  3. Sensitivité des paramètres: l’efficacité de la stratégie dépend fortement du choix des paramètres, différents paramètres peuvent être nécessaires dans différents environnements de marché.
  4. La dépendance aux conditions du marché: dans les marchés où la tendance n’est pas évidente, la performance de la stratégie peut ne pas être optimale.

Orientation de l’optimisation de la stratégie

  1. Ajustement dynamique des paramètres: un mécanisme d’adaptation des paramètres peut être introduit pour ajuster automatiquement les paramètres de la baisse du Z-score et de la tendance à la hausse en fonction de la volatilité du marché.
  2. Ajout d’un filtre d’environnement de marché: ajout d’un module d’identification d’environnement de marché qui utilise une combinaison de paramètres différente dans différentes conditions de marché.
  3. Amélioration des mécanismes d’arrêt des pertes: introduction de stratégies d’arrêt dynamiques, telles que l’arrêt basé sur l’ATR ou le suivi des pertes.
  4. Filtrage optimisé des signaux: vous pouvez ajouter la confirmation de transaction ou d’autres indicateurs techniques pour filtrer davantage les signaux de transaction.
  5. Introduction du filtrage temporel: envisagez d’augmenter la limite de la fenêtre de temps de négociation pour éviter les périodes de plus grande volatilité.

Résumer

Il s’agit d’une stratégie de négociation quantitative qui combine méthodes statistiques et d’analyse technique pour améliorer la fiabilité des transactions grâce à la confirmation de signaux multiples. Les principaux avantages de la stratégie résident dans ses modèles mathématiques objectifs et ses mécanismes de contrôle des risques, mais il faut également prêter attention à l’optimisation des paramètres et à la question de l’adaptabilité du marché.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-26 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true)

// Inputs for Z-Score
len = input.int(75, "Z-Score Lookback Length")
z_long_threshold = 1.1  // Threshold for Z-Score to open long
z_short_threshold = -1.1  // Threshold for Z-Score to open short

// Z-Score Calculation
z = (close - ta.sma(close, len)) / ta.stdev(close, len)

// Calculate Driver RSI
driver_rsi_length = input.int(14, "Driver RSI Length")  // Input for RSI Length
driver_rsi = ta.rsi(close, driver_rsi_length)  // Calculate the RSI

// Supertrend Parameters
atrPeriod = input.int(11, "ATR Length", minval=1)
factor = input.float(2.0, "Factor", minval=0.01, step=0.01)

// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Conditions for Long and Short based on Z-Score
z_exceeds_long = z >= z_long_threshold and driver_rsi > 60
z_exceeds_short = z <= z_short_threshold and driver_rsi < 40

// Entry Conditions
if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
    alert("Open Long", alert.freq_once_per_bar)  // Alert for Long entry

if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
    alert("Open Short", alert.freq_once_per_bar)  // Alert for Short entry

// Plot Supertrend
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr)
downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr)
fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false)

// Alert conditions for Supertrend changes (optional)
alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend')
alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')