Stratégies de trading basées sur le RSI et le RSI stochastique


Date de création: 2024-02-18 16:13:50 Dernière modification: 2024-02-18 16:13:50
Copier: 1 Nombre de clics: 711
1
Suivre
1617
Abonnés

Stratégies de trading basées sur le RSI et le RSI stochastique

Aperçu

Cette stratégie de négociation utilise en combinaison deux indicateurs techniques: le RSI (indicateur de force relative relative) et le RSI (indicateur de force relative aléatoire) pour générer un signal de négociation. La stratégie utilise en outre les mouvements des prix des crypto-monnaies sur des périodes plus élevées pour confirmer la tendance, afin d’améliorer la fiabilité du signal.

Nom de la stratégie

La stratégie de trading RSI-SRSI à plusieurs périodes

Principe de stratégie

La stratégie est basée sur le RSI pour juger si le RSI est en hausse ou en baisse. Un RSI inférieur à 30 est un signal de survente et un RSI supérieur à 70 est un signal de survente. Un RSI stochastique observe les fluctuations du RSI lui-même.

La stratégie est combinée avec le mouvement du prix de la crypto-monnaie dans les périodes de temps plus élevées (par exemple, la courbe de rotation). Un signal d’achat-vente n’est généré que lorsque le RSI des périodes de temps plus élevées est supérieur à la dépréciation (par exemple, 45). Ce paramètre permet de filtrer les signaux de survente non persistants qui apparaissent lorsque l’ensemble est en baisse.

Les signaux d’achat et de vente doivent être confirmés après leur déclenchement par un certain nombre de cycles (par exemple, 8 lignes K) afin d’éviter de générer des signaux trompeurs.

Avantages stratégiques

  • La méthode d’analyse technique classique utilisée pour juger si une personne est sur-achetée ou sur-vendue en utilisant le RSI
  • L’indicateur RSI stochastique combiné pour identifier le signal de revers du RSI lui-même
  • Application de la technologie de filtrage des signaux trompeurs à plusieurs périodes, améliorant la qualité du signal

Risques stratégiques et solutions

  • Le RSI est sujet à de faux signaux
    • Filtrage des signaux trompeurs en combinaison avec d’autres indicateurs
    • Technologie de détection de tendances
  • Une mauvaise configuration des paramètres de seuil peut générer trop de signaux de transaction
    • Optimiser la combinaison de paramètres pour trouver le paramètre optimal
  • Les signaux d’achat et de vente doivent être confirmés à un certain moment.
    • Trouver un cycle de confirmation équilibré, filtrer les signaux trompeurs et ne pas rater l’occasion

Orientation de l’optimisation de la stratégie

  • Test d’autres combinaisons pour trouver des signaux plus forts
    • Par exemple, l’inclusion de l’indicateur MACD dans la stratégie
  • L’apprentissage de la machine pour trouver les paramètres optimaux
    • Optimisation automatique avec des algorithmes génétiques / évolutionnistes
  • Augmentation des stratégies de coupe-perte pour contrôler le risque d’une seule transaction
    • Stop loss lorsque le prix est en dessous du support

Résumer

La stratégie repose principalement sur les indicateurs de trading classiques RSI et RSI stochastique pour générer des signaux de négociation. En même temps, l’introduction d’un cadre de temps plus élevé pour la confirmation de la tendance peut filtrer efficacement les signaux trompeurs et améliorer la qualité du signal.

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

//@version=5
strategy("RSI and Stochatic Strategy", overlay=true, use_bar_magnifier = false)


/////// Inputs ///////////////

// RSI and SRSI
rsiLength = input(14, title="RSI Length") 
stochLength = input(14, title="Stochastic Length")
kSmooth = input(3, title="K Smooth")
dSmooth = input(3, title="D Smooth")


//////// thresholds ///////////////
st_low = input(5, title="Low SRSI") // stochastic RSI low -- prepare to sell
st_hi = input(50, title="High SRSI") // stochastic RSI high -- prepare to buy
diff = input(5, title="difference") // minimum change in RSI
// inval_diff = input(12, title="difference") // invalidation difference: change in the oposite direction that invalidates rsi falling/rising
rsi_low = input(30, title="Low RSI") // RSI considered low
rsi_hi = input(60, title="High RSI") // RSI considered high
rsi_ht_hi = input(45, title="High higher time frame RSI") // RSI in higher time frame considered high


/// buy trigger duration 
tr_dur = input(8, title="Trigger duration")
low_dur = input(20, title="Monitoring last low")


///////////////// Higher time frame trend ///////////////////
// higher time frame resolution
res2 = input.timeframe("W", title="Higher time-frame")
// Input for the ticker symbol, default is an empty string
// For instance we could monitor BTC higher time frame trend
symbol = input("BTC_USDT:swap", "Input Ticker (leave empty for current)")

// Determine the symbol to use
inputSymbol = symbol == "" ? syminfo.tickerid : symbol
//////////////////////////////////////////////////////////

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

// Calculate Stochastic RSI //
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stochRsi = 100 * (rsi - rsiLowest) / (rsiHighest - rsiLowest)

// Apply smoothing
K = ta.sma(stochRsi, kSmooth)
D = ta.sma(K, dSmooth)

// Higher time Frame RSI
cl2 = request.security(inputSymbol, res2, close)
rsi2 = ta.rsi(cl2, 14)

// SRSI BUY/SELL signals 
sell_stoch = (ta.lowest(K, tr_dur) < st_low) or (ta.highest(rsi, tr_dur) < rsi_low)
buy_stoch = ((ta.lowest(K, tr_dur) > st_hi) or (ta.lowest(rsi, tr_dur) > rsi_hi)) and (rsi2 > rsi_ht_hi)

 // valitation / invalidation sell signal
ll = ta.barssince(not sell_stoch)+1
sell_validation = (ta.highest(rsi, ll)>rsi[ll]+diff and rsi < rsi[ll]) or (rsi < rsi[ll]-diff)

// valitation / invalidation buy signal
llb = ta.barssince(not buy_stoch)+1
buy_validation = (ta.lowest(rsi, llb)<rsi[llb]-diff and rsi > rsi[llb]) or (rsi > rsi_hi and rsi - rsi[tr_dur] > 0)

sell_signal = sell_stoch and sell_validation
buy_signal = buy_stoch and buy_validation 

// Define the start date for the strategy
startYear = input(2019, "Start Year")
startMonth = input(1, "Start Month")
startDay = input(1, "Start Day")

// Convert the start date to Unix time
startTime = timestamp(startYear, startMonth, startDay, 00, 00)

// Define the end date for the strategy
endYear = input(2030, "End Year")
endMonth = input(1, "End Month")
endDay = input(1, "End Day")

// Convert the end date to Unix time
endTime = timestamp(endYear, endMonth, endDay, 00, 00)


if true
    if buy_signal
        strategy.entry("buy", strategy.long, comment = "Buy")
    if sell_signal
        strategy.close("buy", "Sell")