Stratégie de trading Bitcoin avec retour à la moyenne filtré par oscillateur multiple

RSI WT STOCH RSI MEAN REVERSION OSCILLATOR SCALPING FIBONACCI momentum
Date de création: 2025-08-15 12:00:17 Dernière modification: 2025-08-15 12:00:17
Copier: 0 Nombre de clics: 286
2
Suivre
319
Abonnés

Stratégie de trading Bitcoin avec retour à la moyenne filtré par oscillateur multiple Stratégie de trading Bitcoin avec retour à la moyenne filtré par oscillateur multiple

Aperçu

Cette stratégie de trading Bitcoin de retour à la moyenne dynamique filtrée par plusieurs oscillateurs est une stratégie quantitative spécialement conçue pour le trading Bitcoin de courte durée. Elle combine habilement le canal RSI, l’indicateur WaveTrend et l’indicateur RSI aléatoire pour former un système de filtrage à plusieurs niveaux. Le cœur de la stratégie est d’utiliser les caractéristiques de retour de rupture du prix sur le canal RSI, tout en utilisant WaveTrend et le RSI aléatoire comme filtre de confirmation pour assurer des transactions à haut taux de victoire dans les zones de survente.

Principe de stratégie

Le principe de fonctionnement de la stratégie repose sur la synergie de trois indicateurs techniques centraux:

  1. Les bandes RSI: La stratégie utilise une version améliorée de l’indicateur de la chaîne RSI, basée sur les niveaux de surachat (70) et de survente (30) du RSI, pour calculer les courbes supérieures, inférieures et intermédiaires des prix. Des signaux de multiplication sont générés lorsque les prix franchissent la courbe inférieure et des signaux de rupture lorsqu’ils franchissent la courbe supérieure. Ce mécanisme exploite les caractéristiques de régression de la moyenne du marché.

  2. Indicateur WaveTrendL’indicateur WT1 est un oscillateur dynamique utilisé pour déterminer si le marché est en survente ou en survente.

  3. Le RSI est stochastique.: Utilisez uniquement la ligne K, réglez la longueur K à 5, la longueur RSI à 14 et la longueur aléatoire à 10. L’indicateur confirme davantage le sur-achat et la survente du marché et augmente la fiabilité du signal.

