La stratégie d'inversion de l'impulsion du RSI identifie les conditions de surachat et de survente en combinant les indicateurs du RSI et les directions du corps du chandelier pour le trading d'inversion.
La stratégie est principalement mise en œuvre à travers les éléments suivants:
Indicateur RSI de Connors
Calcule le RSI conventionnel, le RSI Win Ratio et le RSI Parisien pour obtenir le RSI de Connors en moyenne.
Indicateur RSI rapide
Utilise les variations de prix pour calculer le RSI rapide, reflétant les cycles à très court terme.
Filtre du corps du chandelier
Il faut un corps haussier pour le long et un corps baissier pour le court pour éviter de fausses ruptures.
Conditions longues et courtes
Allez long quand Connors RSI est en dessous de 20 et rapide RSI en dessous de 25 avec un corps haussier.
Allez court quand Connors RSI supérieur à 80 et rapide RSI supérieur à 75 avec un corps baissier.
Sortie de stop-loss
Sort avec stop loss lorsque le corps du chandelier tourne.
Connors RSI identifie les points d'inversion de tendance à long terme, le RSI rapide identifie les inversions à court terme et le corps de chandelier garantit la validité des ruptures.
Les avantages de cette stratégie sont les suivants:
Combinaison d'indicateurs à long et à court terme
L'indicateur RSI de Connors reflète les cycles à long terme et l'indicateur RSI rapide reflète les cycles à court terme, combinant les deux pour identifier avec précision les points d'inversion.
Filtre du corps du chandelier
Le fait de ne négocier que sur les écarts corporels peut réduire les pertes des faux écarts.
Paramètres réglables
Les paramètres RSI, les produits de négociation et les délais de négociation peuvent être librement ajustés en fonction des différents marchés.
Simple et intuitive
RSI et corps de chandelier sont des indicateurs de base, logique facile à comprendre.
Facile à mettre en œuvre
Utilise uniquement des indicateurs intégrés, nécessite peu de code et est facile à mettre en œuvre.
Les principaux risques de cette stratégie:
Risque d'échec du renversement
Le prix continue la tendance initiale après le signal d'inversion, conduisant à des pertes.
Risque de marché variable
Des signaux inefficaces fréquents déclenchés sur des marchés variés.
Risque de fausse rupture
Le filtre du corps du chandelier ne peut pas éviter complètement les fausses éruptions.
Risque par paramètre
Les paramètres RSI inappropriés peuvent manquer des transactions ou déclencher plusieurs transactions inefficaces.
Risque lié aux conditions particulières du marché
Les indicateurs RSI peuvent échouer et générer des signaux incorrects dans des conditions spéciales de marché.
La stratégie peut être optimisée par les aspects suivants:
Ajouter des mécanismes de stop loss
Optimiser les stratégies d'arrêt des pertes pour des arrêts plus raisonnables, réduisant les pertes d'une seule transaction.
Intégrer plusieurs indicateurs
Ajoutez des filtres comme MACD et KD pour rendre les signaux plus fiables.
Ajouter des filtres de probabilité
Combiner l'analyse de tendance, le support/résistance pour éviter les transactions à faible probabilité.
Optimiser les paramètres
Les paramètres doivent être testés sur différents produits et dans des délais différents afin de trouver des valeurs optimales.
Évitez les conditions particulières du marché
Identifiez et évitez de négocier dans des conditions spéciales de marché pour éviter de grosses pertes.
La stratégie d'inversion de l'impulsion du RSI identifie les inversions à long et à court terme en utilisant le Connors RSI et le RSI rapide, avec des filtres de corps de bougies pour augmenter la validité du signal. Les avantages tels que les combinaisons d'indicateurs et les paramètres réglables permettent de capturer les inversions et de négocier contre-tendance en cas de surachat ou de survente.
/*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()