Stratégie de trading d'inversion rapide du RSI


Date de création: 2024-03-01 11:55:56 Dernière modification: 2024-03-01 11:55:56
Copier: 2 Nombre de clics: 617
1
Suivre
1617
Abonnés

Stratégie de trading d’inversion rapide du RSI

Aperçu

La stratégie de trading de revers RSI rapide permet d’effectuer des revers à faible risque en combinant l’utilisation de l’indicateur RSI rapide, le filtrage des entités de la ligne K, le filtrage du prix le plus bas et le filtrage de la ligne moyenne SMA pour déterminer le point de revers de tendance. La stratégie est conçue pour capturer les occasions de revers à court terme.

Principe de stratégie

La stratégie est basée sur les indicateurs suivants:

  1. Indicateur RSI rapide: Calculer le RSI avec la fonction RMA pour le rendre plus sensible et capter plus rapidement les signaux de surachat et de survente.

  2. Filtre d’entité de ligne K: Exige que la taille de l’entité de ligne K soit supérieure à 15 de la taille moyenne de l’entité EMA, afin de filtrer les changements mineurs.

  3. Filtre de prix maximum et minimumLe prix de l’innovation est élevé ou bas pour confirmer le renversement de la tendance.

  4. Filtrage de la ligne SMALe prix de l’or a été fixé à un niveau plus élevé que le prix de l’or.

Un signal de transaction est généré lorsque plusieurs des conditions ci-dessus sont déclenchées simultanément. La logique est la suivante:

Entrée multiple: le RSI rapide est inférieur à la zone de survente et la ligne K est supérieure à la ligne moyenne de l’EMA avec une rupture minimale de la ligne moyenne SMA

Entrée à vide: le RSI rapide est supérieur à la zone de survente et la ligne K est supérieure à la ligne moyenne de l’EMA avec une rupture maximale de 15 de la ligne moyenne SMA

Sortie de plafond: le RSI rapide retourne dans la zone normale

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. Capturer les fluctuations d’un retournement à court terme
  2. Le RSI rapide est très sensible
  3. Filtrage multiple pour réduire les fausses signaux
  4. Les risques sont maîtrisés, les retraits minimes

Risque et optimisation

Cette stratégie comporte aussi des risques:

  1. Le risque d’un échec inversé
  2. Limite d’optimisation des paramètres

L’optimisation peut se faire de la manière suivante:

  1. Filtrage du volume des transactions combiné
  2. Augmentation des stratégies de réduction des pertes
  3. Combinaison de paramètres d’optimisation

Résumer

Cette stratégie est globalement une stratégie de revers à court terme à faible risque. Elle détermine les points d’achat et de vente à l’aide d’indicateurs RSI rapides et utilise des filtres multiples pour réduire les faux signaux, permettant ainsi des revers à risque contrôlable et adaptés aux opérations sur courte ligne.

Code source de la stratégie
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-26 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.4", shorttitle = "Fast RSI str 1.4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usesma = input(true, defval = true, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and usemm
dn2 = maxs and (close < sma or usesma == false) and usemm 
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()