
Z-Score est un système de négociation intégré basé sur le principe statistique du Z-score et sur le signal de croisement de la moyenne mobile. La stratégie est basée sur le principe statistique du Z-score et sur le principe statistique du Z-score. La stratégie est basée sur le principe statistique du Z-score.
Le cœur de la stratégie est de prendre des décisions de négociation sur la base d’indicateurs statistiques de Z-Score. Le Z-Score est une mesure de la quantité de standard deviation d’un point de données par rapport à la moyenne, calculée selon la formule: Z = (X - μ) / σ, où X est le prix actuel, μ est la moyenne et σ est le standard deviation.
La mise en œuvre de la stratégie comprend principalement les étapes suivantes:
La stratégie fournit également des moyennes mobiles traditionnelles (MA) comme références auxiliaires, comprenant trois moyennes à court terme (5 cycles), à moyen terme (21 cycles) et à long terme (60 cycles). Ces moyennes aident les traders à observer les variations de la tendance des prix de manière plus intuitive.
Statistiques de base: L’indicateur Z-Score est basé sur des principes statistiques et est capable de normaliser les fluctuations des prix afin de faciliter l’identification des variations anormales des prix. Lorsque le Z-Score est extrêmement élevé ou extrêmement bas, cela indique que le prix s’écarte beaucoup de la moyenne et qu’il existe une possibilité de retour à la moyenne.
Mécanisme de double filtration: La stratégie utilise à la fois l’indicateur Z-Score et la moyenne mobile, formant un mécanisme de double confirmation. La croix Z-Score fournit le signal principal, tandis que le système de moyenne mobile peut servir d’outil auxiliaire pour la confirmation de la tendance.
Réglages de paramètres flexibles: L’utilisateur peut personnaliser la configuration de la stratégie en ajustant le cycle de calcul du Z-Score, les paramètres de lissage et l’intervalle de signal en fonction des caractéristiques des différents marchés et types de transactions.
Commentaires en temps réel: La stratégie affiche les signaux d’achat et de vente de manière intuitive via une interface graphique et fournit des commentaires en temps réel sur les positions et les pertes et les gains, permettant aux traders d’évaluer rapidement la performance de la stratégie.
Fonction d’alerte précoce: Système d’alerte intégré qui émet des alertes en temps réel lorsqu’un signal d’achat ou de vente est déclenché, aidant ainsi les traders à saisir les opportunités de trading en temps opportun.
Paramètre SensibilitéLes paramètres de calcul et de lissage du Z-Score ont un impact significatif sur la performance de la stratégie. Des paramètres mal configurés peuvent entraîner des transactions excessives ou des signaux importants manqués. Il est recommandé de trouver la combinaison de paramètres la mieux adaptée à un marché particulier en faisant des recherches historiques.
La fragilité du marché: Dans les marchés oscillants horizontaux, le Z-Score peut fréquemment traverser la moyenne, générer trop de signaux de négociation, augmenter les coûts de négociation et peut entraîner des pertes continues. L’ajout de conditions de filtrage de tendance dans la stratégie peut être envisagé, ou la suspension de la négociation en cas d’identification d’un marché oscillant.
Risques statistiques hypothétiques: Le Z-Score suppose que les fluctuations de prix sont conformes à la distribution normale, mais les fluctuations de prix dans les marchés réels peuvent présenter des risques de traînée et des fluctuations anormales. Dans des conditions de marché extrêmes, la stratégie peut ne pas fonctionner.
Le problème du retard: En raison du traitement en douceur des moyennes mobiles, les signaux sont quelque peu retardés, ce qui peut entraîner des moments d’entrée et de sortie inadéquats dans des marchés très volatils.
Manque de mécanisme de prévention: La version actuelle de la stratégie ne contient pas de mécanisme de stop-loss explicite et peut faire face à des pertes plus importantes en cas de forte volatilité du marché. Il est recommandé d’ajouter des conditions de stop-loss dans les applications pratiques pour contrôler les risques.
Ajouter un filtre de tendance: il est possible d’introduire des indicateurs de tendance supplémentaires (comme l’ADX ou la bande passante de Brin) pour identifier l’état du marché, en utilisant différents paramètres stratégiques ou logiques de négociation dans les marchés à forte tendance et les marchés en choc.
Ajouter des paramètres d’adaptation: Adaptation des cycles de calcul et des intervalles de signaux du Z-Score en fonction de la dynamique de la volatilité du marché, afin que la stratégie puisse mieux s’adapter aux différents environnements du marché.
Améliorer la gestion des risquesIntroduction d’un mécanisme de stop loss basé sur l’ATR ou un pourcentage fixe, et conception de règles de gestion de position raisonnables pour contrôler le risque de transaction unique.
Analyse à cycles multiples: intégrer les signaux Z-Score de différentes périodes de temps, effectuer des transactions uniquement lorsque plusieurs signaux de périodes de temps sont cohérents, améliorer la fiabilité du signal.
Combiné avec d’autres indicateursOn peut envisager de combiner le Z-Score avec d’autres indicateurs techniques tels que le volume de transactions, le RSI (indicateur de la force relative) ou les bandes de Brin pour créer des conditions de trading plus complètes.
Optimiser le cadre de rétroactionLes critères d’évaluation de la stratégie de l’expansion ne se limitent pas aux bénéfices globaux, mais doivent également être examinés. Indicateurs complexes tels que le maximum de rétractation, le ratio de Sharpe, le ratio de gain et de perte, évaluent globalement la performance de la stratégie.
Z-Score est une stratégie de négociation quantifiée à travers une méthode statistique de traitement standardisé des prix, combinée à des signaux de croisement de moyennes mobiles, qui fournit un ensemble d’approches systématiques pour la prise de décision de négociation. La stratégie est particulièrement adaptée à la recherche d’opportunités de négociation qui reviennent à la moyenne après la déviation des prix, avec des signaux solides et des avantages évidents.
Cependant, les traders doivent être attentifs à l’optimisation des paramètres et à la maîtrise des risques lors de l’application de la stratégie, en particulier lorsque la performance de la stratégie peut varier dans différents environnements de marché. La stabilité et l’adaptabilité de la stratégie peuvent être encore améliorées en augmentant le filtrage des tendances, en améliorant la gestion des risques et en combinant plusieurs indicateurs.
En fin de compte, toute stratégie de trading doit être rigoureusement vérifiée et continuellement optimisée dans un environnement de marché réel. La stratégie Z-Score, en tant qu’outil de trading quantitatif, fournit aux traders un cadre pour l’analyse et la prise de décision du marché basée sur des principes statistiques, qui mérite d’être explorée et approfondie par les traders en pratique.
/*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)