La stratégie de suivi de Bollinger de Noro

Auteur:ChaoZhang est là., Date: 2023-11-28 16h57 et 28h
Les étiquettes:

img

Résumé

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é.

Principaux

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.

Analyse des avantages

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.

Analyse des risques

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.

Directions d'optimisation

Les principales orientations pour optimiser cette stratégie sont les suivantes:

  1. Les paramètres des bandes de Bollinger peuvent être ajustés en fonction des différents marchés pour trouver la combinaison optimale.
  2. L'ampleur de l'écart et le calcul des valeurs moyennes peuvent être testés avec d'autres options.
  3. Ajoutez plus de filtres pour juger des signaux d'entrée et réduire les faux positifs.
  4. Testez d'autres méthodes d'arrêt de perte comme la perte d'arrêt de piste.
  5. Les paramètres peuvent être optimisés en fonction de produits et de délais spécifiques.

Conclusion

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()

Plus de