Cette stratégie met en œuvre des opérations de percée rapide basées sur l'indicateur RSI et l'EMA des corps de chandeliers.
Calculer l'indicateur RSI avec la période 7 et utiliser le RMA pour l'accélération.
Calculer l'EMA de la taille du corps du chandelier avec la période 30 comme référence pour la taille du corps.
Si le RSI dépasse la ligne limite (par défaut 30) et que le corps de la bougie actuelle est supérieur à 1/4 de la taille moyenne du corps, passez long.
Si l'indicateur RSI dépasse la ligne limite (défaut 70) et que le corps de la bougie actuelle est supérieur à 1/4 de la taille moyenne du corps, passez à la vente.
Si vous êtes déjà en position, fermez lorsque l'indicateur RSI franchit la ligne limite.
Des paramètres tels que la longueur du RSI, la limite, le prix de référence peuvent être configurés.
Des paramètres tels que la période EMA du corps, le multiplicateur de chroot de position ouverte peuvent être configurés.
Le nombre de passages RSI peut être configuré.
Utiliser l'attribut de renversement de l'indicateur RSI pour capturer les renversements en temps opportun.
La RMA accélère la formation de l'indice RSI pour des renversements plus sensibles.
Filtrer les consolidations de petite portée avec de grands corps de chandeliers.
Des données de backtest suffisantes assurent la fiabilité.
Les paramètres personnalisables s'adaptent aux différents environnements du marché.
Une logique simple et claire.
RSI a un biais de backtest, la performance réelle à valider.
Les grands organismes ne peuvent pas filtrer complètement les marchés agités.
Les paramètres par défaut peuvent ne pas convenir à tous les produits, une optimisation est nécessaire.
Le taux de victoire peut ne pas être élevé, besoin de supporter des pertes consécutives mentalement.
Risque d'échec de la percée, besoin d'un stop loss en temps opportun.
Optimiser les paramètres du RSI pour différentes périodes et produits.
Optimisez la période d'EMA du corps pour la taille du corps.
Optimisez le multiplicateur pour les positions ouvertes pour contrôler la fréquence d'entrée.
Ajoutez un stop-loss mobile pour assurer le taux de gain.
Ajouter un filtre de tendance pour éviter les transactions contre tendance.
Optimiser la gestion de l'argent pour le contrôle des risques.
En résumé, il s'agit d'une stratégie d'inversion très simple et directe. Elle utilise à la fois l'attribut d'inversion du RSI et l'élan des grands corps de bougies pour entrer rapidement pendant les inversions du marché. Bien que les résultats des backtests semblent bons, les performances réelles doivent encore être validées. L'optimisation des paramètres et le contrôle des risques sont nécessaires lors de son application.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", 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") 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") rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars") 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)) uplimit = 100 - limit dnlimit = limit //RSI Bars ur = fastrsi > uplimit dr = fastrsi < dnlimit uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0 dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0 //Body body = abs(close - open) emabody = ema(body, 30) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4 dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4 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 //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all()