La stratégie de changement de RSI pour le scalping rapide v1.7

Auteur:ChaoZhang est là., Date: 2023-12-22 à 15h10h40
Les étiquettes:

img

Résumé

La stratégie de commutation du RSI Fast Scalping de Noro est une stratégie de trading quantitative qui identifie les opportunités de surachat et de survente à l'aide de l'indicateur RSI.

Les éléments clés de cette stratégie sont les suivants:

  1. Indicateur RSI rapide: Identifier les niveaux de surachat et de survente
  2. Modèles de bougies: Aider à déterminer la direction de la tendance
  3. Filtre des moyennes mobiles: Utilisez la SMA pour éviter les faux signaux
  4. Mécanisme de stop-loss: mettre en œuvre un stop-loss basé sur les limites de l'indice RSI

La logique de la stratégie

La stratégie de commutation du RSI Fast Scalping de Noro identifie principalement les signaux de trading suivants:

  1. Signals de surachat/survente du RSI rapide: Les signaux de trading sont générés lorsque le RSI rapide dépasse sa limite supérieure ou sa limite inférieure.

  2. Les paramètres du chandelier tels que la taille du corps et la direction sont utilisés pour déterminer la tendance et compléter les signaux RSI rapides.

  3. Signaux de filtrage SMA: la direction SMA filtre les faux signaux de rupture.

  4. Signals Stop Loss: Les positions sont fermées lorsque le RSI rapide dépasse à nouveau sa limite supérieure ou inférieure.

Plus précisément, cette stratégie identifie les opportunités de trading basées sur les zones de surachat et de survente du RSI rapide.

Pour éviter le bruit, les conditions supplémentaires suivantes sont ajoutées:

  1. Taille du corps de la bougie: les corps de bougie plus grands représentent une tendance plus forte
  2. Direction de la bougie: détermine la tendance haussière ou baissière
  3. Filtre SMA: Filtre les faux signaux de rupture
  4. Stop Loss: Sort des transactions lorsque le RSI rapide dépasse ses limites

Par conséquent, cette stratégie combine le RSI rapide, les bougies, la moyenne mobile et le stop loss pour générer des signaux de trading.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. Rapide RSI est sensible: Capture rapidement les opportunités de surachat/survente
  2. Candlestick & MA Filter: évite les faux signaux
  3. Stop Loss automatique: contrôle efficace des risques
  4. Convient pour le scalping: fonctionne bien avec des délais plus courts, par exemple 1H, 30M
  5. Facile à optimiser: les paramètres peuvent être ajustés pour différents marchés

Les risques

Il y a aussi quelques risques à prendre en considération:

  1. Stop Loss consécutif: Plus de signaux de stop loss peuvent se produire sur les marchés de gamme
  2. Optimisation des paramètres nécessaire: les paramètres doivent être ajustés pour différentes paires et délais
  3. Impossible d'éviter toutes les pertes: l'arrêt rapide des pertes entraîne encore certaines pertes

Les méthodes d'optimisation suivantes peuvent aider à atténuer les risques:

  1. Optimiser les paramètres du RSI rapide: réduire les faux signaux
  2. Optimiser le placement de stop loss: contrôler la taille des pertes d'une seule transaction
  3. Ajouter la taille de la position: répartir les risques sur plusieurs transactions

Directions d'optimisation

Certaines façons d'optimiser davantage cette stratégie comprennent:

  1. Prise de bénéfices: Prendre des bénéfices partiels lorsque les objectifs de profit sont atteints
  2. Améliorer la gestion des risques: intégrer des règles de dimensionnement des positions pour diversifier les risques
  3. Réglage des paramètres: effet d'essai des ajustements des paramètres dans les délais
  4. Machine Learning: utiliser des algorithmes pour optimiser automatiquement les paramètres au fil du temps
  5. Test de robustesse: évaluer les performances de la stratégie sur plus de paires de symboles

En intégrant la prise de profit, la gestion des risques, l'optimisation des paramètres, l'apprentissage automatique et les tests de robustesse, la stratégie peut être considérablement améliorée en termes de stabilité.

Conclusion

En résumé, la stratégie de commutation rapide du RSI de Noro combine l'indicateur rapide du RSI avec une analyse complémentaire des bougies pour identifier les opportunités de trading surachetées et survendues.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Fast RSI Strategy v1.7", shorttitle = "Fast RSI str 1.7", overlay = true)

//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, %")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usebc = input(true, defval = true, title = "Use BarColor Strategy")
usesma = input(false, defval = false, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast 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), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
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)
abody = sma(body, 10)

//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 > abody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm
dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm 
up3 = sma(bar, 2) == -1 and usebc
dn3 = sma(bar, 2) == 1 and usebc
exit = (((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 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
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 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Plus de