
Die Z-Score-Dynamische Durchschnitts-Kreuz-Quantifizierungs-Handelstrategie ist ein integriertes Handelssystem, das auf dem statistischen Z-Score-Prinzip und dem Kreuz-Signal des Moving Averages basiert. Die Strategie ermittelt die standardisierte Abweichung des Preises (Z-Score) und kombiniert die Kreuzung des kurzfristigen und des langfristigen glatten Moving Averages zu einem Kauf- und Verkaufssignal. Diese Methode berücksichtigt nicht nur die absoluten Veränderungen des Preises, sondern auch die relative Position des Preises in der statistischen Verteilung und bietet somit einen Marktzugangs- und Ausstiegsmechanismus, der auf Wahrscheinlichkeiten und statistischen Prinzipien basiert.
Der Z-Score ist die Messung, wie viele Standarddifferenzen ein Datenpunkt vom Mittelwert abweicht, berechnet mit der Formel: Z = (X - μ) / σ, wobei X der aktuelle Preis, μ der Mittelwert und σ der Standarddifferenz ist.
Die Umsetzung der Strategie besteht hauptsächlich aus folgenden Schritten:
Die Strategie bietet auch die traditionellen Moving Averages (MA) als Hilfsreferenzen, darunter die drei Mittellinien für die kurzfristige (5-Zyklus), die mittlere (21 Zyklus) und die langfristige (60-Zyklus). Diese Mittellinien helfen den Händlern, die Veränderungen der Preisentwicklung intuitiver zu beobachten.
Grundlegende StatistikenDer Z-Score basiert auf statistischen Prinzipien und kann Preisschwankungen standardisieren, um außergewöhnliche Preisänderungen zu erkennen. Wenn der Z-Score sehr hoch oder sehr niedrig ist, zeigt dies an, dass die Preise von den Durchschnittswerten abweichen und es möglicherweise eine Chance gibt, zum Durchschnitt zurückzukehren.
DoppelfilterDie Strategie nutzt Z-Score-Indikatoren und Moving Averages gleichzeitig, um einen doppelten Bestätigungsmechanismus zu bilden. Die Z-Score-Kreuzung liefert das Hauptsignal, während das Moving Average-System als Hilfsmittel zur Trendbestätigung dient.
Flexible Parameter-EinstellungenDer Benutzer kann den Z-Score-Berechnungszyklus, die Glättungsparameter und die Signalintervalle anpassen, um eine individualisierte Konfiguration der Strategie zu ermöglichen, die den Merkmalen der verschiedenen Märkte und Handelsarten entspricht.
Echtzeit-FeedbackDie Strategie zeigt die Kauf- und Verkaufssignale intuitiv an und bietet Echtzeit-Feedback zur Positionseinstellung und -verlust, um den Händlern eine schnelle Bewertung der Strategie zu ermöglichen.
VorwarnfunktionDas System bietet eine integrierte Vorwarnfunktion, die einen Echtzeit-Alarm auslöst, wenn ein Kauf- oder Verkaufssignal ausgelöst wird, um den Händlern zu helfen, eine Handelsgelegenheit zu erfassen.
ParameterempfindlichkeitZ-Score-Berechnungen und Schliessparameter haben einen signifikanten Einfluss auf die Strategie-Performance. Fehlgeleitete Parameter können zu Übertriebenen führen oder wichtige Signale verpassen. Es wird empfohlen, die am besten geeignete Parameterkombination für einen bestimmten Markt durch historische Rückblende zu finden.
Schwache Stellen in den erschütternden MärktenIn einem schwankenden Markt kann der Z-Score häufig die Mittelwerte überschreiten, was zu viel Handelssignal erzeugt, die Handelskosten erhöht und zu anhaltenden Verlusten führen kann. Es kann in Betracht gezogen werden, die Trendfilterbedingungen in der Strategie hinzuzufügen oder den Handel zu unterbrechen, wenn ein schwankender Markt erkannt wird.
Risiko der statistischen HypotheseZ-Score: Der Z-Score nimmt an, dass die Preisschwankungen der normalen Verteilung entsprechen, aber die Preisschwankungen in den realen Märkten können mit Tail risks und außergewöhnlichen Schwankungen verbunden sein. In extremen Marktbedingungen kann die Strategie fehlschlagen.
RückstandsproblemeDa der Moving-Average-Gleichungsschnitt verwendet wird, ist das Signal etwas nachlässig, was dazu führen kann, dass die Ein- und Ausstiegszeiten in stark volatilen Märkten nicht optimal sind.
Fehlende SchadensbegrenzungDie aktuelle Strategie enthält keine eindeutigen Stop-Loss-Mechanismen und kann bei starken Marktausbrüchen mit größeren Verlusten konfrontiert werden. Es wird empfohlen, die Stop-Loss-Konditionen in der praktischen Anwendung zu erhöhen, um das Risiko zu kontrollieren.
Trendfilter hinzufügen: Es können zusätzliche Trendindikatoren eingeführt werden (z. B. ADX oder Bollinger Bandbreite), um die Marktlage zu identifizieren, unterschiedliche Strategieparameter oder Handelslogiken in starken Trends und in erschütternden Märkten zu verwenden.
Eingeben von AnpassungsparameternDie Z-Score-Berechnungsphase und die Signalintervalle werden anhand der dynamischen Marktschwankungen angepasst, um die Strategie besser an unterschiedliche Marktumgebungen anzupassen.
Verbesserung des RisikomanagementsEinführung von Stop-Loss-Mechanismen auf Basis von ATR oder festen Prozentsätzen und Gestaltung von vernünftigen Positionsmanagementregeln, um das Risiko eines einzelnen Handels zu kontrollieren.
MehrzyklusanalyseZ-Score-Signale für verschiedene Zeitspannen werden integriert und nur dann ausgeführt, wenn mehrere Zeitspannen übereinstimmen, was die Signalsicherheit erhöht.
In Kombination mit anderen IndikatorenEs kann in Betracht gezogen werden, den Z-Score in Verbindung mit anderen technischen Indikatoren wie der Handelsmenge, dem relativ starken RSI oder den Brin-Bändern zu kombinieren, um umfassendere Handelsbedingungen zu schaffen.
Optimierung des FeedbackrahmensStrategiebewertungskriterien für die Erweiterung, die nicht nur auf die Gesamtergebnisse ausgerichtet sind, sondern auch auf Komplexindikatoren wie maximale Rücknahme, Sharpe-Ratio, Gewinn- und Verlustquote, um die Strategieleistung umfassend zu bewerten.
Die Z-Score-Strategie zur Quantifizierung von dynamischen Durchschnittskreuzungen bietet eine standardisierte Bearbeitung der Preise durch statistische Methoden in Verbindung mit dem Moving-Average-Kreuzungssignal und bietet eine systematisierte Methode für Handelsentscheidungen. Die Strategie ist besonders geeignet für die Suche nach Handelsmöglichkeiten, die nach einer Preisverzerrung zum Durchschnittswert zurückkehren, mit theoretisch fundierten und eindeutigen Signalen.
Trader müssen jedoch bei der Anwendung der Strategie auf Parameteroptimierung und Risikokontrolle achten, insbesondere da die Strategie in verschiedenen Marktumgebungen unterschiedlich wirken kann. Die Stabilität und Anpassungsfähigkeit der Strategie kann durch die Erhöhung der Trendfilterung, die Verbesserung des Risikomanagements und die Kombination von mehreren Indikatoren weiter verbessert werden.
Letztendlich muss jede Trading-Strategie in der realen Marktumgebung streng verifiziert und kontinuierlich optimiert werden. Die Z-Score-Strategie als quantitatives Trading-Tool, das den Händlern einen Rahmen für die Analyse und Entscheidungsfindung des Marktes auf der Grundlage statistischer Prinzipien bietet, ist es wert, dass der Händler in der Praxis erforscht und eingehend untersucht wird.
/*backtest
start: 2024-07-13 18:40:00
end: 2025-06-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/
//@version=6
strategy("Z Score 主图策略 — v1.02", overlay=true)
// 参数
enableZScore = input.bool(true, title="启用Z分数策略")
zBaseLength = input.int(3, minval=1, title="Z分数基础周期")
shortSmooth = input.int(3, title="短期平滑")
longSmooth = input.int(5, title="长期平滑")
gapBars = input.int(5, minval=1, title="相同信号间隔K线数")
// Z 分数
f_zscore(src, len) =>
mean = ta.sma(src, len)
std = ta.stdev(src, len)
(src - mean) / std
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)
baseLongCond = zShort > zLong
baseExitCond = zShort < zLong
// 信号间隔
var int lastEntryBar = na
var int lastExitBar = na
// 策略逻辑
if enableZScore
if baseLongCond and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars)
strategy.entry("Z Score", strategy.long)
lastEntryBar := bar_index
alert("Z分数策略触发买入信号,建议开多仓", alert.freq_once_per_bar)
if baseExitCond and (na(lastExitBar) or bar_index - lastExitBar > gapBars)
strategy.close("Z Score", comment="Z Score")
lastExitBar := bar_index
alert("Z分数策略触发卖出信号,建议平仓离场", alert.freq_once_per_bar)
// 买卖图标
plotshape(baseLongCond and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars),
title="买入信号", location=location.belowbar, color=color.green, style=shape.labelup, text="买")
plotshape(baseExitCond and (na(lastExitBar) or bar_index - lastExitBar > gapBars),
title="卖出信号", location=location.abovebar, color=color.red, style=shape.labeldown, text="卖")
// 盈亏表格
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)
table.cell(positionTable, 0, 0, "开仓价", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "未实现盈亏 (%)", text_color=color.white, bgcolor=color.gray)
isLong = strategy.position_size > 0
entryPrice = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray
if isLong
table.cell(positionTable, 0, 1, str.tostring(entryPrice, "#.####"), text_color=color.gray, bgcolor=color.new(color.gray, 90))
table.cell(positionTable, 1, 1, str.tostring(unrealizedPnL, "#.##") + " %", text_color=pnlColor, bgcolor=color.new(pnlColor, 90))
else
table.cell(positionTable, 0, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
table.cell(positionTable, 1, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
// === 显示 MA 均线 ===
showMA = input.bool(true, title="显示 MA 均线")
maShortPeriod = input.int(5, title="短期 MA 周期")
maMidPeriod = input.int(21, title="中期 MA 周期")
maLongPeriod = input.int(60, title="长期 MA 周期")
maShort = ta.sma(close, maShortPeriod)
maMid = ta.sma(close, maMidPeriod)
maLong = ta.sma(close, maLongPeriod)
plot(showMA ? maShort : na, title="MA 短期", color=color.rgb(0, 9, 11, 1), linewidth=1)
plot(showMA ? maMid : na, title="MA 中期", color=color.orange, linewidth=1)
plot(showMA ? maLong : na, title="MA 长期", color=color.blue, linewidth=1)