Stratégie d'inversion de tendance basée sur les bandes de Bollinger


Date de création: 2023-11-01 11:29:34 Dernière modification: 2023-11-01 11:29:34
Copier: 0 Nombre de clics: 702
1
Suivre
1617
Abonnés

Stratégie d’inversion de tendance basée sur les bandes de Bollinger

Aperçu

Cette stratégie est basée sur l’indicateur de la ceinture de Bollinger et la moyenne mobile, elle permet de déterminer si le prix est proche de la ceinture de Bollinger et de faire des positions longues ou courtes, ce qui permet de profiter de la situation. Lorsque le prix dépasse la ceinture de Bollinger, il est en hausse.

Le principe

La stratégie est principalement basée sur deux signaux d’entrée:

  1. Signaux à plusieurs têtes: lorsque le prix de clôture touche le bas et que le prix de clôture est supérieur à la moyenne de l’EMA, l’entité de la ligne K précédente est négative et l’entité de la ligne K actuelle est positive.

  2. Signal de tête vide: lorsque le prix de clôture touche la voie supérieure et que le prix de clôture est inférieur à la moyenne de l’EMA, la ligne K précédente est la ligne du soleil et la ligne K actuelle est la ligne du soleil.

Mode de stop loss: Stop loss fixe. Le point de stop loss est le coefficient de risque-rendement multiplié par le prix d’entrée à la distance de la voie de l’adversaire.

Mode d’arrêt: le but est de gagner sur la voie de l’adversaire. C’est-à-dire faire plus d’arrêt sur la voie inférieure, faire un arrêt vide sur la voie supérieure.

Les avantages

  1. Les avantages de la combinaison de la tendance et de la stratégie d’inversion sont mieux connus dans les situations de choc de tendance.

  2. L’indicateur de la ceinture de Brin est utilisé pour déterminer les zones de survente et de survente, et pour déterminer avec précision les opportunités de reprise.

  3. Les points d’arrêt fixes sont raisonnablement définis et contribuent à la maîtrise des risques.

  4. La méthode mobile d’arrêt de l’argent permet de maximiser les bénéfices.

Les risques

  1. Les stratégies de rupture sont sujettes à l’arbitrage et il faut être prudent avec les fausses ruptures.

  2. Si la situation est trop agitée, le stop loss peut être déclenché fréquemment.

  3. Les stop-loss fixes ne peuvent pas être ajustés en fonction des fluctuations du marché et peuvent être trop laxistes ou trop radicaux.

  4. Les paramètres de la bande de Bryn ne sont pas réglés à ce moment-là, et l’effet peut être négatif.

Optimiser les idées

  1. On peut envisager de combiner les indicateurs RSI pour filtrer les signaux d’entrée, par exemple RSI supérieur à 50 pour faire plus, RSI inférieur à 50 pour faire moins, afin d’éviter les signaux erronés.

  2. Ajout d’une fonction d’ajustement automatique de la distance d’arrêt fixe pour rendre l’arrêt plus flexible. Par exemple, régler la distance d’arrêt dynamiquement en fonction des indicateurs ATR.

  3. Optimiser les paramètres de la bande de Bryn pour trouver la meilleure combinaison de paramètres.

  4. Il est possible de tester différents paramètres de la moyenne EMA pour optimiser l’effet de rempart de la moyenne.

Résumer

Cette stratégie prend en compte les tendances et les inversions, utilise les bandes de Brent pour déterminer les points d’entrée sur les points de vente et de vente, et maximise les bénéfices en déplaçant les arrêts. Elle est plus efficace en cas de choc de tendance.

Code source de la stratégie
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)

// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length              = input(20, minval=1)
src                 = input(close, title="Source")
mult                = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput            = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward          = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset              = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis               = sma(src, length)
dev                 = mult * stdev(src, length)
upper               = basis + dev
lower               = basis - dev
ema                 = ema(close, emaInput)

// These are our conditions as explained above
entryLong           = low[1] <= lower[1] and low <= lower and low > ema
entryShort          = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong   = close > open and close[1] < open[1]
reversecandleShort  = close < open and close[1] > open[1]
var stopLong        = 0.0
var stopShort       = 0.0

// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
    stopLong := (((close / upper - 1) * riskreward + 1) * close)
    strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
    
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")

if reversecandleShort and entryShort and strategy.position_size == 0
    stopShort := (((close / lower - 1) / riskreward + 1) * close)
    strategy.entry("Short Entry", strategy.short, comment = "Short Entry")

strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")


// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)

// These plots are to check the stoplosses, they can  make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)