Cette stratégie utilise des bandes de Bollinger pour mesurer la tendance du marché et combine des signaux de bande passante pour identifier les opportunités de trading, visant une croissance régulière du portefeuille de placements.
N'hésitez pas à modifier les paramètres et à tester cette stratégie.
Si vous êtes satisfait des résultats existants et que vous souhaitez automatiser cette stratégie, qui peut être effectuée via des alertes, vous devez la convertir en une étude et ajouter des alertes dans le code.
Cette stratégie utilise les bandes de Bollinger et la bande passante pour déterminer les entrées et les sorties.
Les bandes de Bollinger comprennent la bande supérieure, la bande moyenne et la bande inférieure. La bande du milieu est une moyenne mobile simple de n périodes, par défaut n = 16. La bande supérieure est la bande du milieu + k * écart type, la bande inférieure est la bande du milieu - k * écart type, par défaut k = 3.
L'indicateur de bande passante montre la volatilité du prix par rapport à la bande moyenne. Il est calculé par (bande supérieure - bande inférieure) / bande moyenne * 1000. Lorsque la bande passante est inférieure à 20, cela indique une faible volatilité ou une consolidation. Lorsque la bande passante dépasse 50, cela représente une volatilité accrue.
Cette stratégie recherche des opportunités longues lorsque la bande passante est comprise entre 20-50 et que le prix se déplace en dessous de la bande inférieure.
Les avantages de cette stratégie sont les suivants:
Les bandes de Bollinger mesurent la direction de la tendance, réduisant les risques de fausses ruptures
Le signal de bande passante localise avec précision l'action dans la plage, évitant ainsi de grandes pertes dues à de grandes oscillations
Le backtest montre une rentabilité de près de 80% sur un an, un ratio risque-rendement extrêmement élevé
Tirage maximal inférieur à 5%, contrôle efficacement le risque et maintient une croissance régulière du portefeuille
Logique simple et claire, facile à comprendre et à mettre en œuvre, largement applicable à divers actifs
Les risques de cette stratégie comprennent:
Des paramètres de Bollinger défectueux peuvent vous faire rater de bonnes opportunités de trading.
Faible fréquence de négociation lors de marchés haussiers ou baissiers persistants, rentabilité limitée
Données insuffisantes de backtest, les performances réelles peuvent différer des backtest
Le stop loss peut être retiré lors de mouvements extrêmes, ce qui entraîne des pertes importantes.
Les coûts de transaction élevés réduisent également les bénéfices réels
Les solutions:
Optimiser les paramètres et ajuster la période de Bollinger en fonction du marché
Introduction d'indicateurs supplémentaires pour faire face aux conditions anormales du marché
Rassembler suffisamment de données et effectuer des tests antérieurs sur différents marchés pour vérifier la stabilité
Ajustez le stop loss de manière appropriée pour éviter les pertes importantes dues à des mouvements extrêmes
Sélectionner des plateformes de négociation à faible commission pour réduire les coûts de transaction
Cette stratégie peut être améliorée dans les domaines suivants:
Ajouter une confirmation de volume pour éviter les fausses ruptures
Combiner avec les indicateurs de tendance pour identifier la direction de la tendance
Utiliser l'apprentissage automatique pour ajuster automatiquement les paramètres et s'adapter au marché
Ajouter un filtre de corrélation pour éviter de négocier des actifs non corrélés
Optimiser le profit/arrêt des pertes pour plus de gains pendant les tendances haussières
Introduire plus de filtres de condition pour augmenter le taux de victoire
Testez des combinaisons de plusieurs délais pour tirer profit de cycles multiples
Construire un portefeuille indexé pour élargir l'exposition
Utilisez l'apprentissage automatique pour générer et valider automatiquement de nouvelles stratégies
Dans l'ensemble, cette stratégie de rupture de la bande de Bollinger a été bien testée et peut produire des rendements stables sur les marchés à plage. La logique de base est simple et claire, facile à saisir et à appliquer. Mais d'autres améliorations dans l'optimisation des paramètres, le contrôle des risques et la gestion du portefeuille sont nécessaires pour des profits stables sur les marchés complexes. Il s'agit d'une stratégie de base de suivi des tendances, et peut être améliorée en introduisant plus d'indicateurs techniques et de mécanismes de gestion des risques, ou combinée à l'apprentissage automatique. En résumé, cette stratégie ouvre la porte au trading algorithmique pour les débutants, et offre également des possibilités aux traders expérimentés d'optimiser les stratégies.
/*backtest start: 2023-10-30 00:00:00 end: 2023-11-06 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Bollinger Bands BAT/USDT 30min", overlay=true ) /// Indicators ///Bollinger Bands source = close length = input(16, minval=1) mult = input(3, step=0.1, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev plot(basis, color=color.red) p1 = plot(upper, color=color.blue) p2 = plot(lower, color=color.blue) fill(p1, p2) //Bollinger bands width bbw = (upper-lower)/basis*1000 //plot(bbw, color=color.blue) upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50) lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20) // Backtesting Period testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true // Take Profit tp_inp = input(8, title='Take Profit %', step=0.1)/100 take_level = strategy.position_avg_price * (1 + tp_inp) //Entry Strategy entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input) exit_long = cross(high,upper) or close < lower if testPeriod() strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long) strategy.exit("Take Profit Long","LongBB",limit=take_level) strategy.close(id="LongBB", when=exit_long )