Stratégie de trading basée sur des statistiques de prix optimisées par le Momentum et un croisement de scores Z lissés

Z-SCORE SMA stdev PNL Momentum Filter
Date de création: 2025-06-03 10:44:56 Dernière modification: 2025-06-03 10:44:56
Copier: 0 Nombre de clics: 330
2
Suivre
319
Abonnés

Stratégie de trading basée sur des statistiques de prix optimisées par le Momentum et un croisement de scores Z lissés Stratégie de trading basée sur des statistiques de prix optimisées par le Momentum et un croisement de scores Z lissés

Aperçu

Cette stratégie est basée sur le concept statistique du score Z (Z-Score) pour identifier les écarts statistiques du prix par rapport à sa moyenne locale. La stratégie calcule le score Z du prix de clôture, puis applique des moyennes mobiles à court et à long terme pour lisser le score Z. Elle génère un signal d’entrée multi-chaînés lorsque le score Z à court terme s’aplatit sur le score Z à long terme et un signal d’équilibre lorsque le score Z à court terme s’aplatit sur le score Z. La stratégie contient également un contrôle de l’intervalle de signal et un filtre basé sur le volume dynamique pour réduire le bruit des transactions.

Principe de stratégie

Le cœur de cette stratégie est le calcul et l’application du Z-score. Le Z-score est une statistique utilisée pour mesurer le degré de déviation d’un point de données par rapport à la moyenne de l’échantillon, en unités de différence standard. Dans cette stratégie, la formule de calcul du Z-score est: Z = (prix de clôture - SMA ((prix de clôture, N)) / STDEV ((prix de clôture, N)) où N est le cycle de base défini par l’utilisateur.

Le processus d’exécution de la stratégie est le suivant:

  1. Calcul de la note Z initiale du prix de clôture
  2. Application de l’équilibrage à court terme (SMA) à la note Z originale
  3. Application de l’équilibrage à long terme (SMA) à la note Z originale
  4. Lorsqu’une note Z à court terme est portée sur une note Z à long terme, une position est ouverte plus si des conditions supplémentaires sont remplies.
  5. Lorsqu’une position est placée sous une cote Z à court terme, elle est clôturée si des conditions supplémentaires sont remplies.

Les conditions supplémentaires incluent:

  • Espace de signal: le nombre minimum de lignes K qui doivent être espacées entre deux signaux du même type (entrée ou sortie)
  • Filtrage dynamique: interdiction d’entrer en jeu lorsque trois lignes K ascendantes ou plus apparaissent en continu; interdiction de sortir de jeu lorsque trois lignes K descendantes ou plus apparaissent en continu

Avantages stratégiques

  1. Statistiques de baseLe Z-score est un outil statistique éprouvé qui permet d’identifier efficacement l’écart de prix par rapport à leur moyenne et de saisir les chances qu’un prix revienne à la moyenne.
  2. Traitement en douceur: Réduction du bruit et amélioration de la qualité du signal en appliquant un lissage à court et à long terme sur la note Z originale.
  3. Contrôle de l’intervalle de signal: En réglant l’intervalle de signal minimum, on réduit efficacement les sur-transactions et les signaux répétés.
  4. Filtre à moteurLes échanges de devises en contrepartie sont interdits en période de forte tendance, afin d’éviter les pertes inutiles en période de forte tendance.
  5. La simplicité: La stratégie utilise uniquement des données de clôture, ne dépend pas d’une combinaison complexe d’indicateurs, est facile à comprendre et à mettre en œuvre.
  6. Surveillance en temps réel: contient des tableaux qui montrent en temps réel les pertes non réalisées, ce qui permet aux traders de surveiller leur position.
  7. Flexibilité des paramètres: L’utilisateur peut ajuster le cycle de base et le paramètre de lissage du Z-score en fonction des différents marchés et des différentes périodes de temps, ce qui améliore l’adaptabilité.

Risque stratégique

  1. Risques statistiques hypothétiquesLe score Z suppose une distribution de prix proche de la normale, qui peut être mauvaise dans un environnement de marché non normal.
  2. Paramètre SensibilitéLe choix des paramètres de base et de lissage du cycle de base de la note Z a un impact significatif sur la performance de la stratégie. Un mauvais choix des paramètres peut entraîner une suradaptation ou un retard de signal.
  3. Limitation du facteur unique: La stratégie consiste à générer un signal de croisement uniquement sur la base d’un score Z, et l’absence d’autres indicateurs de confirmation peut entraîner un faux signal.
  4. Dépendance à l’environnement de marchéLes stratégies basées sur la régression de la moyenne peuvent continuer à produire de faux signaux dans les marchés en forte tendance.
  5. Le signal est en retard.: En raison de l’utilisation d’une moyenne mobile lisse, le signal peut être retardé et manquer les meilleurs points d’entrée ou de sortie.

La solution est simple:

  • Le retour sur investissement dans différents environnements de marché pour trouver la combinaison optimale de paramètres
  • Combinaison de filtres de tendance pour réduire ou désactiver les transactions sur des marchés en forte tendance
  • Ajout d’indicateurs de confirmation supplémentaires, tels que l’analyse des volumes de transactions ou d’autres indicateurs techniques
  • Considérer l’utilisation d’un paramètre d’adaptation pour ajuster automatiquement le paramètre de notation Z en fonction de la volatilité du marché

Direction d’optimisation

  1. Identifier et intégrer les tendances: Ajout d’un composant de reconnaissance de tendance, afin d’ajuster les actions stratégiques dans des marchés clairement orientés vers la tendance. Cela peut être réalisé par des moyennes mobiles à long terme ou des indicateurs ADX, afin d’éviter de produire de faux signaux de retour de la moyenne dans des tendances fortes.
  2. Adaptation à la volatilité: réaliser un ajustement adaptatif des paramètres de notation Z, optimiser automatiquement le cycle de base et le paramètre de lissage en fonction de la volatilité du marché. Cela améliorera la robustesse de la stratégie dans différents environnements de marché
  3. Analyse de plusieurs périodes: intégrer des signaux de notation Z à des périodes de temps plus élevées comme confirmation, ne négocier que lorsque plusieurs signaux de périodes de temps concordent, réduire les faux signaux.
  4. Les mécanismes d’arrêt: réalisation d’un stop-loss dynamique basé sur la gamme de fluctuations de la note Z, amélioration de la capacité de gestion des risques. Par exemple, le stop-loss peut être défini comme un coefficient de déviation spécifique de la note Z d’entrée.
  5. Une partie des bénéfices: mise en œuvre d’une stratégie de profit par tranches, compensation partielle des positions lorsque le score Z atteint une certaine dépréciation, optimisation de la gestion des fonds.
  6. Confirmation de la livraison: ajout d’une analyse de transaction pour la confirmation de la transaction, l’exécution de la transaction uniquement lorsque le signal de notation Z est pris en charge par la transaction, améliorant la qualité du signal.
  7. Portée des indicateurs: Combiner le Z-score avec d’autres indicateurs statistiques ou techniques, tels que le RSI ou les bandes de Brin, pour créer des modèles de décision multifonctionnels et renforcer la fiabilité de la stratégie.

Résumer

La stratégie de négociation statistique de prix optimisée dynamiquement basée sur le croisement de la cote Z est un système de négociation simple basé sur des principes statistiques, axé sur la capture de l’écart et de la régression des prix par rapport à leur moyenne locale. Grâce à un traitement en douceur, un contrôle de l’intervalle de signal et un filtrage dynamique, la stratégie réduit efficacement le bruit des transactions et améliore la qualité du signal.

Cependant, la stratégie présente également des limites, telles que la dépendance à des hypothèses statistiques, à la sensibilité des paramètres et à la prise de décision sur un seul facteur. Des mesures d’optimisation telles que l’ajout de mesures de reconnaissance de tendances, d’ajustements de volatilité, d’analyses sur plusieurs périodes, de mécanismes de stop-loss, de confirmation de la quantité de transaction et de combinaisons de facteurs multiples peuvent considérablement améliorer la robustesse et la performance de la stratégie.

Dans l’ensemble, il s’agit d’un cadre stratégique solide, théoriquement fondé, simple, facile à comprendre et à étendre, adapté comme composant de base d’un système de trading ou comme outil éducatif pour aider les traders à comprendre l’application de la statistique dans le trading.

Code source de la stratégie
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Price Statistical Strategy-Z Score V 1.01", overlay=true)

// === Enable / Disable Z-Score Strategy Block ===
enableZScore = input.bool(true, title="Enable Smoothed Z-Score Strategy", tooltip="When enabled, this block calculates a smoothed Z-Score of the closing price and generates entry/exit signals based on crossover behavior between short-term and long-term smoothed Z-Scores.\n\nRecommended for quick and classic detection of price deviation from mean.\nSensitive to outliers. Best suited for relatively normal-distributed market conditions.")

// === Z-Score Parameters ===
zBaseLength = input.int(3, minval=1, title="Z-Score Base Period")
shortSmooth = input.int(3, title="Short-Term Smoothing")
longSmooth = input.int(5, title="Long-Term Smoothing")

// === Z-Score Calculation Function ===
f_zscore(src, length) =>
    mean = ta.sma(src, length)
    std_dev = ta.stdev(src, length)
    z = (src - mean) / std_dev
    z

// === Z-Score Logic ===
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)


