Stratégie de croisement des bandes de Bollinger avec une moyenne mobile unique


Date de création: 2023-12-22 14:10:14 Dernière modification: 2023-12-22 14:10:14
Copier: 1 Nombre de clics: 725
1
Suivre
1621
Abonnés

Stratégie de croisement des bandes de Bollinger avec une moyenne mobile unique

Aperçu

Cette stratégie est basée sur une simple ligne moyenne et un indicateur de la bande de Brin, pour effectuer des opérations d’achat ou de vente lorsque le prix franchit la bande de Brin. En même temps, en combinant la direction de la ligne moyenne pour juger de la tendance, il n’est possible d’acheter que lorsque la ligne moyenne monte et de vendre lorsque la ligne moyenne descend.

Principe de stratégie

La stratégie est principalement évaluée en fonction des indicateurs suivants:

  1. Ligne moyenne ((SMA): calcul de la moyenne mobile simple du prix de clôture de la clôture, représentant la tendance des prix.
  2. La ligne de résistance angulaire est représentée par la ligne de résistance verticale, dont la rupture est une rupture de force.
  3. Les courbes de Brent sont en descente: elles représentent les lignes de support et leur chute indique la possibilité d’un renversement de tendance.

Les signaux de transaction sont les suivants:

  1. Signaux d’achat: acheter lorsque le cours de clôture est en hausse et que la courbe de Brent est en hausse.
  2. Signal de vente: Lorsque le cours de clôture tombe en dessous de la courbe de Brin et que la ligne moyenne est en baisse, il est nécessaire de vendre.

Ainsi, la combinaison de la tendance et de la rupture rend le signal de transaction plus fiable et évite les fausses ruptures.

Avantages stratégiques

  1. Les règles sont simples, claires et faciles à comprendre et à appliquer.
  2. Il est important d’utiliser la moyenne pour déterminer la direction des grandes tendances et d’éviter de faire un marché haussier ou baissier.
  3. Le Brin est monté sur la voie descendante pour déterminer les points de rupture locaux et capturer avec précision les signaux de rupture.
  4. Les retraits sont relativement modestes et correspondent aux préférences de risque de la plupart des gens.

Risque stratégique

  1. Un seul indicateur est susceptible d’émettre des signaux erronés, ce qui permet de réduire le taux d’erreur en optimisant les paramètres.
  2. Le point de rupture peut être ajusté en cas de choc majeur.
  3. Si vous n’arrivez pas à gagner plus avec une tendance énorme, vous pouvez envisager d’augmenter votre position.

Optimisation de la stratégie

  1. Optimisation des paramètres de cycle de la ligne moyenne pour plus de variétés.
  2. L’ajout de filtres sur d’autres indicateurs, tels que le MACD, réduit les signaux erronés.
  3. Modifier dynamiquement le point d’arrêt pour limiter le retrait maximal.
  4. La gestion de l’argent, combinée à une bonne gestion des profits et des pertes.

Résumer

La stratégie est globalement simple et pratique et convient à la plupart des gens. Avec quelques ajustements d’optimisation, il est recommandé de rendre la stratégie plus robuste et plus adaptée aux conditions du marché.

Code source de la stratégie
/*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)