Stratégie de cassure/renversement pondérée en fonction du volume et basée sur des points pivots

Pivot VOLUME SMA BREAKOUT Reversal STOP LOSS TAKE PROFIT
Date de création: 2025-04-24 17:08:39 Dernière modification: 2025-04-24 17:08:39
Copier: 0 Nombre de clics: 353
2
Suivre
319
Abonnés

Stratégie de cassure/renversement pondérée en fonction du volume et basée sur des points pivots Stratégie de cassure/renversement pondérée en fonction du volume et basée sur des points pivots

Aperçu

La stratégie combine support/résistance (S/R), rupture/retour, filtrage de transaction et système d’alerte pour capturer les points de retournement clés du marché. La stratégie utilise la reconnaissance de la rupture ou du retournement des prix, combinée à la confirmation de la transaction anormale, pour améliorer la fiabilité des signaux de négociation. La stratégie utilise un stop loss fixe de 2% et un stop loss réglable (default de 3%) pour gérer le risque.

Principe de stratégie

  1. Identification du support/résistanceUtilisationta.pivothigh()etta.pivotlow()La fonction identifie les niveaux de prix critiques au cours d’une période donnée. Elle déclenche un signal lorsque le prix franchit une résistance (ou une hausse de 1%) ou rebondit à partir d’un support (ou une reprise après une baisse).
  2. Filtrage de la quantité achetée: calculer le volume de transactions SMA ((volSmaLength cycle), considéré comme une confirmation valide lorsque le volume de transactions actuel est supérieur à la SMA de volMultiplier fois ((par défaut 1,5 fois).
  3. Logique multifonctionnelle
    • Conditions multiplesLe prix a franchi la résistance*1.01) et accompagné d’un volume de transactions élevé ou d’un prix proche de la zone de support (dans la plage de ± 1%) avec une “fausse chute” (low ≤ supZone mais reprise de la reprise) et un volume de transactions accru.
    • Conditions de déchargeLes prix ont chuté au-dessous de la zone de soutien.*0.99) et accompagné d’un volume de transactions élevé, ou d’un prix proche de la zone de résistance (dans la gamme de ± 1%) avec une “fausse rupture” (haute ≥ resZone mais retraite de la clôture) et une augmentation du volume de transactions.
  4. Gestion des risques: Stop fixe de 2% et réglage de la marge de freinage (par défaut 3%)strategy.exit()accomplir.

Analyse des avantages

  1. Vérification multifactorielleLa combinaison de la structure des prix (S/R), du volume des transactions et du comportement du marché (fausse rupture / fausse rupture) réduit considérablement la probabilité de faux signaux.
  2. Adaptation dynamique: Mise à jour automatique du support/résistance pour s’adapter aux changements du marché.
  3. Les risques sont maîtrisés: Stop loss fixe pour éviter des pertes excessives sur une seule transaction, le ratio de stop loss peut être ajusté pour s’adapter à la volatilité des marchés.
  4. La visualisation est forteLes lignes de support/résistance sont tracées en temps réel et les signaux de transaction sont clairement marqués.
  5. Intégration des alertes: Système de négociation automatisé couplé, adapté à différents scénarios de négociation.

Analyse des risques

  1. Le risque de bouleversement: déclencher fréquemment des fausses ruptures dans des marchés sans tendance, entraînant de multiples arrêts. Solution: augmenter les indicateurs de filtrage de tendance tels que l’ADX ou l’EMA.
  2. Paramètres sensibles: pivotLen et volMultiplier doivent être adaptés au marché. Solution: Optimisation des paramètres et test Walk-Forward.
  3. Résultats négatifs: Les volumes anormaux peuvent apparaître après une fluctuation des prix. Solution: Combiner les données de couverture ou abréger volSmaLength.
  4. Les dangers du saut en hauteurLes options suivantes sont possibles: Le saut en flèche de l’ouverture peut être un saut de la limite de perte. La solution: Utilisez un ordre de limite ou évitez les périodes de forte volatilité.

