RSI et bandes de Bollinger Stratégie de négociation quantitative

Auteur:ChaoZhang est là., Date: 2024-01-08 10:16:22 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

Cette stratégie combine l'indice de force relative (RSI) et les bandes de Bollinger pour identifier les opportunités de trading, appartenant aux stratégies de renversement moyen dans le trading quantitatif.

La logique de la stratégie

  1. Utilisez l'indicateur RSI pour juger si le marché est survendu.

  2. Utilisez les bandes de Bollinger pour déterminer si le prix commence à rebondir vers le haut.

  3. Combinez le signal de survente du RSI et le signal de rupture des bandes de Bollinger pour définir des points d'entrée d'achat. Achetez lorsque les deux signaux sont déclenchés et fermez la position lorsque le prix dépasse la bande moyenne pour réaliser un profit.

Analyse des avantages

  1. La stratégie combine l'indicateur de réversion moyenne RSI et l'indicateur de canal Bollinger Bands pour localiser plus précisément les points d'entrée.

  2. L'indicateur RSI peut filtrer de nombreuses fausses ruptures et réduire les transactions inutiles.

  3. Les bandes de Bollinger agissent comme un stop loss pour contrôler le risque de chaque transaction.

Analyse des risques

  1. L'indicateur RSI peut donner de mauvais signaux, ce qui conduit à manquer des opportunités d'achat.

  2. Les paramètres des bandes de Bollinger ne sont pas correctement réglés et peuvent entraîner un stop loss trop lâche ou trop strict.

  3. Le choix d'instruments de négociation inappropriés, tels que la négociation d'actions à faible capitalisation présentant un risque de liquidité plus élevé.

Direction de l'optimisation

  1. Testez différentes combinaisons de paramètres comme la période RSI, la période Bollinger et le multiplicateur pour trouver les paramètres optimaux.

  2. Incorporer d'autres indicateurs comme KD, MACD pour définir des conditions d'achat plus strictes pour filtrer les signaux.

  3. Le montant de l'obligation de crédit est calculé en fonction de la volatilité de l'instrument de négociation.

Conclusion

Cette stratégie utilise la logique de l'achat aux bas du RSI et de la vente aux hauts de Bollinger, appartenant aux stratégies de réversion moyenne. Par rapport à l'utilisation d'indicateurs uniques tels que le RSI ou les bandes de Bollinger, cette stratégie peut localiser les points d'entrée et de sortie plus précisément, obtenant ainsi de meilleurs résultats. Les prochaines étapes pourraient être l'amélioration par l'optimisation des paramètres, le filtrage des signaux, les stratégies de stop loss, etc.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's BB + RSI Strategy v1.0", shorttitle = "BB+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiuse = input(true, defval = true, title = "Use RSI")
bbuse = input(true, defval = true, title = "Use BB")
showbb = input(true, defval = true, title = "Show BB Overlay")
bbperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "BB period")
bbsource = input(ohlc4, title = "BB source")
bbmult = input(2, defval = 2, minval = 1, maxval = 100, title = "BB Mult")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 1000, title = "RSI period")
rsisource = input(close, title = "RSI source")
rsilimit = input(30, defval = 30, minval = 1, maxval = 49, title = "RSI Limit")
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")

//RSI
rsi = rsi(rsisource, rsiperiod)

//BB
basis = sma(bbsource, bbperiod)
dev = bbmult * stdev(bbsource, bbperiod)
upper = basis + dev
lower = basis - dev

//Overlay
col = showbb ? blue : na
plot(upper, color = col)
plot(basis, color = col)
plot(lower, color = col)

//Signals
up = (rsi < rsilimit or rsiuse == false) and (low < lower or bbuse == false)
cl = close > open

//Trading
lot = 0.0 
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, lot)
if cl
    strategy.entry("Close", strategy.short, 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Plus de