Il s'agit d'une stratégie de suivi de l'élan basée sur les bandes de Bollinger. Il combine les bandes de Bollinger pour juger des tendances et des points d'inversion du marché, et fixe des positions longues et courtes pour suivre les fluctuations du marché.
L'indicateur principal de cette stratégie est les bandes de Bollinger, qui se composent de la bande moyenne, de la bande supérieure et de la bande inférieure. La bande moyenne est la moyenne mobile de n jours, et les bandes supérieure et inférieure sont les décalages de la bande moyenne plus/moins l'écart type. Lorsque le prix approche de la bande supérieure/inférieure, il est considéré comme un signal de surachat/survente. La stratégie intègre l'écart de tendance comme base pour les positions d'ouverture, c'est-à-dire les positions d'ouverture lorsque le prix traverse la bande moyenne dans la direction opposée. Pour éviter les pertes causées par de fausses ruptures, la stratégie exige que la largeur de la rupture soit supérieure à la moyenne.
Cette stratégie inclut également les entrées de suivi de tendance et les entrées de renversement moyen, correspondant à différentes opportunités de trading. Les entrées de suivi de tendance nécessitent que la bande moyenne soit la référence de support/résistance et forme des écarts de déviation. Les entrées de renversement moyen renverser directement près des bandes supérieures/inférieures de Bollinger. La stratégie combine ces deux types de signaux et peut prendre à la fois le suivi de tendance et les opérations de renversement.
Cette stratégie combine les caractéristiques de surachat / survente des bandes de Bollinger avec le jugement du point de renversement. Cela lui permet de s'appliquer à la fois aux marchés tendance et de gamme, capturant différents types d'opportunités de trading. Le paramètre de sortie stop loss empêche la perte de s'étendre.
En comparaison avec les stratégies Bollinger simples, la logique de tendance supplémentaire rend les entrées de cette stratégie plus stables, et elle capte également les opportunités d'inversion.
Cette stratégie repose principalement sur les caractéristiques de surachat / survente des bandes de Bollinger. Ainsi, lorsqu'il y a une fluctuation extrême des prix, la largeur des bandes de Bollinger continue de s'étendre, ce qui peut facilement conduire à plusieurs transactions perdantes. C'est un point de risque potentiel. En outre, il existe encore certaines incertitudes et erreurs dans les jugements d'inversion, provoquant des entrées et des arrêts infructueux.
En cas d'échec des bandes de Bollinger, nous pouvons raccourcir le paramètre n pour rendre les bandes plus sensibles, ou réduire la largeur de la bande pour réduire les risques de pertes.
Les principales orientations pour optimiser cette stratégie sont les suivantes:
Cette stratégie permet d'effectuer des expansions et des optimisations efficaces des stratégies standard de Bollinger. L'écart de tendance ajouté améliore la stabilité et utilise bien les opportunités d'inversion. La capacité de négocier dans les deux directions et d'arrêter les pertes rend également la stratégie plus robuste. D'autres améliorations peuvent être obtenues grâce à l'optimisation des paramètres et à l'ajout de plus de filtres.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-27 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length") mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult") source = input(ohlc4, defval = ohlc4, title = "Bollinger Source") uset = input(true, defval = true, title = "Use trend entry") usect = input(true, defval = true, title = "Use counter-trend entry") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") showbands = input(true, defval = true, title = "Show Bollinger Bands") //Bollinger Bands basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev //Lines col = showbands ? black : na plot(upper, linewidth = 1, color = col) plot(basis, linewidth = 1, color = col) plot(lower, linewidth = 1, color = col) //Body body = abs(close - open) abody = ema(body, 30) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset up2 = close <= lower and usect dn2 = close >= upper and usect exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2 //Trading if up1 or up2 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()