Stratégie de stop-loss suivant la tendance basée sur l'indicateur RSI


Date de création: 2023-12-12 15:46:49 Dernière modification: 2023-12-12 15:46:49
Copier: 0 Nombre de clics: 1051
1
Suivre
1621
Abonnés

Stratégie de stop-loss suivant la tendance basée sur l’indicateur RSI

Aperçu

Cette stratégie est appelée stratégie de stop-loss de suivi de tendance basée sur l’indicateur RSI. Cette stratégie utilise l’indicateur RSI pour juger de la situation de survente et de survente, en combinaison avec l’indicateur MA rapide pour juger de la direction de la tendance et définir les conditions d’entrée.

Principe de stratégie

La stratégie utilise principalement le RSI et le MA pour déterminer le moment de l’entrée. Le paramètre de l’indicateur RSI est défini sur 2 cycles pour déterminer le surachat et la survente. Le MA lent est défini sur 50 cycles et 200 cycles respectivement pour déterminer la direction de la tendance.

entrée multiple: surcharger sur un MA rapide et un MA lent, et le prix est supérieur au MA lent, et le RSI est inférieur à la zone de survente (default 10%);
Entrée à vide: le cours de l’AMM est à vide lorsque le prix est inférieur au cours de l’AMM et que le RSI est supérieur à la zone de survente (default 90%).

En outre, la stratégie définit un filtre de volatilité optionnel. Ce filtre calcule le décalage de la courbe de la MA et ne prend position que lorsque le décalage dépasse le seuil défini. Son but est d’éviter de prendre position en période de volatilité sans orientation claire.

Sur la sortie, la stratégie utilise le suivi des pourcentages de stop loss. En fonction du pourcentage de stop loss de l’entrée, le stop loss est calculé en combinaison avec chaque différence de prix de saut, permettant un stop loss d’ajustement dynamique.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L’indicateur RSI est réglé sur 2 cycles, ce qui permet de détecter rapidement les sur-achats et les sur-vente et de déterminer l’opportunité d’un renversement.
  2. La MA est très efficace pour identifier les tendances et les points de basculement.
  3. La combinaison des deux indices RSI et MA permet d’éviter les fausses ruptures.
  4. Il existe un filtre de volatilité qui permet de filtrer les fluctuations du marché en période d’incertitude.
  5. L’utilisation d’une méthode de suivi des pertes en pourcentage permet d’ajuster l’ampleur des pertes en fonction de la volatilité du marché et de contrôler efficacement les risques.

Analyse des risques

Cette stratégie comporte aussi des risques, notamment:

  1. Le RSI et la MA sont en retard et pourraient avoir raté une partie de la reprise.
  2. La perte de pourcentage est facilement déclenchée lors d’une chute de la contraction.
  3. Les variétés qui ne peuvent pas traiter efficacement les variétés qui ont une forte oscillation du disque nocturne et de l’avant disque.

Les risques mentionnés ci-dessus peuvent être optimisés par:

  1. Ajustez le paramètre RSI à 1 cycle pour réduire le retard.
  2. Adaptez les paramètres de la période MA en fonction des caractéristiques des différentes variétés.
  3. Ajustez le pourcentage d’arrêt en fonction de l’arrêt et de la tolérance aux chocs.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Ajout d’autres indicateurs de jugement, tels que l’augmentation de l’indicateur de volume de transaction, pour éviter les fausses percées.
  2. Augmenter le jugement des modèles d’apprentissage automatique, en utilisant les résultats des prédictions des modèles pour aider à la prise de décision.
  3. Optimiser le nombre de reprises et la gestion des positions pour améliorer encore la rentabilité de la stratégie.
  4. Définition du filtrage des fluctuations nocturnes et pré-disque. Détermination de la participation au prochain jour de négociation en fonction de l’ampleur des fluctuations.

Résumer

Cette stratégie est une stratégie de suivi de tendance plus stable dans l’ensemble. Elle combine le jugement de la double indication RSI et MA, tout en garantissant une certaine stabilité. Elle permet également de capturer des opportunités de renversement de tendance plus claires.

