Stratégie de négociation des bandes de Bollinger à indicateur multiple

Auteur:ChaoZhang est là., Date: 2023-11-15 15h30 et 43 min
Les étiquettes:

img

Résumé

Cette stratégie combine plusieurs indicateurs techniques tels que les bandes de Bollinger, RSI et MACD pour prendre des décisions commerciales. Elle trace d'abord les bandes de Bollinger sur le graphique et utilise les bandes de rupture pour les signaux d'entrée.

La logique de la stratégie

  1. Graphiquer les bandes de Bollinger de 34 périodes avec ligne centrale, 1 std dev et 2 std dev bandes.

  2. Entrez long lorsque le rapprochement se fait au-dessus de la bande supérieure, entrez court lorsque le rapprochement se fait en dessous de la bande inférieure.

  3. Fermer une position longue lorsque la position close se croise sous la ligne centrale, fermer une position short lorsque la position close se croise au-dessus de la ligne centrale.

  4. Utilisez RSI>70 comme confirmation supplémentaire pour long, RSI<30 comme confirmation pour court.

  5. Fermer les positions courtes lorsque le RSI dépasse 50, fermer les positions longues lorsque le RSI dépasse 50.

  6. Utiliser le croisement MACD comme filtre supplémentaire pour les entrées, le croisement MACD pour le long, le croisement MACD pour le court.

  7. Fermer les positions longues sur le croisement MACD, fermer les positions courtes sur le croisement MACD.

  8. Exigez que les 3 indicateurs s'alignent avant d'entrer dans les transactions, plusieurs filtres réduisent les faux signaux.

Les avantages

La combinaison de signaux provenant de plusieurs indicateurs réduit les faux signaux et augmente la rentabilité.

Des règles strictes de stop loss basées sur des bandes et des indicateurs limitent les pertes sur chaque transaction.

Comparé aux stratégies à indicateur unique, la combinaison d'indicateurs améliore les performances. Plusieurs filtres éliminent les mauvais signaux. Le mécanisme de stop loss contrôle l'impact des pertes.

Dans l'ensemble, cette stratégie excelle sur les marchés en tendance, en capturant les mouvements majeurs tout en évitant les sauts de marée en utilisant les détails des indicateurs.

Les risques

Les principaux risques sont les suivants:

  1. Optimisation des paramètres peut réduire mais pas éliminer les faux signaux.

  2. L'incapacité de tirer profit des marchés à plage. Le stop loss peut entraîner une perte lors de la consolidation. Les règles de stop loss peuvent être assouplies pour maintenir les transactions plus longtemps.

  3. Les indicateurs de retard conduisant à des opportunités d'entrée manquées.

  4. L'utilisation de trailing stops ou de moyennes à la baisse peut mieux contrôler les pertes.

  5. Les paramètres fixes peuvent nécessiter des ajustements pour différents marchés.

  6. Des essais insuffisants entraînant une suradaptation.

Des possibilités d'amélioration

La stratégie peut être améliorée de plusieurs façons:

  1. Optimiser les paramètres de l'indicateur pour trouver les meilleures combinaisons qui minimisent les faux signaux.

  2. Incorporer un stop loss adaptatif au lieu d'un stop à bande moyenne fixe.

  3. Utiliser l'apprentissage automatique pour optimiser les paramètres adaptatifs dans des conditions changeantes, par exemple l'apprentissage par renforcement.

  4. Ajouter des règles de détection des tendances pour employer des tactiques différentes pour les différentes phases du marché.

  5. Incorporer le sentiment, les données des médias sociaux pour une prédiction multifactorielle améliorée et des indicateurs de pointe.

  6. Utilisez la composition pour échelonner les positions en fonction de la taille croissante du compte pour une croissance exponentielle.

  7. Optimiser les combinaisons avec des stratégies non corrélées pour réduire la volatilité du portefeuille par la diversification.

Conclusion

Cette stratégie combine plusieurs indicateurs pour des signaux d'entrée et de sortie robustes et impose une discipline stricte de stop loss. L'utilisation de plusieurs indicateurs réduit les faux signaux tout en contrôlant l'ampleur des pertes.


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

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

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

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Plus de