Stratégie de capture par triple résonance

WT CRSI LSDD
Date de création: 2025-10-09 14:09:21 Dernière modification: 2025-10-09 14:09:21
Copier: 0 Nombre de clics: 212
2
Suivre
319
Abonnés

Stratégie de capture par triple résonance Stratégie de capture par triple résonance

Les trois indicateurs doivent émettre des signaux simultanément dans les 2 lignes K, sinon il n’y a pas de conversation

Ce n’est pas une stratégie multi-indicateurs ordinaire. La combinaison de WaveTrend + Connors RSI + Linear Regression Deviation est la clé du mécanisme de synchronisation de la fenêtre: tous les signaux d’achat doivent apparaître dans la plage de 2 lignes K, les signaux individuels sont directement ignorés. Cette conception filtre directement 90% des faux signaux.

Les stratégies traditionnelles de jugement indépendant des indicateurs sont susceptibles de générer du bruit ou de demander de déclencher simultanément un grand nombre d’opportunités manquées. Cette stratégie a trouvé un équilibre: la fenêtre de tolérance aux erreurs de la ligne K garantit la pertinence du signal et évite des exigences de synchronisation trop strictes.

Le WaveTrend a été placé à -48 et est plus sensible que le RSI standard.

La longueur du WT est de 10 cycles, avec une ligne de survente de 48 et une ligne de survente de 48. Cette combinaison de paramètres est plus radicale que le RSI traditionnel 3070, captant les signaux de revers des prix plus tôt. L’avantage du WT réside dans la combinaison de la position des prix et de la volatilité, qui est plus fiable que le RSI seul dans des situations de volatilité.

La clé est la façon dont WT est calculé:*L’EMA déviante), cette formule a naturellement une fonction d’ajustement de la volatilité. Lorsque la volatilité du marché augmente, la fraction s’agrandit et la valeur WT est relativement stable, évitant ainsi le problème de la distorsion du RSI ordinaire pendant les hautes volatilités.

Le RSI de Connors est triplé, 2080 est défini comme étant très fort.

Le CRSI n’est pas un RSI ordinaire, il est composé d’un RSI de prix, d’un RSI de tendance à la baisse et d’un pourcentage de variation de prix. Le seuil de survente de 20 est plus radical que le traditionnel 30, mais le mécanisme de triple vérification du CRSI réduit la probabilité de faux signaux.

La longueur du RSI à 6 cycles est réglée sur la courte durée, afin d’améliorer la sensibilité du signal. Au niveau de 15 minutes, 6 cycles correspondent à 1,5 heure de mémoire de prix, permettant de capturer les surventes à court terme sans être trop retardé. Ce paramètre est particulièrement efficace pour les variétés de 24 heures de négociation comme BTC.

Le décalage de régression linéaire LSDD, 20 cycles de capture de tendance

LSDD = prix actuel - régression linéaire, indiquant que le prix commence à s’écarter de la ligne de tendance descendante lorsque le LSDD est traversé sur l’axe 0. Le réglage de 20 cycles couvrant 5 heures sur un graphique de 15 minutes permet d’identifier efficacement les changements de tendance à court terme.

La subtilité de cet indicateur réside dans le fait qu’il ne s’agit pas d’un simple suivi de la tendance, mais d’une mesure de la déviation de la tendance. Lorsque les prix commencent à s’écarter de la ligne de retour vers le haut après une baisse continue, cela indique souvent le début d’une reprise. Combiné aux signaux de survente du WT et du CRSI, il forme une double confirmation de “survente + revers de tendance”.

Je ne fais que le plus gros, 30% de positions, 1 fois la pyramide.

La stratégie est conçue pour être purement multi-titres, avec 30% de fonds à chaque ouverture de position, permettant une mise à niveau. Cette configuration convient à la tendance à la hausse à long terme des crypto-monnaies, tout en gérant les risques grâce au contrôle de la position. Une position unique de 30% permet à la fois d’obtenir des gains suffisants et d’éviter les risques excessifs d’une seule transaction.

