Cette stratégie est basée sur l'indicateur des bandes de Bollinger, combiné avec des indicateurs de dynamique pour mettre en œuvre une stratégie de trading combinée de réversion des bandes de Bollinger et de rupture de dynamique.
La stratégie utilise la ligne moyenne de Bollinger Bands SMA comme indicateur de moyenne mobile et ajuste dynamiquement la largeur de la bande via param mult * stdev. Lorsque le prix traverse la ligne moyenne depuis le bas, cela indique que la dynamique ascendante est acquise et qu'il va donc long. Lorsque le prix traverse la ligne moyenne depuis le haut, cela montre que la dynamique descendante est acquise et qu'il va donc court. Après avoir entré des positions longues / courtes, les paramètres stop loss et take profit sont définis pour suivre les profits et contrôler les risques.
Plus précisément, les bandes de Bollinger sont calculées avec deux paramètres - longueur et mult. La longueur détermine la période de la ligne du milieu et le mult décide de la largeur de la bande. enterLong et enterShort jugent du moment de la rupture. exitLong et exitShort calculent le stop loss et les prix de prise de profit en fonction du prix d'entrée et du pourcentage cible.
Cette stratégie combine la réversion à la moyenne et à l'élan, ce qui lui permet de capturer les tendances majeures dès le début. Par rapport au simple suivi des moyennes mobiles, le jugement de l'élan ajouté basé sur la largeur des bandes de Bollinger peut filtrer certaines fausses ruptures. Stop loss et take profit sont définis directement en fonction du prix d'entrée sans intervention manuelle.
Des paramètres tels que les périodes, la largeur de bande et la plage de stop loss peuvent être optimisés pour rendre la stratégie adaptable aux différentes conditions du marché.
Cette stratégie combine les forces de la réversion et de l'élan des bandes de Bollinger, ce qui lui permet de capturer certaines tendances dès le début. Grâce à l'ajustement des paramètres, il peut s'adapter à différentes étapes du marché. Le calcul direct stop loss / take profit réduit l'intervention manuelle. Il y a encore place à l'amélioration, par exemple en incorporant plus d'indicateurs auxiliaires. Ceux-ci seront progressivement améliorés dans la recherche et l'optimisation ultérieures.
/*backtest start: 2023-11-13 00:00:00 end: 2023-11-20 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BURATINO", overlay=true) // Входные параметры length = input(20, minval=1, title="Length") mult = input(2.0, minval=0.1, maxval=5, title="Multiplier") target_percent = input(0.5, minval=0.1, title="Target Percent") stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent") // Расчет полос Боллинджера basis = sma(close, length) dev = mult * stdev(close, length) upper = basis + dev lower = basis - dev // Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга enterLong = cross(close, basis) and close[1] < basis[1] // Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта enterShort = cross(basis, close) and close[1] > basis[1] // Закрытие лонга после роста цены на указанный процент или падения на указанный процент exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100)) // Закрытие шорта после падения цены на указанный процент или роста на указанный процент exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100)) // Управление позициями и ограничениями на открытие противоположных позиций strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0) strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0) strategy.close("Long", when = exitLong) strategy.close("Short", when = exitShort) // Визуализация полос Боллинджера plot(basis, color=color.blue, title="Basis") plot(upper, color=color.red, title="Upper") plot(lower, color=color.green, title="Lower")