Cette stratégie est un système de trading quantitatif qui combine les méthodes statistiques Z-Score, l'indice de force relative (RSI) et les indicateurs de Supertrend. La stratégie surveille les écarts de prix statistiques, combine les indicateurs de dynamisme et la confirmation de tendance pour identifier les opportunités de trading à forte probabilité sur le marché.
La logique de base de la stratégie est basée sur la synergie de trois principaux indicateurs techniques: Premièrement, il calcule le score Z des prix pour mesurer l'écart du prix actuel par rapport à sa moyenne historique, en utilisant une moyenne mobile de 75 périodes et un écart type. Lorsque le score Z dépasse 1,1 ou tombe en dessous de -1,1, il indique un écart statistique significatif. Deuxièmement, l'indicateur RSI est introduit comme confirmation de l'élan, ce qui oblige l'indicateur RSI à s'aligner sur la direction (RSI>60 pour les positions longues, RSI<40 pour les positions courtes). Enfin, l'indicateur Supertrend sert de filtre de tendance, calculé sur la base d'un ATR de 11 périodes et d'un facteur multiplicateur de 2,0.
Il s'agit d'une stratégie de trading quantitative qui combine des méthodes statistiques et une analyse technique, en utilisant plusieurs confirmations de signaux pour améliorer la fiabilité du trading. Les principaux avantages de la stratégie résident dans son modèle mathématique objectif et ses mécanismes complets de contrôle des risques, tout en accordant une attention particulière à l'optimisation des paramètres et à l'adaptabilité du marché.
/*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')