Les ressources ont été chargées... Je charge...

La tendance ATR de la bande de Bollinger suivant la stratégie

Auteur:ChaoZhang est là., Date: 2024-05-15 à 10h50
Les étiquettes:BBSMAATR

img

Résumé

Cette stratégie est basée sur les bandes de Bollinger et l'indicateur ATR. Elle capture les fluctuations de prix à l'aide des bandes de Bollinger, utilise les écarts de prix au-dessus ou en dessous des bandes comme signaux d'entrée et utilise ATR comme stop loss.

Principes de stratégie

  1. Calculer les bandes de Bollinger: utiliser le prix de clôture pour calculer la moyenne mobile simple (SMA) comme bande intermédiaire, et calculer les bandes supérieure et inférieure en fonction de la volatilité (déviation type).
  2. Calculer l'ATR: utiliser la moyenne mobile de la plage réelle (TR) pour calculer l'ATR comme base du stop loss de suivi.
  3. Générer des signaux de négociation: lorsque le prix dépasse la bande de Bollinger inférieure, générer un signal long; lorsqu'il dépasse la bande de Bollinger supérieure, générer un signal court. Lorsque le prix dépasse l'arrêt de suivi ATR, générer un signal long; lorsqu'il dépasse l'arrêt de suivi ATR, générer un signal court.
  4. Fermer les positions: pour les positions longues, si le prix dépasse la moyenne mobile simple, fermer la position longue; pour les positions courtes, si le prix dépasse la moyenne mobile simple, fermer la position courte.

Les avantages de la stratégie

  1. Suivi des tendances: Capture les tendances des marchés en utilisant des bandes de Bollinger et un arrêt de suivi ATR, en s'adaptant à différents environnements de marché.
  2. L'opération de mise en place d'un stop loss rapide: utilise l'ATR comme stop loss de suivi, ajustant dynamiquement la position de stop loss en fonction de la volatilité du marché afin de contrôler le risque.
  3. Simple et facile à utiliser: la logique de la stratégie est claire, avec peu de paramètres, ce qui la rend facile à comprendre et à appliquer.

Risques stratégiques

  1. Sensibilité des paramètres: le rendement de la stratégie est affecté par le choix des paramètres des bandes de Bollinger et de l'ATR, ce qui nécessite une optimisation pour différents marchés et instruments.
  2. Marchés instables: dans des conditions de marché instables, des signaux de négociation fréquents peuvent entraîner une fréquence et des coûts de négociation excessifs.
  3. Inversion de tendance: lorsqu'une tendance s'inverse, la stratégie peut connaître des retombées importantes.

Directions d'optimisation de la stratégie

  1. Optimisation des paramètres: optimiser les paramètres des bandes de Bollinger et de l'ATR pour trouver la meilleure combinaison pour différents marchés et instruments.
  2. Filtres: ajouter d'autres indicateurs techniques ou des modèles de comportement des prix comme filtres pour réduire les erreurs de jugement et améliorer la qualité du signal.
  3. Gestion des positions: ajustement dynamique des positions en fonction de la volatilité du marché ou du risque de compte afin d'améliorer l'efficacité de l'utilisation du capital et les rendements ajustés au risque.

Résumé

La stratégie de suivi de tendance ATR de la bande de Bollinger capture les marchés en tendance à l'aide des bandes de Bollinger et de l'indicateur ATR. Elle présente les avantages de suivre la tendance, d'arrêter la perte en temps opportun et de la simplicité.


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

//@version=5
strategy("Bollinger Bands and ATR Strategy", overlay=true)

// Veri Çekme
symbol = "AAPL"
timeframe = "D"
src = close

// Bollinger Bantları Hesaplama
len = 20
mult = 2
sum1 = 0.0, sum2 = 0.0
for i = 0 to len - 1
    sum1 += src[i]
basis = sum1 / len
for i = 0 to len - 1
    diff = src[i] - basis
    sum2 += diff * diff
dev = math.sqrt(sum2 / len)
upper_band = basis + dev * mult
lower_band = basis - dev * mult

// ATR Hesaplama
atr_period = input(10, title="ATR Period")
atr_value = 0.0
for i = 0 to atr_period - 1
    atr_value += math.abs(src[i] - src[i + 1])
atr_value /= atr_period
loss = input(1, title="Key Value (Sensitivity)")
atr_trailing_stop = src[1]
if src > atr_trailing_stop[1]
    atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value)
else if src < atr_trailing_stop[1]
    atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value)
else
    atr_trailing_stop := src - loss * atr_value

// Sinyal Üretme
long_condition  = src < lower_band and src[1] >= lower_band[1]
short_condition = src > upper_band and src[1] <= upper_band[1]
close_long  = src > basis
close_short = src < basis
buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1]
sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1]

if (long_condition)
    strategy.entry("Long", strategy.long, comment="Long Signal")
if (short_condition)
    strategy.entry("Short", strategy.short, comment="Short Signal")
if (close_long)
    strategy.close("Long", comment="Close Long")
if (close_short)
    strategy.close("Short", comment="Close Short")
if (buy_signal)
    strategy.entry("Long", strategy.long, comment="Buy Signal")
if (sell_signal)
    strategy.entry("Short", strategy.short, comment="Sell Signal")

// Çizim
plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band")
plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band")
plot(basis, color=#808080, linewidth=2, title="SMA")
plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop")
plot(src, color=#FFA500, linewidth=2, title="Price")

// Sinyal İşaretleri
plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal")
plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")

Relationnée

Plus de