La logique de génération de signaux de la stratégie est la suivante:

  • Faire plus de signaux: le prix est tombé en dessous du RSI et l’indicateur WT est en dessous du niveau de survente ((-60) et la valeur K du RSI aléatoire est en dessous du niveau de survente ((0 + marge de tolérance)
  • Signaux de crevaison: le prix a franchi le RSI et l’indicateur WT est supérieur au niveau de survente ((+60) et la valeur de K du RSI aléatoire est supérieure au niveau de survente ((100-capacités)

Il existe deux modes de déclenchement de la transaction: “Cross ((close)) ” qui utilise le cours de clôture pour traverser le canal RSI, et “Touch ((wick)) ” qui permet à la ligne d’ombre de toucher le signal de déclenchement du canal RSI. En outre, la stratégie comprend un mécanisme de sortie inversée, c’est-à-dire que la position peut être levée et inversée lors de l’apparition d’un signal contraire, ce qui convient à un environnement de marché plus volatil.

Avantages stratégiques

Une analyse approfondie du code de la stratégie permet de résumer les avantages notables suivants:

  1. Système de filtration multipleLe système de filtrage est composé de trois indicateurs techniques différents: le canal RSI, le WaveTrend et le RSI aléatoire, formant un puissant système de filtrage à plusieurs niveaux, réduisant considérablement le risque de fausses ruptures et améliorant la qualité et la fiabilité des signaux de trading.

  2. Un mécanisme de négociation flexible: La stratégie offre plusieurs options personnalisables, y compris l’utilisation d’une sortie inversée, l’activation d’une option de stop/stop loss et d’un mode de déclenchement, permettant aux traders de s’adapter aux conditions du marché et aux préférences de risque personnelles.

  3. Une gestion efficace des risques: Un système de stop-loss intégré permet de contrôler précisément le rapport risque/rendement de chaque transaction, ce qui protège les fonds.

  4. Système d’alerte automatisé: Fonctionnalité d’alerte intégrée de Telegram, permettant aux traders de suivre et d’exécuter des transactions en temps réel.

  5. Le mécanisme d’information contre le déchet: La stratégie implémente un mécanisme de prévention de la répétition des alertes, en veillant à ce que le signal ne soit envoyé qu’une seule fois dans la même ligne K, évitant ainsi la redondance de l’information.

  6. Adaptation à la haute fréquenceLa stratégie est basée sur un délai d’une minute, adaptée aux environnements de trading à haute fréquence, et capte les fluctuations de prix à court terme pour une entrée et une sortie rapides.

Risque stratégique

Bien que cette stratégie soit bien conçue, elle comporte des risques potentiels:

  1. Risques liés aux transactions à haute fréquenceLes transactions à haute fréquence basées sur le délai d’une minute génèrent plus de signaux de transaction, ce qui peut entraîner des transactions excessives et des coûts de transaction accrus. Solution: envisagez d’ajouter des filtres de temps supplémentaires ou de négocier uniquement à certaines périodes du marché.

  2. Risque de fausse percée: Malgré plusieurs filtres, il est possible de rencontrer de fausses ruptures dans des marchés très volatils, ce qui entraîne des pertes de transactions. Les solutions: ajuster les paramètres de l’indicateur, ajouter des conditions de confirmation ou combiner des jugements de tendance avec des périodes de temps plus longues.

  3. Paramètre Sensibilité: La performance de la stratégie dépend fortement des paramètres définis, différents paramètres peuvent être nécessaires dans différents environnements de marché. Solution: effectuer un retour d’expérience historique adéquat, trouver la combinaison optimale de paramètres et ré-optimiser régulièrement les paramètres.

  4. Adaptation aux tendances du marché: Cette stratégie de régression des valeurs moyennes fonctionne bien dans les marchés en tremblement de terre, mais peut mal fonctionner dans les marchés en forte tendance. Solution: Ajouter un filtre de tendance et limiter les transactions contre-trend pendant les fortes tendances.

  5. Risque systémiqueSolution: mettre en place un canal de notification de secours ou un système d’alerte local.

Orientation de l’optimisation de la stratégie

La stratégie peut être optimisée dans les directions suivantes, en fonction de l’analyse du code:

  1. Ajout d’une évaluation du marché: Introduction d’un mécanisme d’adaptation permettant d’ajuster dynamiquement les paramètres de la stratégie en fonction de la volatilité du marché et de l’intensité de la tendance. Cela permet à la stratégie de rester performante dans différents environnements de marché. La mise en œuvre concrète permet de juger de l’état du marché en calculant l’ATR ou l’indicateur de volatilité.

  2. Analyse de plusieurs périodes: Intégrer des informations sur les tendances du marché à des périodes plus élevées, négocier uniquement dans la direction de la tendance principale ou utiliser différents paramètres dans des conditions de tendance différentes. Par exemple, ajouter une ligne de jour ou un jugement de tendance de 4 heures, faire plus dans une tendance à la hausse et faire moins dans une tendance à la baisse.

  3. Optimiser le temps d’entrée: Augmenter la précision d’entrée en augmentant la confirmation de la transaction ou la reconnaissance des modèles d’action des prix. Vous pouvez envisager d’attendre la génération du signal pour un point d’entrée plus favorable, plutôt que d’entrer immédiatement.

  4. Amélioration des mécanismes de freinage: Permettre un stop loss dynamique, tel qu’un stop tracking ou un stop loss basé sur la volatilité, pour s’adapter à différents environnements de marché. Par exemple, la distance de stop loss peut être réglée en fonction de l’ATR ou le profit de la protection de stop loss mobile.

  5. Ajout d’éléments d’apprentissage machine: Utilisez des algorithmes d’apprentissage automatique pour identifier automatiquement les meilleures combinaisons de paramètres ou pour prédire l’efficacité du signal. Donnez un poids de probabilité à chaque signal de transaction à travers un modèle de formation de données historiques.

  6. Gestion des écarts de risque: réaliser un ajustement dynamique de la taille des positions basé sur la valeur nette des comptes, réduire la taille des transactions après une perte consécutive, augmenter la taille des transactions après une rentabilité consécutive, réaliser une gestion plus scientifique des fonds.

Résumer

La Stratégie de Retour à la Marge de Bitcoin à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée à Moyenne Filtrée Filtrée Filtrée à Moyenne Filtrée Filtrée à Moyenne Filtrée Filtrée Filtrée Filtrée Filtrée Filtrée Filtrée Filtrée Fil

Cependant, la stratégie est également confrontée à des défis tels que le risque de négociation à haute fréquence, le risque de fausse rupture et l’adaptabilité du marché. L’optimisation de la stratégie peut être encore améliorée en ajoutant un jugement sur l’état du marché, une analyse de plusieurs périodes, l’optimisation du moment d’entrée, l’amélioration du mécanisme de stop-loss et la réalisation d’une gestion de position dynamique.

Pour les traders quantifiés qui souhaitent faire des transactions courtes sur le marché Bitcoin, la stratégie offre un cadre de base solide qui peut être personnalisé et optimisé en fonction du style de négociation et de la perception du marché individuels pour atteindre un objectif de profit stable.

Code source de la stratégie
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("RS BTC 1", overlay=true, max_labels_count=500, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.003, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, process_orders_on_close=false, pyramiding=0)

// ==== Inputs
// RSI Bands
rsiLen   = input.int(14, "RSI Length")
obLevel  = input.int(70, "RSI Overbought")
osLevel  = input.int(30, "RSI Oversold")

// WT (LazyBear)
wtLen1   = input.int(11, "WT Channel Length")
wtLen2   = input.int(12, "WT Avg Length")
wtOB     = input.float( 60.0, "WT Overbought (+)")
wtOS     = input.float(-60.0, "WT Oversold (-)")

// Stoch RSI (sadece K filtresi)
kLen     = input.int(5,  "StochRSI K")
rsiLenSR = input.int(14, "StochRSI RSI Length")
stLen    = input.int(10, "Stoch Length")
rsiSrc   = input.source(close, "RSI Source")
stochOB  = input.float(100.0, "StochRSI OB (K ≥)", step=0.1)
stochOS  = input.float(0.0,   "StochRSI OS (K ≤)", step=0.1)
eps      = input.float(0.5,   "Tolerance around 0/100", step=0.1)

// Tetik modu
triggerMode = input.string("Cross(close)", "Trigger mode", options=["Cross(close)","Touch(wick)"])
showMid     = input.bool(true,  "Show RSI mid band")

// Çıkış seçenekleri
useReverseExit = input.bool(true,  "Exit & reverse on opposite band cross (swing)")
useTP          = input.bool(true,  "Enable Take Profit %")
useSL          = input.bool(true,  "Enable Stop Loss %")
tpPerc         = input.float(1.00, "TP %", step=0.01, minval=0.01)
slPerc         = input.float(1.00, "SL %", step=0.01, minval=0.01)

// ==== RSI Bands (LazyBear) – Mantık aynı, sadece ince çizgi
src = close
ep  = 2 * rsiLen - 1
auc = ta.ema(math.max(src - src[1], 0), ep)
adc = ta.ema(math.max(src[1] - src, 0), ep)
x1  = (rsiLen - 1) * (adc * obLevel / (100 - obLevel) - auc)
x2  = (rsiLen - 1) * (adc * osLevel / (100 - osLevel) - auc)
ub  = x1 >= 0 ? src + x1 : src + x1 * (100 - obLevel) / obLevel
lb  = x2 >= 0 ? src + x2 : src + x2 * (100 - osLevel) / osLevel
mid = (ub + lb) / 2.0

plot(ub,  "RSI Upper", color=color.yellow, linewidth=1)
plot(lb,  "RSI Lower", color=color.aqua,   linewidth=1)
plot(showMid ? mid : na, "RSI Mid", color=color.gray, linewidth=1)

// ==== WaveTrend (LazyBear WT1)
ap  = hlc3
esa = ta.ema(ap, wtLen1)
d   = ta.ema(math.abs(ap - esa), wtLen1)
ci  = (ap - esa) / (0.015 * d)
wt1 = ta.ema(ci, wtLen2)

// ==== Stoch RSI K (0..100)
rsiVal   = ta.rsi(rsiSrc, rsiLenSR)
stochRaw = ta.stoch(rsiVal, rsiVal, rsiVal, stLen)
stochK   = ta.sma(stochRaw, kLen)

// ==== Sinyaller
longCrossRaw  = triggerMode == "Cross(close)" ? ta.crossunder(close, lb) : ta.crossunder(low,  lb)
shortCrossRaw = triggerMode == "Cross(close)" ? ta.crossover( close, ub) : ta.crossover( high, ub)

stochLongOK  = stochK <= (stochOS + eps)
stochShortOK = stochK >= (stochOB - eps)
wtLongOK     = wt1 < wtOS
wtShortOK    = wt1 > wtOB

longSig_raw  = longCrossRaw  and wtLongOK  and stochLongOK
shortSig_raw = shortCrossRaw and wtShortOK and stochShortOK

longSig  = useReverseExit ? longSig_raw  : (longSig_raw  and strategy.position_size == 0)
shortSig = useReverseExit ? shortSig_raw : (shortSig_raw and strategy.position_size == 0)

// ==== İşlemler
if longSig
    if useReverseExit and strategy.position_size < 0
        strategy.close("S")
    if strategy.position_size <= 0
        strategy.entry("L", strategy.long)

if shortSig
    if useReverseExit and strategy.position_size > 0
        strategy.close("L")
    if strategy.position_size >= 0
        strategy.entry("S", strategy.short)

// ==== TP / SL
if strategy.position_size > 0 and (useTP or useSL)
    longEntryPrice = strategy.position_avg_price
    longTP  = useTP ? longEntryPrice * (1 + tpPerc/100.0) : na
    longSL  = useSL ? longEntryPrice * (1 - slPerc/100.0) : na
    strategy.exit(id="L-EXIT", from_entry="L", limit=longTP, stop=longSL)

if strategy.position_size < 0 and (useTP or useSL)
    shortEntryPrice = strategy.position_avg_price
    shortTP = useTP ? shortEntryPrice * (1 - tpPerc/100.0) : na
    shortSL = useSL ? shortEntryPrice * (1 + slPerc/100.0) : na
    strategy.exit(id="S-EXIT", from_entry="S", limit=shortTP, stop=shortSL)


// ==== ENTRY alert (tek bar / tek kez) ====
// TV Alert -> Condition: Any alert() function call
// Webhook  -> https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage
// Message  -> BOŞ (alert() JSON yolluyor)

chatId   = input.string("-1002849453919", "Telegram chat_id (channel)")
lotTxt   = input.string("0.20", "Lot (text)")
tpPips   = input.int(10000,  "TP (pip)")   // SL yok

makeJson(_txt) => '{"chat_id":"' + chatId + '","text":"' + _txt + '"}'

// MT5 sembolü sabit
longTxt  = 'BUY BTCUSD# '  + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
shortTxt = 'SELL BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'

// Giriş oldu mu? (bar içinde)
enteredLong  = strategy.position_size >  0 and strategy.position_size[1] <= 0
enteredShort = strategy.position_size <  0 and strategy.position_size[1] >= 0

// --- anti-spam: aynı barda yalnızca 1 kere gönder ---
var int  lastEntryBar = na
var int  lastDir      = 0   // +1: long, -1: short

if enteredLong and (lastEntryBar != bar_index or lastDir != 1)
    alert(makeJson(longTxt), alert.freq_once_per_bar)   // tek gönderim
    lastEntryBar := bar_index
    lastDir      := 1

if enteredShort and (lastEntryBar != bar_index or lastDir != -1)
    alert(makeJson(shortTxt), alert.freq_once_per_bar)
    lastEntryBar := bar_index
    lastDir      := -1