Stratégie de scalping RSI Momentum

RSI VOLUME momentum TRAILING
Date de création: 2025-09-29 18:07:14 Dernière modification: 2025-09-29 18:07:14
Copier: 0 Nombre de clics: 528
2
Suivre
319
Abonnés

Stratégie de scalping RSI Momentum Stratégie de scalping RSI Momentum

RSI à 8 cycles + dynamique à 14: ce n’est pas une stratégie RSI classique

Cette stratégie comprime directement le cycle du RSI à 8, avec une baisse de 14 points de dynamique, spécialement conçue pour capturer les éruptions de courte ligne. La stratégie RSI traditionnelle se heurte à plusieurs reprises dans les marchés volatiles, et cette combinaison est plus stable dans les fluctuations à haute fréquence.

La logique de base est très simple: le RSI déclenche un signal de multiples têtes lorsque la dynamique change> 14 et un signal de tête vide lorsque <-14. En même temps, il exige un volume de transactions supérieur à la moyenne de 13 cycles, afin de s’assurer qu’il n’y a pas de fausse rupture. Cette conception prévient le signal de surachat et de survente du simple RSI de 1 à 2 cycles, afin de saisir le moment d’or du début de la tendance.

4.15% Stop Loss vs 1.85% Stop Loss: le rapport risque/bénéfice est supérieur à 2:1

Le stop-loss est de 4,15%, le stop-loss de 1,85% et le rapport risque/bénéfice atteint 2,24:1. Ce ratio est considéré comme radical dans la stratégie de décapage, mais avec un stop-loss mobile de 2,55%, le contrôle du risque réel est plus strict.

La clé réside dans la conception d’un stop-loss mobile: une fois que le prix se déplace dans la direction favorable, la ligne de stop-loss suit les ajustements dynamiques des points hauts / bas. Cela signifie que la plupart des bénéfices peuvent être bloqués même si l’objectif de stop-loss de 4,15% n’est pas atteint.

Filtre de quantité de livraison: le nombre de fois semble conservateur, mais il est précis

Le volume de transaction doit dépasser la moyenne des 13 cycles pour pouvoir ouvrir une position. Cette conception filtre 90% des faux signaux. De nombreuses stratégies RSI ouvrent fréquemment des positions dans des environnements de faible volume, ce qui entraîne des retours négatifs.

La moyenne de volume des transactions à 13 cycles est plus sensible que les 20 cycles habituels et permet d’identifier plus rapidement les flux de fonds. Le multiplicateur 1 ne semble pas élevé, mais la réaction rapide combinée au RSI à 8 cycles est suffisante pour filtrer les véritables opportunités de percée.

Triple condition d’entrée: tous les signaux RSI ne valent pas la peine d’être échangés

L’entrée multiple nécessite la satisfaction de l’une des trois conditions suivantes: RSI dynamique > 14, RSI rebond de zone de survente, RSI traversant la ligne de survente. Cette conception est plus flexible que la condition unique et s’adapte aux différentes conditions du marché.

L’hyper-vente est fixée à 10, l’hyper-achat à 90, ce qui est plus extrême que le traditionnel 3070. L’avantage est de réduire les faux signaux, l’inconvénient est de manquer des opportunités.

Scenario approprié: paradis des courts-circuits pour les variétés à haute volatilité

Cette stratégie est la mieux adaptée aux variétés à forte volatilité telles que les crypto-monnaies, les principales paires de devises et les actions populaires. Les actions ou obligations de blue-chip à faible volatilité offrent des remises importantes.

La fenêtre de temps optimale est la période de superposition des heures de transaction entre l’Europe et l’Amérique, où la liquidité est la meilleure et le filtre de volume de transaction le plus efficace. La qualité du signal diminue en raison de la faiblesse du volume de transaction dans les heures d’Asie.

Alerte: les pertes continues sont la plus grande menace

Les données de retracement montrent que la stratégie présente un risque de pertes continues, en particulier dans les marchés à oscillation horizontale. Le RSI à 8 cycles est trop sensible et est susceptible d’être endommagé à plusieurs reprises dans les oscillations intermédiaires.

Il est recommandé de ne pas dépasser 2% du seuil de risque d’un seul compte et de suspendre la négociation après 3 arrêts de pertes consécutifs. La rétroaction historique ne représente pas de bénéfices futurs, les transactions en direct nécessitent une gestion stricte des fonds et un contrôle psychologique.