Code source de la stratégie
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Scalping strategy
// © Lukescream and Ninorigo
// (original version by Lukescream - lastest versions by Ninorigo) - v1.3
//

//@version=4
strategy(title="Scalping using RSI 2 indicator", shorttitle="RSI 2 Strategy", overlay=true, pyramiding=0, process_orders_on_close=false)

var bool ConditionEntryL = false
var bool ConditionEntryS = false


//***********
// Costants
//***********
def_start_date = timestamp("01 Jan 2021 07:30 +0000")
def_end_date   = timestamp("01 Dec 2024 07:30 +0000")

def_rsi_length = 2
def_overbought_value = 90
def_oversold_value   = 10

def_slow_ma_length = 200
def_fast_ma_length = 50
def_ma_choice      = "EMA"

def_tick   = 0.5
def_filter = true

def_trailing_stop = 1


//***********
// Change the optional parameters
//***********
start_time  = input(title="Start date", defval=def_start_date, type=input.time)
end_time    = input(title="End date", defval=def_end_date, type=input.time)
// RSI
src         = input(title="Source", defval=close, type=input.source)
rsi_length  = input(title="RSI Length", defval=def_rsi_length, minval=1, type=input.integer)
overbought_threshold = input(title="Overbought threshold", defval=def_overbought_value, type=input.float)
oversold_threshold   = input(title="Oversold threshold", defval=def_oversold_value, type=input.float)
// Moving average
slow_ma_length = input(title="Slow MA length", defval=def_slow_ma_length, type=input.integer)
fast_ma_length = input(title="Fast MA length", defval=def_fast_ma_length, type=input.integer)
ma_choice = input(title="MA choice", defval="EMA", options=["SMA", "EMA"])
// Input ticker
tick   = input(title="Ticker size", defval=def_tick, type=input.float)
filter = input(title="Trend Filter", defval=def_filter, type=input.bool)
// Trailing stop (%)
ts_rate = input(title="Trailing Stop %", defval=def_trailing_stop, type=input.float)


//***********
// RSI
//***********
// Calculate RSI
up   = rma(max(change(src), 0), rsi_length)
down = rma(-min(change(src), 0), rsi_length)
rsi = (down == 0 ? 100 : (up == 0 ? 0 : 100-100/(1+up/down)))


//***********
// Moving averages
//***********
slow_ma = (ma_choice == "SMA" ? sma(close, slow_ma_length) : ema(close, slow_ma_length))
fast_ma = (ma_choice == "SMA" ? sma(close, fast_ma_length) : ema(close, fast_ma_length))
// Show the moving averages
plot(slow_ma, color=color.white,  title="Slow MA")
plot(fast_ma, color=color.yellow, title="Fast MA")


//***********
// Strategy
//***********
if true
    // Determine the entry conditions (only market entry and market exit conditions)
    // Long position
    ConditionEntryL := (filter == true ? (fast_ma > slow_ma and close > slow_ma and rsi < oversold_threshold) : (fast_ma > slow_ma and rsi < oversold_threshold))
    // Short position
    ConditionEntryS := (filter == true ? (fast_ma < slow_ma and close < slow_ma and rsi > overbought_threshold) : (fast_ma < slow_ma and rsi > overbought_threshold))
   
    // Calculate the trailing stop
    ts_calc = close * (1/tick) * ts_rate * 0.01

    // Submit the entry orders and the exit orders
    // Long position
    if ConditionEntryL
        strategy.entry("RSI Long", strategy.long)
    // Exit from a long position
    strategy.exit("Exit Long", "RSI Long", trail_points=0, trail_offset=ts_calc)

    // Short position 
    if ConditionEntryS
        strategy.entry("RSI Short", strategy.short)
    // Exit from a short position
    strategy.exit("Exit Short", "RSI Short", trail_points=0, trail_offset=ts_calc)

// Highlights long conditions
bgcolor (ConditionEntryL ? color.navy : na, transp=60, offset=1, editable=true, title="Long position band")
// Highlights short conditions
bgcolor (ConditionEntryS ? color.olive : na, transp=60, offset=1, editable=true, title="Short position band")