// === Minimum gap between identical signals ===
gapBars = input.int(5, minval=1, title="Bars gap between identical signals", tooltip="Minimum number of bars required between two identical signals (entry or exit). Helps reduce signal noise.")


// === Candle-based momentum filters ===
bullish_3bars = close > close[1] and close[1] > close[2] and close[2] > close[3] and close[3] > close[4]
bearish_3bars = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4]

// === Entry and Exit Logic with minimum signal gap and candle momentum filter ===
var int lastEntryBar = na
var int lastExitBar  = na

if enableZScore
    longCondition = (zShort > zLong)
    exitCondition = (zShort < zLong)

    if longCondition and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars) and not bullish_3bars
        strategy.entry("Z Score", strategy.long)
        lastEntryBar := bar_index

    if exitCondition and (na(lastExitBar) or bar_index - lastExitBar > gapBars) and not bearish_3bars
        strategy.close("Z Score", comment="Z Score")
        lastExitBar := bar_index

// === Real-time PnL Table for Last Open Position ===
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)

// Header Labels
table.cell(positionTable, 0, 0, "Entry Price", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "Unrealized PnL (%)", text_color=color.white, bgcolor=color.gray)

// Values (only when position is open)
isLong        = strategy.position_size > 0
entryPrice    = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na

// Define dynamic text color for PnL
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray

// Update Table Content
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))