Code source de la stratégie
/*backtest
start: 2024-09-29 00:00:00
end: 2025-09-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Bybit","currency":"ETH_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MonkeyPhone

//@version=5
strategy("RSI Momentum Scalper", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills=true)

// Trading Mode Selection
tradeMode = input.string("Both", title="Trade Mode", options=["Both", "Long Only", "Short Only"])

// RSI Settings
rsiLength = input.int(8, title="RSI Length", minval=2, maxval=30)
rsiOverbought = input.int(90, title="RSI Overbought", minval=60, maxval=99)
rsiOversold = input.int(10, title="RSI Oversold", minval=1, maxval=40)
rsiMomentumThreshold = input.float(14, title="RSI Momentum Threshold", minval=1, maxval=15, step=0.5)

// Volume Settings
volMultiplier = input.float(1, title="Volume Multiplier", minval=1.0, maxval=3.0, step=0.1)
volLookback = input.int(13, title="Volume MA Length", minval=5, maxval=50)

// Exit Settings
takeProfitPercent = input.float(4.15, title="Take Profit %", minval=0.1, maxval=10.0, step=0.1)
stopLossPercent = input.float(1.85, title="Stop Loss %", minval=0.1, maxval=6.0, step=0.1)
trailingStopPercent = input.float(2.55, title="Trailing Stop %", minval=0.1, maxval=4.0, step=0.05)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)
rsiMA = ta.sma(rsi, 3)

// Calculate RSI Momentum
rsiMomentum = rsi - rsi[1]

// Volume Analysis
volMA = ta.sma(volume, volLookback)
highVolume = volume > volMA * volMultiplier

// Entry Conditions - Long
bullishMomentum = rsiMomentum > rsiMomentumThreshold
oversoldBounce = rsi < rsiOversold and rsi > rsi[1]
bullishCross = ta.crossover(rsi, rsiOversold)
longCondition = (bullishMomentum or oversoldBounce or bullishCross) and highVolume and close > close[1]

// Entry Conditions - Short
bearishMomentum = rsiMomentum < -rsiMomentumThreshold
overboughtReversal = rsi > rsiOverbought and rsi < rsi[1]
bearishCross = ta.crossunder(rsi, rsiOverbought)
shortCondition = (bearishMomentum or overboughtReversal or bearishCross) and highVolume and close < close[1]

// Apply trade mode filter
longEntry = longCondition and (tradeMode == "Both" or tradeMode == "Long Only")
shortEntry = shortCondition and (tradeMode == "Both" or tradeMode == "Short Only")

// Entry Logic
strategy.entry("Long", strategy.long, when=longEntry and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when=shortEntry and strategy.position_size == 0)

// Declare and initialize trailing variables
var float highest_since_long = na
var float lowest_since_short = na
var float long_trailing_level = na
var float short_trailing_level = na
var float long_fixed_sl = na
var float long_tp = na
var float short_fixed_sl = na
var float short_tp = na

// Update trailing levels using ternary operators with math.max/min
highest_since_long := strategy.position_size > 0 ? math.max(na(highest_since_long[1]) ? math.max(high, strategy.position_avg_price) : highest_since_long[1], high) : na
lowest_since_short := strategy.position_size < 0 ? math.min(na(lowest_since_short[1]) ? math.min(low, strategy.position_avg_price) : lowest_since_short[1], low) : na

// Calculate exit levels
long_fixed_sl := strategy.position_size > 0 ? strategy.position_avg_price * (1 - stopLossPercent / 100) : na
long_tp := strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeProfitPercent / 100) : na
long_trailing_level := strategy.position_size > 0 ? highest_since_long * (1 - trailingStopPercent / 100) : na
short_fixed_sl := strategy.position_size < 0 ? strategy.position_avg_price * (1 + stopLossPercent / 100) : na
short_tp := strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeProfitPercent / 100) : na
short_trailing_level := strategy.position_size < 0 ? lowest_since_short * (1 + trailingStopPercent / 100) : na

// Effective stop loss levels
effective_long_sl = strategy.position_size > 0 ? math.max(long_fixed_sl, long_trailing_level) : na
effective_short_sl = strategy.position_size < 0 ? math.min(short_fixed_sl, short_trailing_level) : na

// Exit Logic
strategy.exit("Long Exit", "Long", limit=long_tp, stop=effective_long_sl, when=strategy.position_size > 0)
strategy.exit("Short Exit", "Short", limit=short_tp, stop=effective_short_sl, when=strategy.position_size < 0)

// Plot TP, fixed SL, and trailing SL levels on chart when in position
plot(strategy.position_size > 0 ? long_tp : na, title="Long TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_fixed_sl : na, title="Long Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_trailing_level : na, title="Long Trailing SL", color=color.orange, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_tp : na, title="Short TP", color=color.green, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_fixed_sl : na, title="Short Fixed SL", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_trailing_level : na, title="Short Trailing SL", color=color.orange, style=plot.style_linebr)

// Alerts
alertcondition(longEntry, title="Long Entry Alert", message="RSI Momentum Long Signal")
alertcondition(shortEntry, title="Short Entry Alert", message="RSI Momentum Short Signal")