La stratégie de trading de rupture des courbes de Bollinger est une stratégie de trading utilisée lorsque le marché est en état de choc. Elle utilise les indicateurs de la courbe de Bollinger pour juger de l’état de choc du marché et envoie un signal de trading lorsque le prix touche la courbe de Bollinger et descend. Contrairement à la stratégie traditionnelle de suivi de la tendance, la stratégie est plus adaptée à un environnement de marché de couverture horizontale.
La stratégie est basée sur l’indicateur de la ceinture de Brin. La ceinture de Brin se compose de la voie moyenne, de la voie supérieure et de la voie inférieure. Lorsque le prix est proche de la voie supérieure ou de la voie inférieure, ce qui représente une hausse ou une baisse excessive du marché, il y a une plus grande probabilité de reprise.
Plus précisément, la stratégie utilise d’abord l’indicateur DMI pour déterminer si le marché est en état de choc. Lorsque la différence entre + DMI et -DMI est inférieure à 20, le marché est considéré comme en état de choc horizontal. Dans ces conditions, lorsque le prix est en hausse, le cours est en hausse et lorsque le prix est en baisse, il est en baisse.
Par rapport à la stratégie de suivi de la tendance, cette stratégie est mieux adaptée aux conditions de marché où les fluctuations horizontales sont plus fréquentes et ne perd pas d’intérêt en poursuivant la tendance. Par rapport à la stratégie de négociation de choc traditionnelle, cette stratégie utilise l’indicateur de la bande de Brin pour déterminer avec plus de précision les surachats et les surventes du marché, ce qui augmente la probabilité d’entrée.
La stratégie repose principalement sur la courbe de Brin pour évaluer les fluctuations du marché et les sur-achats et les sur-vente. La diffusion ou la contraction anormale de la courbe de Brin peut entraîner des signaux erronés. De plus, le point d’arrêt est proche et la perte d’un seul arrêt peut être plus importante.
On peut envisager de filtrer les signaux d’entrée en combinant d’autres indicateurs, tels que les indicateurs de choc tels que le RSI, pour améliorer l’exactitude de l’entrée. De plus, il est important d’optimiser la stratégie de stop-loss pour éviter de faire de gros stops. Il est également possible de choisir des variétés de transactions plus adaptées à cette stratégie, telles que les pièces de faible valeur marchande.
Cette stratégie est globalement adaptée aux marchés instables et peut être utilisée lorsque la stratégie de tendance échoue. Cependant, il reste de la place pour l’optimisation de l’efficacité de sa dépendance aux indicateurs pour juger de l’état du marché. Nous pouvons améliorer encore cette stratégie en utilisant des méthodes telles que la combinaison de plusieurs indicateurs et la gestion des fonds, afin de rendre ses effets plus stables et plus efficaces.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
// Works on ETHUSD 3h, 1h, 2h, 4h
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2022, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true
[pos_dm, neg_dm, adx] = dmi(14, 14)
lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
sideways = (abs(pos_dm - neg_dm) < 20)
//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)
//longStopPrice = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI
//Entry
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())
//Exit
strategy.close("long", when = (crossunder(close, upper)))