Cette stratégie génère des signaux de trading basés sur des bandes de Bollinger et des moyennes mobiles doubles, avec un filtrage de tendance visant un taux de gain élevé et un bon ratio profit-perte.
Utilisez les bandes supérieures, moyennes et inférieures de la bande de Bollinger pour la génération de signaux longs / courts. Vendez lorsque le prix touche la bande supérieure, achetez lorsqu'il touche la bande inférieure.
Utilisez des moyennes mobiles à 20 périodes à moyen terme et à 60 périodes à long terme pour déterminer la direction de la tendance.
Ajustez dynamiquement la position de stop loss en fonction de la largeur de la bande de Bollinger. Lorsque la largeur est supérieure à 0,5%, arrêtez la perte à la bande inférieure. Lorsque celle-ci est inférieure à 0,5%, réduisez la perte de stop à la moitié de la bande inférieure.
Conditions d'entrée: briser la bande inférieure comme signal d'achat pendant la tendance haussière. briser la bande supérieure comme signal de vente pendant la tendance baissière.
Conditions de sortie: Profitez lorsque vous touchez la bande supérieure ou la courte MA sur les longs. Profitez lorsque vous touchez la bande inférieure ou la courte MA sur les shorts.
Conditions de stop loss: Stop out lorsque le prix dépasse la fourchette dynamique inférieure sur les longs. Stop out lorsque le prix dépasse la fourchette dynamique supérieure sur les shorts.
L'utilisation de doubles MAs pour déterminer la tendance aide à filtrer le bruit des marchés qui ne sont pas en tendance ou qui sont liés à la fourchette.
La bande moyenne BB fournit un support/résistance, les bandes supérieures/inférieures servent de niveaux de stop loss dynamiques pour contrôler le risque.
L'ajustement de la plage d'arrêt-perte en fonction de la largeur BB réduit les chances d'être arrêté tout en maintenant un arrêt raisonnable.
Le trading dans la direction de la tendance conduit à un taux de gain plus élevé.
Les doubles MA peuvent générer de fausses ruptures fréquemment, manquant des points tournants de tendance.
Les BB peuvent être piégés dans des marchés instables et sans tendance.
Le stop loss situé à proximité des niveaux de support/résistance susceptibles d'être retirés peut permettre une plage de stop loss plus large.
Incapable de capitaliser efficacement sur les retraits à court terme.
Optimiser les périodes d'octroi d'autorisation afin de trouver la meilleure adaptation aux conditions du marché.
Optimiser le paramètre du multiplicateur BB pour équilibrer le stop loss.
Ajouter d'autres indicateurs de confirmation multifactorielle pour améliorer la qualité du signal.
Incorporer le volume/l'élan pour confirmer la tendance, éviter les divergences.
Optimisation de la gestion de l'argent, par exemple, stop loss fractionnaire fixe et fixe pour contrôler le risque de transaction unique.
Gestion des chocs de prix, par exemple des écarts importants au cours d'une nuit.
Il s'agit d'une stratégie globale robuste utilisant des double MA pour la direction de la tendance et des BB pour le support/résistance et les arrêts dynamiques. Des limitations existent comme de faux signaux de tendance et des arrêts trop proches. D'autres optimisations peuvent être effectuées sur le système MA, la stratégie de stop loss, la gestion de l'argent, etc. pour augmenter la robustesse dans diverses conditions de marché.
/*backtest start: 2022-10-18 00:00:00 end: 2023-10-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true) len = input(20, minval=1, title="Length") multiplier = input(4, minval=1, title="multiplier") trendTimeFrame = input(60, minval=1, title="Trend Time Frame") useTrendFilter = input(true, type=bool, title = "Use Trend Filter") src = input(close, title="Source") out = sma(src, len) //plot(out, title="SMA", color=blue) stdOut = stdev(close, len) bbUpper = out + stdOut * multiplier bbLower = out - stdOut * multiplier bbUpper2 = out + stdOut * (multiplier / 2) bbLower2 = out - stdOut * (multiplier / 2) bbUpperX2 = out + stdOut * multiplier * 2 bbLowerX2 = out - stdOut * multiplier * 2 bbWidth = (bbUpper - bbLower) / out closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close) smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20)) //plot(smaLongTerm, color=red) trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp) cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown) if (bullish) strategy.entry("Buy", strategy.long, comment="Buy") if (bearish) strategy.entry("Sell", strategy.short, comment="Sell") strategy.close("Buy", closeBuy or cutLossBuy) strategy.close("Sell", closeSell or cutLossSell)