Stratégie d'inversion de la dynamique RSI


Date de création: 2023-11-07 15:45:15 Dernière modification: 2023-11-07 15:45:15
Copier: 0 Nombre de clics: 773
1
Suivre
1617
Abonnés

Stratégie d’inversion de la dynamique RSI

Aperçu

La stratégie RSI Dynamic Reversal est utilisée pour identifier les tendances de survente et de survente en combinant l’indicateur RSI et la direction des entités de la ligne K. La stratégie utilise à la fois le RSI régulier et le RSI rapide et, en combinaison avec le filtre des entités de la ligne K, permet d’identifier efficacement les opportunités de revers.

Principe de stratégie

La stratégie est principalement réalisée par les éléments suivants:

  1. Indicateur du RSI de Connors

Calculez le RSI classique, le RSI du taux de victoire et le RSI du Paris-Charles en prenant la moyenne des trois pour le RSI de Connor.

  1. Indicateur RSI rapide

Le RSI rapide est calculé en utilisant les variations de prix, et reflète les cycles ultra-court.

  1. Filtre d’entité de ligne K

Il est nécessaire de faire plus de fil de lumière physique et de fil de lumière vide pour éviter les fausses percées.

  1. Conditions de dégagement

Lorsque le RSI de Connors est inférieur à 20, le RSI rapide est inférieur à 25, et un rayonnement solaire apparaît.

Lorsque le RSI de Connors est supérieur à 80, le RSI rapide est supérieur à 75, et la ligne de l’ombre apparaît.

  1. Arrêt de perte et sortie

L’entité se tourne vers le stop loss et s’en va.

Le RSI de Connor détermine le point de revers de la tendance de la ligne longue, le RSI rapide détermine le point de revers de la ligne courte, et l’entité de la ligne K assure l’efficacité de la rupture, ce qui permet de détecter efficacement les opportunités de revers et d’ouvrir des positions en temps opportun pour effectuer des opérations de revers.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Combination avec les indices de longueur courte

Le RSI de Connors reflète le cycle de la ligne longue, le RSI rapide reflète le cycle de la ligne courte, les deux combinés permettent de déterminer plus précisément le point de basculement.

  1. Filtrage des entités

Les opérations effectuées uniquement lors d’une percée réelle peuvent réduire les pertes causées par une fausse percée.

  1. Paramètres modifiables

Les paramètres du RSI, le type de transaction et la période de transaction peuvent être librement ajustés pour s’adapter à différents marchés.

  1. La simplicité et l’intuition

Les entités RSI et K-Line sont des indicateurs de base et la logique de la stratégie est simple et compréhensible.

  1. Facile à mettre en œuvre

Il utilise uniquement des indicateurs intégrés, peu de code et peu de difficulté à mettre en œuvre.

Analyse des risques

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

  1. Le risque d’échec inverse

Après l’émission du signal de reprise, le cours a continué sa tendance initiale, entraînant des pertes.

  1. Le risque de secousses

Les signaux de secousse ont été déclenchés à plusieurs reprises, entraînant de nombreuses transactions invalides.

  1. Le risque d’une fausse percée

Le filtrage physique ne peut pas éviter complètement les fausses percées.

  1. Paramètres définissant le risque

Les paramètres RSI sont mal définis, ce qui peut entraîner des opportunités manquées ou plusieurs transactions invalides.

  1. Risques liés à des situations particulières

L’indicateur RSI ne fonctionne pas dans des circonstances particulières et génère un signal erroné.

Direction d’optimisation

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

  1. Augmentation du mécanisme de prévention des pertes

Optimiser les stratégies de stop-loss pour les rendre plus raisonnables et réduire les pertes individuelles.

  1. Intégrer plusieurs indicateurs

Le filtrage des indicateurs MACD, KD, etc. a été ajouté pour rendre le signal plus fiable.

  1. Augmenter le filtrage de probabilité

Évitez les transactions à faible probabilité en combinant des probabilités de jugement telles que la tendance, la résistance au soutien.

  1. Optimiser les paramètres

Test de paramètres pour différents types de transactions et périodes afin de trouver les paramètres optimaux.

  1. Évitez les situations exceptionnelles

Il est important d’identifier les situations exceptionnelles, de suspendre les transactions et d’éviter les pertes massives.

Résumer

La stratégie de retour dynamique du RSI augmente l’efficacité du signal en déterminant le retour du long et du court du RSI et du RSI rapide. Elle présente des avantages tels que la combinaison d’indicateurs, la flexibilité de régulation des paramètres, la possibilité de saisir les occasions de retour et d’intervenir en temps opportun dans les transactions en cas de survente.

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

//Noro
//2018

//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, 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")

//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
    roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3

//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)

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

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false

//Signals

up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()