Direction d’optimisation

  1. Filtrage des tendances: Ajouter un filtre de direction ADX>25 ou 200 EMA pour éviter les transactions à contre-courant.
  2. Paramètres dynamiques: Ajuste automatiquement pivotLen et volMultiplier en fonction des fluctuations du marché (comme ATR).
  3. Arrêt par étapes: mise en place d’un stop-loss à deux niveaux (par exemple, 2% pour une position à moitié ouverte, le reste pour un stop-loss suivi), augmentation du ratio de profit / perte.
  4. Optimisation du machine learning: Optimiser les paramètres volMultiplier et tpPerc à l’aide du modèle de formation avec les données historiques.
  5. Vérification à plusieurs cycles: Introduction de la confirmation S/R dans un cadre de temps plus élevé, améliorant la qualité du signal.

Résumer

La stratégie utilise la triple vérification (position des prix, volume des transactions, comportement des prix) pour concevoir un cadre de négociation à haute probabilité, particulièrement adapté à la capture des tendances au début. Les avantages principaux sont la transparence logique et la maîtrise des risques, mais il faut tenir compte de leurs limites dans les marchés volatiles. Les optimisations futures peuvent se concentrer sur l’auto-adaptation des paramètres et le filtrage des tendances pour améliorer encore la stabilité.

Code source de la stratégie
/*backtest
start: 2024-04-24 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("S/R Breakout/Reversal + Volume + Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
pivotLen       = input.int(10, "Pivot Lookback for S/R")
volSmaLength   = input.int(20, "Volume SMA Length")
volMultiplier  = input.float(1.5, "Volume Multiplier")
tpPerc         = input.float(3.0, "Take Profit %", step=0.1)
slPerc         = 2.0  // Stop Loss fixed at 2%

// === S/R ZONES ===
pivotHigh = ta.pivothigh(high, pivotLen, pivotLen)
pivotLow  = ta.pivotlow(low, pivotLen, pivotLen)

var float resZone = na
var float supZone = na
if not na(pivotHigh)
    resZone := pivotHigh
if not na(pivotLow)
    supZone := pivotLow

plot(supZone, title="Support", color=color.green, linewidth=2, style=plot.style_linebr)
plot(resZone, title="Resistance", color=color.red,   linewidth=2, style=plot.style_linebr)

// === VOLUME FILTER ===
volSma     = ta.sma(volume, volSmaLength)
highVolume = volume > volSma * volMultiplier

// === LONG LOGIC ===
priceAboveRes     = close > resZone * 1.01
nearSupport       = close >= supZone * 0.99 and close <= supZone * 1.01
rejectSupport     = low <= supZone and close > supZone
longBreakoutCond  = priceAboveRes and highVolume
longReversalCond  = nearSupport and rejectSupport and highVolume
longCondition     = longBreakoutCond or longReversalCond

// === SHORT LOGIC ===
priceBelowSup     = close < supZone * 0.99
nearResistance    = close >= resZone * 0.99 and close <= resZone * 1.01
rejectResistance  = high >= resZone and close < resZone
shortBreakoutCond = priceBelowSup and highVolume
shortReversalCond = nearResistance and rejectResistance and highVolume
shortCondition    = shortBreakoutCond or shortReversalCond

// === ENTRIES WITH LABELS ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low * 0.995, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high * 1.005, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// === TP/SL ===
longTP  = close * (1 + tpPerc / 100)
longSL  = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)

strategy.exit("Long TP/SL",  from_entry="Long",  limit=longTP,  stop=longSL)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTP, stop=shortSL)

// === ALERT CONDITIONS ===
alertcondition(longCondition,  title="Buy Alert",  message="🔔 BUY signal: S/R + Volume breakout/reversal")
alertcondition(shortCondition, title="Sell Alert", message="🔔 SELL signal: S/R + Volume breakout/reversal")