Diese Strategie ist ein quantitatives Handelssystem, das Z-Score-Statistikmethoden, Relative Strength Index (RSI) und Supertrend-Indikatoren kombiniert. Die Strategie überwacht statistische Preisdifferenzen, kombiniert Momentum-Indikatoren und Trendbestätigung, um hochwahrscheinliche Handelsmöglichkeiten auf dem Markt zu identifizieren. Diese Strategie erfasst nicht nur Marktüberkauf- und Überverkaufsmöglichkeiten, sondern filtert auch falsche Signale durch Trendbestätigung und ermöglicht einen Zwei-Wege-Handel.
Die Kernlogik der Strategie basiert auf der Synergie von drei Haupttechnischen Indikatoren: Erstens berechnet er den Z-Score der Preise, um die Abweichung des aktuellen Preises von seinem historischen Durchschnitt zu messen, indem er einen gleitenden Durchschnitt und eine Standardabweichung von 75 Perioden verwendet. Wenn der Z-Score 1,1 übersteigt oder unter -1.1 fällt, zeigt er eine signifikante statistische Abweichung an. Zweitens wird der RSI-Indikator als Momentumbestätigung eingeführt, wobei der RSI mit der Richtung auszurichten ist (RSI>60 für lange Positionen, RSI<40 für kurze Positionen). Schließlich dient der Supertrend-Indikator als Trendfilter, der auf einer 11-Perioden-ATR und einem Multiplikatorfaktor von 2.0 basiert. Handelssignale werden nur generiert, wenn alle drei Bedingungen gleichzeitig erfüllt sind.
Es handelt sich um eine quantitative Handelsstrategie, die statistische Methoden und technische Analyse kombiniert und mehrere Signalbestätigungen verwendet, um die Handelszuverlässigkeit zu verbessern. Die Hauptvorteile der Strategie liegen in ihrem objektiven mathematischen Modell und umfassenden Risikokontrollmechanismen, während die Optimierung von Parametern und die Anpassungsfähigkeit des Marktes berücksichtigt werden müssen. Durch die vorgeschlagenen Optimierungsrichtungen gibt es Raum für weitere Verbesserungen, insbesondere bei der dynamischen Anpassung an Marktumgebungen und Risikokontrolle. Diese Strategie eignet sich für Märkte mit hoher Volatilität und klaren Trends, was sie für quantitative Trader, die eine stetige Rendite anstreben, zu einer wertvollen Überlegung macht.
/*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')