La stratégie de rupture de momentum RSI-BB combine l'indicateur de force relative (RSI) et les bandes de Bollinger (BB) pour le trading de rupture. Elle utilise le RSI pour déterminer les tendances du marché et les niveaux de surachat/survente, et le BB pour identifier les points de rupture. Lorsque les signaux RSI et BB s'alignent, la stratégie entrera en long ou en court en conséquence.
Le code calcule d'abord les indicateurs RSI et BB.
Le RSI est calculé comme suit:
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
Là où la hausse mesure le mouvement des prix à la hausse sur 30 périodes, la baisse mesure le mouvement des prix à la baisse, et rsi est calculé sur la base du rapport de la hausse à la baisse.
Le BB est calculé comme suit:
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
Lorsque la base est la moyenne mobile à 50 périodes, dev est 0,2 fois l'écart type, la bande supérieure et la bande inférieure sont les bandes.
bbi est l'indice de bande passante de Bollinger, calculé comme suit:
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr vérifie si le rapprochement brise la bande supérieure ou inférieure. La rupture est 1, la ventilation est -1, sinon 0, bbi est la différence entre le bbr actuel et le précédent.
Les signaux stratégiques sont déterminés comme suit:
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
Allez long lorsque le RSI est compris entre 52-65 et BBI est compris entre 0,11 et 0,7.
La combinaison du RSI et du BB fournit des signaux plus fiables.
L'indicateur RSI à 30 périodes filtre le bruit du marché et se concentre sur les tendances majeures.
Une BB de 50 périodes avec 0,2 écarte-type aide à filtrer les fléchettes.
Les seuils de BBI filtrent les fausses fuites.
Les zones longue/courte du RSI de 52-65 et 35-48 fournissent un certain tampon pour éviter les transactions manquées.
Les stratégies de rupture sont sujettes à être prises dans des pièges, doivent gérer le risque avec un stop loss.
Les résultats des tests antérieurs peuvent être surmontés, les performances en direct peuvent varier.
Les mouvements extrêmes du marché peuvent entraîner un stop loss entraînant des pertes importantes.
Les paramètres RSI et BB, y compris les périodes et les seuils, doivent être optimisés.
Le prix de commande peut avoir une incidence significative sur les performances en direct.
Testez différentes combinaisons de paramètres RSI et BB pour trouver des réglages optimaux.
Ajoutez d'autres indicateurs comme MACD, KD pour la filtration du signal.
Optimiser les zones longues/courtes du RSI pour filtrer plus de bruit.
Optimiser les seuils de BBI dynamiques pour mieux filtrer les faux.
Ajouter un filtre de tendance pour éviter de négocier contre la tendance principale.
Testez différentes techniques de stop loss pour trouver un contrôle optimal des risques.
Testez différents types de commandes pour minimiser l'impact des glissements.
La stratégie RSI-BB combine les avantages de l'utilisation d'indicateurs de tendance et de dynamique. Les résultats des backtests sont prometteurs, mais les performances en direct peuvent varier en raison de facteurs du monde réel tels que le glissement et le stop loss. Les paramètres et les filtres doivent être optimisés en fonction des résultats des backtests.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)