Stratégie de négociation d'oscillation de l'élan

Auteur:ChaoZhang est là., Date: 2023-11-21 16h57 et 07 min
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Les avantages

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.

Les risques

  • Retardant dans les bandes de Bollinger ajustement des prix, peut manquer certains mouvements
  • Le paramètre de stop loss trop large peut accroître les risques de perte
  • Les signaux à court terme sur le marché haussier peuvent ne pas être bons.

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é.

Amélioration

  • Ajouter le volume de négociation ou la volatilité pour éviter les fausses ruptures de faible volume
  • Recherche de grille de param pour optimiser les périodes, le coefficient de largeur et le pourcentage de perte de stop
  • Passer uniquement à long ou à court en fonction du régime du marché
  • Ajouter le modèle d'apprentissage automatique pour déterminer la direction de la tendance

Conclusion

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")

Plus de