Les conditions d’exit sont également strictes: WT surachat ((>48) AND CRSI surachat ((>80) AND LSDD inversion négative, trois conditions doivent être remplies simultanément. Cette conception assure l’intégrité des transactions tendancielles et évite un départ prématuré.

15 minutes de rétroaction de BTC optimisée, mais attention aux conditions du marché

La stratégie a bien fonctionné dans le retrait de 15 minutes de BTC, mais cela ne signifie pas qu’elle fonctionne dans tous les environnements de marché. Dans les marchés de choc horizontal, même la triple confirmation peut produire plus de faux signaux. La stratégie est mieux adaptée aux environnements de marché avec des caractéristiques de tendance claires.

Remarque de risque: les retours historiques ne représentent pas les bénéfices futurs, le marché des crypto-monnaies est très volatil et il existe un risque de perte de capital. Il est recommandé de vérifier suffisamment les transactions papier avant les transactions physiques et de contrôler strictement les positions globales.

Code source de la stratégie
/*backtest
start: 2024-10-09 00:00:00
end: 2025-10-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":500000}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alescha13
// WT + CRSI + Linear Regression Long-only Strategy
// Description: 
// This long-only trading strategy combines WaveTrend (WT), 
// Connors RSI (CRSI), and a Linear Regression Slope (LSDD) trend filter.
// Signals are generated only when all three indicators align within a defined window.
// Exits occur when all indicators turn bearish.
// Backtested on BTC with 15-minute timeframe.

strategy("WT + CRSI + Linear Regression Long-only © alescha13", 
     overlay=true, 
     initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=30, 
     pyramiding=1, 
     calc_on_every_tick=false, 
     process_orders_on_close=true)

// =====================
// Inputs
// =====================
wtLength        = input.int(10, "WT Length")
wtOversold      = input.int(-48, "WT Oversold Level")
wtOverbought    = input.int(48, "WT Overbought Level")

crsiRSILength   = input.int(6,  "CRSI RSI Length")
crsiOversold    = input.int(20, "CRSI Oversold Level")
crsiOverbought  = input.int(80, "CRSI Overbought Level")

lsddLen         = input.int(20, "Linear Regression Length")

windowSize      = input.int(2, "Window size (bars) for all signals", minval=1)

// =====================
// Helper: CRSI Function
// =====================
updown(s) =>
    isEqual = s == s[1]
    isGrowing = s > s[1]
    ud = 0.0
    ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1)
    ud

crsiFunc(src, lenrsi) =>
    lenupdown = 2
    lenroc = 100
    rsi = ta.rsi(src, lenrsi)
    updownrsi = ta.rsi(updown(src), lenupdown)
    percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
    math.avg(rsi, updownrsi, percentrank)

// =====================
// WaveTrend (WT) Calculation
// =====================
ap  = (high + low + close) / 3.0
esa = ta.ema(ap, wtLength)
d   = ta.ema(math.abs(ap - esa), wtLength)
ci  = (ap - esa) / (0.015 * d)
wt  = ta.ema(ci, 3)

wtBull = ta.crossover(wt, wtOversold)
wtBear = wt > wtOverbought

// =====================
// CRSI Calculation
// =====================
crsiValue = crsiFunc(close, crsiRSILength)
crsiBull  = crsiValue < crsiOversold
crsiBear  = crsiValue > crsiOverbought

// =====================
// Linear Regression LSDD Calculation
// =====================
slope = ta.linreg(close, lsddLen, 0)
lsdd = close - slope
lsddBull = ta.crossover(lsdd, 0)
lsddBear = lsdd < 0

// =====================
// Window Logic (Synchronize Signals)
// =====================
var int wtBarIndex   = na
var int crsiBarIndex = na
var int lsddBarIndex = na

if wtBull
    wtBarIndex := bar_index
if crsiBull
    crsiBarIndex := bar_index
if lsddBull
    lsddBarIndex := bar_index

buySignal = false
if not na(wtBarIndex) and not na(crsiBarIndex) and not na(lsddBarIndex)
    maxBar = math.max(wtBarIndex, crsiBarIndex, lsddBarIndex)
    minBar = math.min(wtBarIndex, crsiBarIndex, lsddBarIndex)
    if (maxBar - minBar) <= windowSize
        buySignal := true
        wtBarIndex := na
        crsiBarIndex := na
        lsddBarIndex := na

finalLong = buySignal

// =====================
// Exit Logic
// =====================
sellSignal = wtBear and crsiBear and lsddBear

// =====================
// Entries / Exits
// =====================
if finalLong
    strategy.entry("Long", strategy.long, comment="Long Entry")

if sellSignal
    strategy.close("Long", comment="Long Exit")

// =====================
// Background Color for Signals
// =====================
bgcolor(finalLong ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)

// =====================
// Plots
// =====================
plot(wt, color=color.new(color.blue, 0), title="WT")
plot(crsiValue, color=color.new(color.purple, 0), title="CRSI")
plot(lsdd, color=color.new(color.orange, 0), title="LSDD")

plotshape(finalLong, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// =====================
// Alerts
// =====================
alertcondition(finalLong, title="Long Alert", message="WT + CRSI + LSDD Long Signal")
alertcondition(sellSignal, title="Exit Alert", message="WT + CRSI + LSDD Exit Signal")