Stratégie des bandes de Bollinger croisées de moyenne mobile unique

Auteur:ChaoZhang est là., Date: 2023-12-22 à 14h10 et 14h14
Les étiquettes:

img

Résumé

Cette stratégie est basée sur une moyenne mobile unique et l'indicateur Bollinger Bands. Elle génère des signaux d'achat et de vente lorsque le prix franchit la bande supérieure ou inférieure des bandes de Bollinger. Elle intègre également la direction de la moyenne mobile pour déterminer la tendance, ne prenant que longtemps lorsque MA est en hausse et court lorsque MA est en baisse.

La logique de la stratégie

La stratégie utilise principalement les indicateurs suivants pour le jugement:

  1. Moyenne mobile (SMA): Moyenne mobile simple du prix CLOSE, représentant l'évolution des prix.
  2. Bande de Bollinger supérieure: représente le niveau de résistance, la rupture indique une forte dynamique.
  3. Bollinger Band inférieur: représente le niveau de soutien, la ventilation indique un éventuel renversement de tendance.

Les signaux de trading spécifiques sont les suivants:

  1. Signal d'achat: Lorsque le prix de clôture franchit la bande supérieure et que le MA est en hausse.
  2. Signal de vente: lorsque le prix de clôture franchit la bande inférieure et que le MA chute.

En combinant la tendance et la rupture, le signal de trading devient plus fiable et évite une fausse rupture.

Les avantages

  1. Des règles simples et claires, faciles à comprendre et à mettre en œuvre.
  2. MA estime que la tendance générale est d'éviter les marchés haussier et baissier longs.
  3. Les bandes supérieures et inférieures de Bollinger localisent avec précision les points de rupture locaux.
  4. Des prélèvements relativement faibles, correspondant aux préférences de risque de la plupart des gens.

Les risques

  1. L'indicateur unique a tendance à générer de faux signaux, peut être amélioré par réglage de paramètres.
  2. Ne peut pas faire face à de grandes fluctuations du marché, peut ajuster le stop loss en conséquence.
  3. Ne pouvant plus tirer profit des méga tendances, peut envisager une position plus grande.

Améliorations

  1. Optimiser les périodes d'AEM afin d'adapter plus de produits.
  2. Ajouter d'autres filtres comme MACD pour réduire les faux signaux.
  3. Ajustez dynamiquement le stop loss pour limiter le maximum de tirage.
  4. Mettre en place une gestion de l'argent pour stabiliser les performances du PNL.

Conclusion

En général, c'est une stratégie simple mais pratique adaptée à la plupart des gens. Avec quelques ajustements et optimisations, elle peut être plus robuste et adaptable à plus de situations de marché.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

Plus de