Cette stratégie est basée sur l'indicateur des bandes de Bollinger. Elle va long lorsque le prix dépasse la bande inférieure et ferme la position lorsque le prix touche la bande supérieure.
Calculer la SMA de la bande moyenne comme la moyenne mobile simple des prix de clôture récents.
Calculer l'écart type StdDev afin de refléter la fourchette de fluctuation des prix.
Ajouter le décalage supérieur de l'écart type à la bande moyenne SMA pour obtenir la bande supérieure.
Soustraire le décalage inférieur de l'écart type de la bande moyenne SMA pour obtenir la bande inférieure.
Allez long lorsque le prix de clôture dépasse la bande inférieure de bas en haut.
Fermez la position lorsque le prix touche la bande supérieure, car le prix est considéré comme anormal.
Le plus grand avantage de cette stratégie est l'utilisation des propriétés statistiques des bandes de Bollinger pour suivre efficacement les fluctuations anormales du marché et capturer les tendances.
Les bandes supérieures et inférieures peuvent s'adapter automatiquement à la volatilité du marché.
Les signaux d'évasion sont plus fiables pour l'entrée.
La réversion au moyen est raisonnable pour tirer profit.
Un espace de réglage de paramètres énorme pour s'adapter à différents marchés.
Peut capturer les tendances à moyen et à long terme et peut également être utilisé à court terme.
Les risques potentiels de cette stratégie sont principalement les suivants:
Mauvaise performance des bandes de Bollinger sur les marchés à fourchette, éviter les erreurs.
Les signaux d'évasion peuvent être de fausses évasions, nécessitent des jugements prudents.
La prise de position de profit est trop idéalisée, peut être optimisée pour l'action réelle du prix.
Des paramètres mal réglés peuvent entraîner une survente ou un surconservatisme.
La période de rétro-essai doit être suffisamment longue pour éviter un ajustement de la courbe.
Mesures de gestion des risques correspondantes:
Ajouter des indicateurs de volume de négociation aux signaux filtrés.
Optimiser les paramètres et les données d'essai provenant de différents marchés.
Ajoutez les niveaux de stop-loss et de prise de profit.
Évaluez les divergences de signaux, évitez de courir après les hauts et les bas de vente.
La stratégie peut être optimisée dans les aspects suivants:
Essayez différentes combinaisons de paramètres des bandes de Bollinger pour trouver l'optimum.
Ajoutez MA, MACD, etc. pour filtrer les signaux de rupture.
Appliquer des algorithmes d'apprentissage automatique pour optimiser les paramètres de Bollinger.
Évaluez la force des éclaboussures et ajustez la taille de la position.
Test de retour sur des périodes plus longues pour tester la stabilité.
Ajouter des mécanismes de stop loss pour contrôler le risque.
En résumé, la stratégie Bollinger Bands est une stratégie globale fiable de suivi de tendance. Elle peut capturer efficacement les fluctuations anormales des prix. Mais nous devons également noter son écart par rapport au prix réel et optimiser constamment les paramètres. Si elle est utilisée pour le trading en direct, une gestion stricte du risque est indispensable pour contrôler les pertes par transaction.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="BB training No Repainting (OTS Mode)", overlay=true) // Strategy Rules: // 1. Enter trade when price crosses above the lower band // 2. Exit trade when price touches the upper band // // Chart Properties testStartYear = input(2010, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na bgcolor(testPeriodBackgroundColor, transp=97) // User provided values smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average) stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false smaValue = sma(close, smaLength) // Middle band stdDev = stdev(close, stdLength) upperBand = smaValue + stdDev * ubOffset // Top band lowerBand = smaValue - stdDev * lbOffset // Bottom band // Plot bands to chart plot(series=smaValue, title="SMA", color=color.green) plot(series=upperBand, title="UB", color=color.blue, linewidth=2) plot(series=lowerBand, title="LB", color=color.blue, linewidth=2) longCondition = (crossover(close, lowerBand)) closeLongCondition = (close >= upperBand) if (longCondition and testPeriod()) strategy.entry(id="CALL", long=true) strategy.close(id="CALL", when=closeLongCondition)