Les ressources ont été chargées... Je charge...

Stratégie de rupture de tendance basée sur des bandes de Bollinger

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

img

Résumé

Il s'agit d'une stratégie de suivi de tendance basée sur les bandes de Bollinger. Il utilise les bandes de Bollinger pour calculer les canaux de prix et combine les modèles de bougies pour déterminer la direction de la tendance. Les positions longues / courtes seront ouvertes lorsque le prix échappe aux bandes de Bollinger. Cette stratégie fonctionne bien pour les actions avec des tendances évidentes et vise à capturer les profits de tendance à moyen terme.

La logique de la stratégie

Cette stratégie utilise la bande supérieure, la bande moyenne et la bande inférieure des bandes de Bollinger pour déterminer les fourchettes de prix. Les bandes supérieure et inférieure enveloppent les mouvements de prix tandis que la bande moyenne est la moyenne mobile. La largeur de la bande change en fonction de la volatilité des prix. Lorsque le prix dépasse la bande supérieure, cela indique une rupture ascendante et une entrée longue. Lorsque le prix dépasse la bande inférieure, cela indique une rupture descendante et une entrée courte.

Après avoir déterminé la direction de la tendance avec la rupture des bandes de Bollinger, la stratégie la confirme également avec des modèles de bougies. Si le corps de la bougie s'aligne sur la tendance, comme la bougie haussière dans une tendance haussière, une position sera ouverte. Si le corps de la bougie montre un motif inverse, comme la bougie baissière dans une tendance haussière, le signal sera ignoré. Cette conception vise à éviter les faux risques de rupture.

Les règles détaillées relatives aux signaux de négociation sont les suivantes:

  1. Calculer les bandes supérieures, moyennes et inférieures des bandes de Bollinger pour déterminer la fourchette de prix

  2. Lorsque le prix dépasse la marge supérieure, il indique une tendance à la hausse/longue

  3. Si le chandelier est haussier, confirmer la tendance et aller long

  4. Lorsque le prix dépasse la fourchette inférieure, il indique une tendance à la baisse/courte

  5. Si le chandelier est baissier, confirmer la tendance et aller court

  6. Définir le stop loss et le profit selon le pourcentage

En entrant sur les ruptures de Bollinger Bands et en confirmant avec des chandeliers, cette stratégie peut identifier efficacement la direction de la tendance et obtenir de bonnes entrées au cours des premières étapes de la tendance.

Analyse des avantages

Il s'agit d'une tendance typique qui suit une stratégie qui présente les points forts suivants:

  1. Les bandes de Bollinger sont adaptatives et peuvent ajuster les fourchettes pour les stocks à volatilité différente

  2. La confirmation du chandelier filtre les fausses fuites

  3. La détention à moyen terme réduit la fréquence des transactions et réduit les coûts/dérapage

  4. La capture des tendances à moyen terme évite le bruit à court terme et offre un bon rapport risque/rendement

  5. Les résultats des tests antérieurs sont solides et les transactions réelles sont stables en raison de la systématisation

  6. La logique stratégique est claire et facile à comprendre, avec des possibilités d'amélioration

En déterminant la tendance avec les bandes de Bollinger et en entrant sur la confirmation du chandelier, cette stratégie capte efficacement l'élan à moyen terme tiré par le volume.

Analyse des risques

Il y a aussi quelques risques à prendre en compte pour cette stratégie:

  1. Le risque d'échec de la rupture.

  2. Risque d'inversion: les tendances à moyen terme peuvent également s'inverser, des arrêts raisonnables doivent être fixés

  3. Les paramètres et les arrêts des bandes de Bollinger doivent être ajustés pour différents stocks

  4. Risque de surajustement: l'optimisation excessive des paramètres provoque un ajustement de la courbe

  5. Risque d'exécution: il existe une divergence entre le backtest et le trading réel

Pour faire face à ces risques, les améliorations suivantes peuvent être apportées:

  1. Optimiser les paramètres et la largeur des bandes de Bollinger pour un meilleur ajustement

  2. Ajouter plus de facteurs comme le volume pour confirmer la tendance

  3. Utilisez des arrêts dynamiques pour éviter des pertes énormes sur les retours

  4. Appliquer l'analyse de marche vers l'avant pour éviter le surajustement

  5. Améliorer l'exécution des ordres afin d'améliorer l'efficacité réelle des opérations

Directions d'optimisation

Cette stratégie peut être renforcée dans les domaines suivants:

  1. Ajouter plus d'indicateurs comme KDJ, MACD pour confirmer les signaux et améliorer la précision

  2. Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres plutôt que les valeurs fixes

  3. Définir des zones de prix autour des points de rupture pour générer des signaux plus précis

  4. Optimiser les sorties avec des arrêts de retard ou une prise partielle de profit

  5. Mettre en place une dimensionnement des positions pour une meilleure gestion des risques

  6. Utiliser des types d'ordres avancés pour améliorer les résultats d'exécution

  7. Ajouter des filtres de régime de marché pour désactiver la stratégie dans certains environnements

En introduisant plus de techniques et d'optimisations, la stabilité et la rentabilité de cette stratégie peuvent être encore améliorées pour de meilleurs résultats de backtest et de trading réels.

Conclusion

Il s'agit d'une stratégie de suivi de tendance typique qui utilise les bandes de Bollinger comme plages dynamiques pour déterminer la direction de la tendance.

Les avantages de cette stratégie incluent l'utilisation de bandes de Bollinger pour la tendance, de chandeliers pour la confirmation d'entrée, une faible fréquence de négociation et une systématisation facile.

Dans l'ensemble, en tant que tendance typique suivant la stratégie, il a une logique claire et est facile à mettre en œuvre avec une forte viabilité.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.2", shorttitle = "Scalper str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = sma(body, 100)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Plus de