Stratégie de combinaison des bandes de Bollinger et des bandes de Supertrend

Auteur:ChaoZhang est là., Date: le 29 mars 2024
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur Supertrend et l'indicateur Bollinger Bands pour capturer les opportunités de tendance sur le marché. L'indicateur Supertrend est utilisé pour déterminer la direction de la tendance actuelle du marché, tandis que l'indicateur Bollinger Bands est utilisé pour mesurer la volatilité du marché. Un signal long est généré lorsque le prix de clôture dépasse la ligne Supertrend et est en dessous de la bande inférieure de Bollinger, et un signal court est généré lorsque le prix de clôture dépasse la ligne Supertrend et est au-dessus de la bande supérieure de Bollinger.

Principes de stratégie

  1. Calculer l'indicateur Average True Range (ATR) et l'indicateur Supertrend pour déterminer la direction actuelle de la tendance du marché.
  2. Calculer les bandes de Bollinger supérieure et inférieure pour mesurer la volatilité du marché.
  3. Générer un signal long lorsque le prix de clôture dépasse la ligne de Supertrend et est en dessous de la bande de Bollinger inférieure; générer un signal court lorsque le prix de clôture dépasse la ligne de Supertrend et est en dessous de la bande de Bollinger supérieure.
  4. Lors de la détention d'une position longue, si le prix de clôture dépasse la ligne Supertrend, la position est fermée; lors de la détention d'une position courte, si le prix de clôture dépasse la ligne Supertrend, la position est fermée.

Les avantages de la stratégie

  1. La combinaison d'informations provenant à la fois des dimensions de tendance et de volatilité permet de saisir plus complètement les opportunités du marché.
  2. Capable d'entrer sur le marché en temps opportun lorsque la tendance est claire, ce qui aide à saisir les gains des marchés en tendance.
  3. Dans un marché agité, la combinaison des bandes de Bollinger et de la Supertrend peut filtrer efficacement les faux signaux de rupture et réduire le risque de pertes.
  4. La logique du code est claire, avec peu de paramètres, et est facile à comprendre et à mettre en œuvre.

Risques stratégiques

  1. Dans un marché à tendance unilatérale, en raison des fréquents signaux de rupture, cela peut entraîner une fréquence de négociation excessive et augmenter les coûts de transaction.
  2. La capture des points de rupture repose sur l'indicateur Supertrend, qui est sensible aux paramètres, et les tendances de l'indicateur varient considérablement selon les différents paramètres, ce qui peut affecter l'efficacité de la stratégie.
  3. La largeur des bandes de Bollinger changera en fonction des changements de volatilité du marché et peut augmenter les stop-loss dans des environnements à forte volatilité.

Directions d'optimisation de la stratégie

  1. Il convient d'envisager d'introduire des conditions de filtrage plus efficaces, telles que le volume des transactions, le sentiment du marché, etc., afin d'améliorer encore la fiabilité des signaux.
  2. Pour les paramètres de l'indicateur Supertrend, des tests d'optimisation peuvent être effectués afin de sélectionner les paramètres optimaux pour améliorer la stabilité de la stratégie.
  3. En ce qui concerne l'exécution des transactions, des mesures plus détaillées de gestion des positions et de contrôle des risques peuvent être introduites, telles que la fixation de trailing stops, l'ajustement dynamique des positions, etc., afin de réduire l'exposition au risque d'une seule transaction.

Résumé

La stratégie de combinaison Supertrend Bollinger Band est une stratégie de suivi de tendance qui peut capturer efficacement les opportunités de tendance en combinant deux facteurs de marché: la tendance et la volatilité. Cependant, cette stratégie présente également certaines limitations, telles que la sensibilité aux paramètres et l'augmentation du risque dans des environnements à forte volatilité. Par conséquent, dans l'application réelle, il est nécessaire d'optimiser et d'améliorer la stratégie en fonction des caractéristiques du marché et des préférences de risque de chacun.


/*backtest
start: 2024-03-21 00:00:00
end: 2024-03-28 00:00:00
period: 5m
basePeriod: 1m
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/
// © sabhiv27

//@version=4
strategy("Supertrend & Bollinger Bands Strategy", shorttitle="ST_BB_Strategy", overlay=true)

// Input options
factor = input(3, title="Supertrend Factor")
length = input(10, title="ATR Length")
bollinger_length = input(20, title="Bollinger Bands Length")
bollinger_deviation = input(2, title="Bollinger Bands Deviation")

// Calculate True Range for Supertrend
truerange = rma(tr, length)

// Calculate Supertrend
var float up_trend = na
var float dn_trend = na
var float trend = na
up_signal = hl2 - (factor * truerange)
dn_signal = hl2 + (factor * truerange)
up_trend := close[1] > up_trend[1] ? max(up_signal, up_trend[1]) : up_signal
dn_trend := close[1] < dn_trend[1] ? min(dn_signal, dn_trend[1]) : dn_signal
trend := close > dn_trend ? 1 : close < up_trend ? -1 : nz(trend[1], 1)

// Calculate Bollinger Bands
basis = sma(close, bollinger_length)
dev = stdev(close, bollinger_length)
upper_band = basis + bollinger_deviation * dev
lower_band = basis - bollinger_deviation * dev

// Entry conditions
long_condition = crossover(close, up_trend) and close < lower_band
short_condition = crossunder(close, dn_trend) and close > upper_band

// Exit conditions
exit_long_condition = crossover(close, dn_trend)
exit_short_condition = crossunder(close, up_trend)

// Plot Supertrend
plot(trend == 1 ? up_trend : dn_trend, color=trend == 1 ? color.green : color.red, linewidth=2)

// Plot Bollinger Bands
plot(upper_band, color=color.blue)
plot(lower_band, color=color.blue)

// Generate buy and sell signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.entry("Short", strategy.short, when=short_condition)
strategy.close("Long", when=exit_long_condition)
strategy.close("Short", when=exit_short_condition)

Plus de