Stratégie de rupture des bandes de Bollinger et de filtrage de la volatilité


Date de création: 2024-03-08 15:28:05 Dernière modification: 2024-03-08 15:28:05
Copier: 0 Nombre de clics: 692
1
Suivre
1617
Abonnés

Stratégie de rupture des bandes de Bollinger et de filtrage de la volatilité

Aperçu de la stratégie

La Bollinger Bands Breakdown and Volatility Filtering est une stratégie de négociation basée sur les indicateurs de la Bollinger Bands. Elle utilise la Bollinger Bands pour juger de la position et de la volatilité des prix par rapport aux moyennes mobiles, afin de décider d’ouvrir et de fermer une position.

Principe de stratégie

Le cœur de la stratégie est de calculer l’indicateur de la bande de Bollinger. La bande de Bollinger se compose de trois lignes: la moyenne moyenne est une moyenne mobile simple, la moyenne supérieure et la moyenne inférieure sont respectivement majorées et diminuées d’un certain écart-type sur la base de la moyenne. La taille de l’écart-type est contrôlée par le paramètre mult.

Les conditions d’ouverture de la stratégie sont basées sur la position du prix de clôture par rapport à la bande de Polling. Si la direction de la transaction est définie comme étant en hausse (tradeDirection> = 0) et que le prix de clôture est en baisse (lower_breakout_pct), une position supplémentaire est ouverte. Si la direction de la transaction est définie comme étant en baisse (tradeDirection< = 0) et que le prix de clôture est en hausse (upper_breakout_pct), une position vide est ouverte.

D’autre part, si les baisses et les baisses de deux lignes K consécutives dépassent le seuil de volatilité prévu (Volatility), il est jugé que la volatilité du marché actuel est importante et que la stratégie n’ouvrira pas de nouvelle position. Ce filtre de volatilité peut éviter dans une certaine mesure un environnement de marché très volatil.

En ce qui concerne les positions plates, si le prix de clôture des positions multiples touche la zone supérieure*long_win_pct), ou le prix de clôture d’une position vide touche la zone inférieure*En effet, si une position est détenue à un taux plus élevé que le pourcentage de retrait maximal prévu (max_drawdown_percent), la stratégie peut la liquider.

Avantages stratégiques

  1. Les bandes de Bollinger sont un indicateur technique bien établi et largement utilisé, qui combine des informations sur les moyennes mobiles et la volatilité des prix. Les bandes de Bollinger peuvent être utilisées pour élaborer des stratégies de négociation et capturer les changements de tendance et de volatilité.

  2. La stratégie contient à la fois la logique de l’ouverture et de l’ouverture, permettant de saisir les opportunités de manière flexible dans un marché bidirectionnel à plusieurs volets. La configuration des points de rupture de la ceinture de Bollinger rend les points d’entrée de la stratégie plus confirmatifs.

  3. Les filtres de volatilité permettent d’éviter de prendre des positions dans des marchés très volatils, réduisant dans une certaine mesure les risques liés aux transactions fréquentes et à l’effet de levier.

  4. La stratégie utilise des mécanismes de stop-loss et de stop-loss, permettant de contrôler activement la position et de la liquider lorsque le prix revient à la position critique. Cela est bénéfique pour protéger les bénéfices et contrôler les retraits.

Risque stratégique

  1. Les bandes de Bollinger sont essentiellement un indicateur de retard, avec une certaine retardation de la réaction du marché. Au moment crucial du renversement de tendance ou du changement de tendance, la stratégie peut manquer le meilleur moment d’entrée.

  2. Les paramètres d’une stratégie ne sont pas toujours adaptés aux différentes conditions du marché. Par exemple, la définition des seuils d’un filtre de volatilité peut nécessiter une distinction entre les tendances et les chocs. Les paramètres fixes peuvent empêcher la stratégie d’ouvrir des positions ou les ouvrir trop fréquemment dans certaines situations.

  3. Bien qu’il y ait des mesures de stop loss, la stratégie peut ne pas fonctionner au prix de départ, entraînant des pertes plus importantes, lorsque le marché se creuse.

  4. La stratégie ne met pas en place de stop-loss mobiles ou de stop-loss de suivi après l’ouverture de la position, ce qui peut entraîner un retournement partiel des bénéfices.

Direction d’optimisation

  1. L’introduction de plus d’indicateurs techniques ou d’indicateurs de l’état du marché, tels que l’ATR, l’indicateur de tendance, l’indicateur de volatilité, etc., peut être envisagée comme condition filtrante de la stratégie, pour améliorer la qualité et le timing de l’ouverture des positions.

  2. Pour les filtres à taux d’oscillation, on peut essayer d’utiliser des valeurs de seuil dynamiques, qui s’adaptent à différentes variétés ou à différentes périodes de temps, pour améliorer l’efficacité du filtrage.

  3. En ce qui concerne le stop loss, il est possible d’introduire un mécanisme de stop loss mobile ou de suivi des stops, permettant à la stratégie de maintenir la position pendant la poursuite de la tendance, plutôt que de la liquider prématurément. Il est également possible d’envisager de définir un ratio de stop loss différent pour optimiser le rapport risque/bénéfice.

  4. Il est possible d’optimiser davantage la gestion des positions, d’ajuster le taux d’ouverture des positions en fonction de la dynamique des indicateurs tels que la force de la tendance, la volatilité et le degré de risque, de contrôler le retrait. En outre, il est également possible de mieux utiliser les fonds en augmentant ou en diminuant les positions.

Résumer

La stratégie de filtrage de rupture et de volatilité de la bande de Bollinger utilise la représentation de la position et de la volatilité des prix de la bande de Bollinger pour construire une stratégie de négociation bidirectionnelle. La particularité de cette stratégie réside dans le fait que le filtre de volatilité évite les transactions sur des marchés très volatils et met en place des conditions de stop-loss plus simples.

Code source de la stratégie
/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")