Stratégie de rupture de Bollinger

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 10h38
Les étiquettes:

Résumé

Cette stratégie est basée sur l'indicateur Bollinger Bands, prenant des positions longues ou courtes lorsque le prix dépasse les lignes supérieures ou inférieures de Bollinger Bands.

La logique de la stratégie

  1. Calculer la ligne médiane, supérieure et inférieure de Bollinger
  2. Passer long sur la ligne inférieure; passer court sur la ligne supérieure
  3. Définir les heures de début et de fin de négociation
  4. Définir le temps de rétention, par défaut à la sortie intradienne

Plus précisément, il calcule d'abord la SMA de la ligne médiane de la longueur de la longueur, et les lignes supérieures/inférieures de plusieurs fois l'écart type. Lorsque la fermeture se déplace vers le haut de la ligne inférieure, allez long. Lorsque la fermeture se déplace vers le bas de la ligne supérieure, allez court. Définissez également les heures de début et de fin pour limiter les heures de négociation. Sortez avant l'ouverture quotidienne.

La stratégie tente de capturer les mouvements d'expansion après que le prix ait franchi les bandes.

Analyse des avantages

  1. Simple et intuitif, facile à comprendre et à mettre en œuvre
  2. Utiliser les bandes de Bollinger pour juger des ruptures de tendance, a une certaine tendance suivant la capacité
  3. Réglage flexible des paramètres pour différents cycles et produits
  4. Contrôles de sortie intrajournaliers pour les risques au jour le jour
  5. Ne peut permettre que des transactions longues ou courtes

Analyse des risques

  1. Faux risque d'évasion, le prix peut revenir après la première évasion.
  2. Les paramètres doivent être ajustés pour les différents cycles.
  3. Risque d'élargissement des pertes potentielles. Une plage de rupture plus large peut augmenter les pertes.
  4. Augmentation des coûts de transaction: les transactions fréquentes peuvent augmenter les coûts de transaction.

Les risques peuvent être réduits en optimisant les règles d'entrée, en ajoutant un stop loss, en introduisant un filtre de tendance, etc.

Directions d'optimisation

  1. Optimiser les paramètres pour différents cycles
  2. Ajouter des règles de réintégration et de pyramide pour suivre les tendances
  3. Mettre en place un système de stop loss pour contrôler les risques
  4. Définir les heures de négociation pour éviter les événements d'actualité importants
  5. Filtres de tendance à tester pour éviter une évolution de prix instable
  6. Évaluer les différentes périodes de détention et comparer les résultats

Résumé

C'est une stratégie de rupture basée sur les bandes de Bollinger. Elle profite des mouvements de rupture. Les avantages sont une logique simple et une mise en œuvre facile; les inconvénients sont la susceptibilité à de fausses ruptures. Les risques peuvent être gérés grâce à l'optimisation des paramètres, au stop loss, au contrôle des heures de négociation, etc. Elle permet aux traders de comprendre les bases de l'utilisation des indicateurs et des ruptures de négociation.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

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")

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

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()

Plus de