Stratégie de trading rapide pour les crypto-monnaies

Auteur:ChaoZhang est là., Date: 2023-11-27 11:22:19
Les étiquettes:

img

Résumé: Il s'agit d'une stratégie de trading rapide RSI conçue pour les marchés de crypto-monnaie. Il utilise à la fois des indicateurs RSI rapides et des modèles de gap sur les graphiques de chandeliers pour localiser les opportunités de trading.

Principaux: La stratégie utilise deux techniques principales: les indicateurs rapides du RSI et les modèles d'écart.

Le RSI est calculé en fonction de 7 bougies, ce qui rend le RSI plus sensible pour détecter rapidement les conditions de surachat/survente.

Deuxièmement, il détecte des schémas d'écart sur les graphiques de chandeliers. Les écarts se réfèrent aux espaces vides entre le prix d'ouverture actuel et le prix de clôture précédent. Les écarts signalent une forte volatilité et des renversements de tendance potentiels.

Lorsque l'indicateur rapide du RSI indique une situation de survente, passez long.

En outre, la stratégie utilise d'autres filtres, y compris les indicateurs SMA et Min / Max, pour éviter de faux signaux.

Les avantages: L'avantage majeur de cette stratégie est de capturer les virages ultra-rapides de surachat/survente et les opportunités d'inversion des écarts. Il est particulièrement approprié pour les marchés cryptographiques hautement volatils pour saisir les changements de tendance rapides.

Les risques:
Les principaux risques auxquels est confrontée la stratégie sont les suivants:

  1. Le RSI rapide peut être trop sensible, provoquant des faux signaux excessifs.

  2. Les écarts peuvent être simplement des fluctuations normales de prix au lieu de réels retours en arrière.

  3. Au cours des périodes de faible volatilité, les positions peuvent être maintenues inactives pendant de longues périodes.

  4. Des paramètres incorrects tels que la période Min/Max pourraient entraîner des signaux dilués et une faible efficacité.

En conséquence, les méthodes suivantes pourraient contribuer à atténuer les risques susmentionnés:

  1. Ajustez les paramètres du RSI rapide et augmentez la période du RSI pour le rendre moins sensible.

  2. Appliquez un stop-loss dynamique pour verrouiller les bénéfices.

  3. Optimiser le taux de participation à la stratégie. Limiter l'implication dans des environnements à faible volatilité.

  4. Test et optimisation continus des paramètres pour assurer des réglages robustes.

Amélioration: Les principales orientations d'optimisation sont les suivantes:

  1. Explorez d'autres indicateurs comme le MACD, le KDJ combinés avec des lacunes pour améliorer la précision.

  2. Mettre en place des mécanismes de stop loss adaptatifs basés sur la volatilité du marché.

  3. Incorporer des indicateurs de volume comme OBV pour confirmer l'inversion après les écarts.

  4. Optimisez les paramètres du filtre comme la période Min/Max pour découvrir les meilleurs réglages pour réduire les faux signaux.

  5. Rechercher l'adaptabilité des paramètres à travers différents actifs cryptographiques.

Ces efforts pourraient améliorer sensiblement la stabilité, l'adaptabilité et la fiabilité de la stratégie.

Conclusion: En résumé, la stratégie de trading rapide RSI Gap est une approche efficace conçue explicitement pour les marchés cryptographiques volatils.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.5", shorttitle = "Fast RSI str 1.5", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max 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 
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
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, 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