Stratégie de rupture des bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2023-11-07 15:08:36 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise des bandes de Bollinger pour mesurer la tendance du marché et combine des signaux de bande passante pour identifier les opportunités de trading, visant une croissance régulière du portefeuille de placements.

N'hésitez pas à modifier les paramètres et à tester cette stratégie.

Si vous êtes satisfait des résultats existants et que vous souhaitez automatiser cette stratégie, qui peut être effectuée via des alertes, vous devez la convertir en une étude et ajouter des alertes dans le code.

La logique de la stratégie

Cette stratégie utilise les bandes de Bollinger et la bande passante pour déterminer les entrées et les sorties.

Les bandes de Bollinger comprennent la bande supérieure, la bande moyenne et la bande inférieure. La bande du milieu est une moyenne mobile simple de n périodes, par défaut n = 16. La bande supérieure est la bande du milieu + k * écart type, la bande inférieure est la bande du milieu - k * écart type, par défaut k = 3.

L'indicateur de bande passante montre la volatilité du prix par rapport à la bande moyenne. Il est calculé par (bande supérieure - bande inférieure) / bande moyenne * 1000. Lorsque la bande passante est inférieure à 20, cela indique une faible volatilité ou une consolidation. Lorsque la bande passante dépasse 50, cela représente une volatilité accrue.

Cette stratégie recherche des opportunités longues lorsque la bande passante est comprise entre 20-50 et que le prix se déplace en dessous de la bande inférieure.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Les bandes de Bollinger mesurent la direction de la tendance, réduisant les risques de fausses ruptures

  2. Le signal de bande passante localise avec précision l'action dans la plage, évitant ainsi de grandes pertes dues à de grandes oscillations

  3. Le backtest montre une rentabilité de près de 80% sur un an, un ratio risque-rendement extrêmement élevé

  4. Tirage maximal inférieur à 5%, contrôle efficacement le risque et maintient une croissance régulière du portefeuille

  5. Logique simple et claire, facile à comprendre et à mettre en œuvre, largement applicable à divers actifs

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Des paramètres de Bollinger défectueux peuvent vous faire rater de bonnes opportunités de trading.

  2. Faible fréquence de négociation lors de marchés haussiers ou baissiers persistants, rentabilité limitée

  3. Données insuffisantes de backtest, les performances réelles peuvent différer des backtest

  4. Le stop loss peut être retiré lors de mouvements extrêmes, ce qui entraîne des pertes importantes.

  5. Les coûts de transaction élevés réduisent également les bénéfices réels

Les solutions:

  1. Optimiser les paramètres et ajuster la période de Bollinger en fonction du marché

  2. Introduction d'indicateurs supplémentaires pour faire face aux conditions anormales du marché

  3. Rassembler suffisamment de données et effectuer des tests antérieurs sur différents marchés pour vérifier la stabilité

  4. Ajustez le stop loss de manière appropriée pour éviter les pertes importantes dues à des mouvements extrêmes

  5. Sélectionner des plateformes de négociation à faible commission pour réduire les coûts de transaction

Directions d'optimisation

Cette stratégie peut être améliorée dans les domaines suivants:

  1. Ajouter une confirmation de volume pour éviter les fausses ruptures

  2. Combiner avec les indicateurs de tendance pour identifier la direction de la tendance

  3. Utiliser l'apprentissage automatique pour ajuster automatiquement les paramètres et s'adapter au marché

  4. Ajouter un filtre de corrélation pour éviter de négocier des actifs non corrélés

  5. Optimiser le profit/arrêt des pertes pour plus de gains pendant les tendances haussières

  6. Introduire plus de filtres de condition pour augmenter le taux de victoire

  7. Testez des combinaisons de plusieurs délais pour tirer profit de cycles multiples

  8. Construire un portefeuille indexé pour élargir l'exposition

  9. Utilisez l'apprentissage automatique pour générer et valider automatiquement de nouvelles stratégies

Conclusion

Dans l'ensemble, cette stratégie de rupture de la bande de Bollinger a été bien testée et peut produire des rendements stables sur les marchés à plage. La logique de base est simple et claire, facile à saisir et à appliquer. Mais d'autres améliorations dans l'optimisation des paramètres, le contrôle des risques et la gestion du portefeuille sont nécessaires pour des profits stables sur les marchés complexes. Il s'agit d'une stratégie de base de suivi des tendances, et peut être améliorée en introduisant plus d'indicateurs techniques et de mécanismes de gestion des risques, ou combinée à l'apprentissage automatique. En résumé, cette stratégie ouvre la porte au trading algorithmique pour les débutants, et offre également des possibilités aux traders expérimentés d'optimiser les stratégies.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands BAT/USDT 30min", overlay=true )

/// Indicators
///Bollinger Bands
source = close
length = input(16, minval=1)
mult = input(3, step=0.1, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

//Bollinger bands width
bbw = (upper-lower)/basis*1000
//plot(bbw, color=color.blue)

upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50)
lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20)


// Backtesting Period
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

// Take Profit
tp_inp = input(8, title='Take Profit %', step=0.1)/100
take_level = strategy.position_avg_price * (1 + tp_inp)

//Entry Strategy
entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input)
exit_long = cross(high,upper) or close < lower

if testPeriod()

    strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long)
    strategy.exit("Take Profit Long","LongBB",limit=take_level)
    strategy.close(id="LongBB", when=exit_long )



Plus de