Triple BB Bands Breakout avec la stratégie RSI

Auteur:ChaoZhang est là., Date: 2024-02-29 14:57:49
Les étiquettes:

img

Résumé

Cette stratégie combine les bandes de Bollinger et les indicateurs RSI pour générer des signaux de trading. Elle surveille si les prix de clôture de trois chandeliers franchissent les bandes supérieures ou inférieures en même temps, et combine l'indicateur Vortex et l'indicateur RSI pour confirmer les signaux de trading.

Principe de stratégie

La stratégie repose principalement sur les principes suivants:

  1. Utilisez des bandes de Bollinger à 20 périodes, envisagez d'émettre des signaux de trading lorsque les prix franchissent les bandes supérieures ou inférieures à la fermeture
  2. Exigez trois chandeliers à percer en même temps pour éviter les fausses ruptures
  3. Combiner l'indicateur Vortex, lorsque fortement suracheté VIP>1.25, lorsque fortement survendu VIM>1.25, filtrer les signaux
  4. Combinez l'indicateur RSI pour déterminer le surachat et le survente, envisagez d'aller court lorsque le RSI dépasse 70, et envisagez d'aller long lorsque le RSI dépasse 30
  5. Lorsque les conditions ci-dessus sont remplies, des signaux longs et courts sont générés

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Les bandes triple BB filtrent les fausses éruptions et assurent la fiabilité des éruptions
  2. L'indicateur Vortex évalue la force du marché et évite les transactions défavorables sur le marché.
  3. L'indicateur RSI évalue la zone de surachat et de survente, combinée à l'indicateur Bollinger Bands pour l'entrée
  4. La combinaison de plusieurs indicateurs permet de juger de manière exhaustive de la situation du marché et la fiabilité du signal est relativement élevée.

Analyse des risques

La stratégie comporte également certains risques:

  1. L'indicateur Bollinger Bands est très sensible aux paramètres, la longueur et le multiplicateur StdDev doivent être optimisés
  2. L'indicateur Vortex est également assez sensible au paramètre de cycle, qui doit être ajusté pour différents marchés
  3. L'indicateur RSI est sujet aux divergences et peut également manquer les tendances
  4. Si le jugement des trois indicateurs est en désaccord, il sera impossible d'entrer, en manquant certaines opportunités.

Les mesures de contrôle des risques comprennent:

  1. Optimiser les paramètres et utiliser les paramètres avec le taux de réussite le plus élevé dans le backtesting
  2. Combiner d'autres indicateurs, tels que le filtrage du volume des transactions
  3. Réduire de manière appropriée la logique de jugement des indicateurs pour éviter de manquer de bonnes opportunités

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser la longueur et le multiplicateur StdDev des bandes de Bollinger pour trouver les paramètres optimaux
  2. Optimiser le cycle de l'indicateur Vortex pour le rendre plus adapté aux différents marchés
  3. Augmenter le jugement des autres indicateurs, tels que le volume des transactions, le MACD, etc., pour enrichir les signaux diversifiés
  4. Ajuster la logique de jugement de l'indicateur pour éviter l'impossibilité d'entrer en raison de la divergence de l'indicateur
  5. Améliorer la stratégie de stop loss pour contrôler la perte maximale par transaction

Résumé

Cette stratégie combine plusieurs indicateurs pour le jugement. Tout en assurant la fiabilité du signal, elle présente également quelques problèmes. Grâce à l'optimisation des paramètres, à des sources de signal enrichies, à une logique de jugement ajustée et à un stop loss, etc., la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm

//@version=5
strategy(title='RSI + BB  over 3 bar+--- vortex0.71.3  ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true)

length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)

upperBand = basis + dev
lowerBand = basis - dev

isClosedBar = ta.change(time("15"))

var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false


// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)

VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR

//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")

sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)

shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel




if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])

    if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
        strategy.entry("Short", strategy.short)
        closeAboveUpperBand := false  // Reset the condition when entering a new Short position
    if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
        strategy.entry("Long", strategy.long)
        closeBelowLowerBand := false  // Reset the condition when entering a new Long position



if strategy.position_size > 0  // Check if there is an open Long position
    closeAboveUpperBand := close > upperBand  // Update the condition based on close price
    if closeAboveUpperBand
        strategy.close("Long",disable_alert=true)  // Close the Long position if close price is above upper band

if strategy.position_size < 0  // Check if there is an open Short position
    closeBelowLowerBand := close < lowerBand  // Update the condition based on close price
    if closeBelowLowerBand
        strategy.close("Short",disable_alert=true)  // Close the Short position if close price is below lower band

// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

Plus de