La stratégie de réversion de la moyenne du double RSI

Auteur:ChaoZhang est là., Date: 23 octobre 2023 à 15h46
Les étiquettes:

img

Résumé

La stratégie de réversion moyenne du double RSI est une stratégie de suivi de tendance qui identifie les conditions de surachat et de survente à l'aide de deux indicateurs RSI sur des délais différents.

La logique de la stratégie

La stratégie utilise deux indicateurs RSI avec des périodes différentes - l'un sur le graphique de 5 minutes et l'autre sur le graphique d'une heure.

Il suit les valeurs du RSI et recherche des situations où le RSI a été inférieur à 30 ou supérieur à 70 pour un nombre défini de barres, indiquant des conditions de survente ou de surachat prolongées.

En outre, il utilise des bougies Heikin-Ashi et vérifie un nombre défini de bougies vertes ou rouges pour confirmer la direction de la tendance avant d'entrer dans les transactions.

Lorsque les conditions RSI et Heikin-Ashi s'alignent, la stratégie sera longue après les conditions de survente ou courte après les conditions de surachat, en pariant sur une réversion à la moyenne.

Les positions sont fermées à la fin de chaque journée afin d'éviter de maintenir les transactions pendant la nuit.

Les avantages

  • Utilise une approche multi-temporelle pour identifier les conditions de surachat/survente
  • Les bougies Heikin-Ashi filtrent le bruit et identifient la direction de la tendance
  • Filtre couleur ouvert évite les faux signaux
  • Des règles d'entrée/sortie claires basées sur deux indicateurs alignant
  • Gestion des risques par clôture des positions avant la fin de chaque journée

Les risques

  • Des coupes de fouet sont possibles si une forte tendance persiste après le signal de surachat/survente du RSI
  • Les écarts de marché peuvent déclencher des arrêts
  • Le décalage Heikin-Ashi peut retarder les entrées commerciales et provoquer des manquements.
  • La clôture des positions à la fin de la journée renonce aux gains potentiels des détentions au jour le jour

Améliorations

  • Ajouter des filtres supplémentaires comme le volume ou la volatilité pour confirmer les signaux
  • Optimiser les périodes d'indice de volatilité et les niveaux de surachat/survente pour l'instrument
  • Considérer la dimensionnement dynamique des positions basé sur la volatilité
  • Expérience avec des objectifs de profit ou des arrêts de trailing au lieu des sorties de fin de journée
  • Efficacité des essais sur différents instruments et réglage des paramètres

Conclusion

La stratégie du double RSI Mean Reversion adopte une approche basée sur des règles pour la dynamique des transactions. En combinant deux délais, des indicateurs de surachat/survente, une analyse de bougies et un filtre d'entrée, elle vise à identifier des configurations de réversion moyenne à forte probabilité.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Gidra
//2018

//@version=2
strategy(title = "Gidra's Vchain Strategy v0.1", shorttitle = "Gidra's Vchain Strategy v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiperiod = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI limit")
rsibars = input(3, defval = 3, minval = 1, maxval = 20, title = "RSI signals")
useocf = input(true, defval = true, title = "Use Open Color Filter")
openbars = input(2, defval = 2, minval = 1, maxval = 20, title = "Open Color, Bars")
showrsi = input(true, defval = true, title = "Show indicator RSI")
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")


//Heikin Ashi Open/Close Price
o=open
c=close
h=high
l=low
haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))
col=haopen>haclose ? red : lime
plotcandle(haopen, hahigh, halow, haclose, title="heikin", color=col)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))
uplimit = 100 - rsilimit
dnlimit = rsilimit
rsidn = rsi < dnlimit ? 1 : 0
rsiup = rsi > uplimit ? 1 : 0

//RSI condition
rsidnok = highest(rsidn, rsibars) == 1? 1 : 0
rsiupok = highest(rsiup, rsibars) == 1? 1 : 0

//Color Filter
bar = haclose > haopen ? 1 : haclose < haopen ? -1 : 0
gbar = bar == 1 ? 1 : 0
rbar = bar == -1 ? 1 : 0
openrbarok = sma(gbar, openbars) == 1 or useocf == false
opengbarok = sma(rbar, openbars) == 1 or useocf == false

//Signals
up = openrbarok and rsidnok
dn = opengbarok and rsiupok

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Indicator RSI
colbg = showrsi == false ? na : rsi > uplimit ? red : rsi < dnlimit ? lime : na
bgcolor(colbg, transp = 20)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
    strategy.close_all()

Plus de