Handelsstrategie für Dynamik-Oszillationsgeschäfte

Schriftsteller:ChaoZhang, Datum: 2023-11-21 16:57:07
Tags:

img

Übersicht

Diese Strategie basiert auf dem Bollinger Bands Indikator, kombiniert mit Momentum Indikatoren, um eine Kombination von Bollinger Bands Reversion und Momentum Breakout zu implementieren. Es geht lang, wenn der Preis durch die mittlere Linie der Bollinger Bands von unten bricht und geht kurz, wenn der Preis durch die mittlere Linie von oben bricht. Es verfolgt auch Stop-Loss und Take-Profit basierend auf dem Einstiegspreis, um Positionen zu schließen, wenn das Zielrisiko-Rendite-Verhältnis erreicht wird.

Strategie Logik

Die Strategie verwendet Bollinger Bands mittlere Linie SMA als gleitenden Durchschnittsindikator und passt die Bandbreite dynamisch durch param mult * stdev an. Wenn der Preis von unten durch die mittlere Linie bricht, zeigt dies, dass eine Aufwärtsdynamik gewonnen wird und somit lang geht. Wenn der Preis von oben durch die mittlere Linie bricht, zeigt dies, dass eine Abwärtsdynamik gewonnen wird und somit kurz geht. Nach dem Eintritt in Long/Short-Positionen werden Stop-Loss- und Take-Profit-Parameter eingestellt, um Gewinne und Risiken zu verfolgen.

Insbesondere werden Bollinger-Bänder mit zwei Parametern berechnet - Länge und Mult. Länge bestimmt die Periode der mittleren Linie und Mult entscheidet über die Bandbreite. enterLong und enterShort beurteilen den Ausbruchstermin. exitLong und exitShort berechnen Stop-Loss und Take-Profit-Preise basierend auf dem Einstiegspreis und dem Zielprozentsatz.

Vorteile

Diese Strategie kombiniert die Rückkehr zum Durchschnitt und zur Dynamik, wodurch es möglich ist, große Trends frühzeitig zu erfassen. Im Vergleich zur einfachen Verfolgung gleitender Durchschnitte kann das zusätzliche Momentum-Urteil auf der Grundlage der Breite der Bollinger Bands einige falsche Ausbrüche herausfiltern. Stop-Loss und Take-Profit werden direkt auf Basis des Einstiegspreises ohne manuelle Intervention festgelegt.

Risiken

  • Hinterbleiben in Bollinger Bands passenden Preisen, kann einige Bewegungen verpassen
  • Zu breite Stop-Loss-Einstellungen können das Verlustrisiko erhöhen
  • Kurze Signale im Bullenmarkt können nicht gut ausfallen

Parameter wie Perioden, Bandbreite und Stop-Loss-Bereich können optimiert werden, um die Strategie an unterschiedliche Marktbedingungen anzupassen.

Erweiterung

  • Zusätzliches Handelsvolumen oder Volatilität, um falsche Ausbrüche mit geringem Volumen zu vermeiden
  • Param-Gittersuche zur Optimierung von Perioden, Breitenkoeffizienten und Stop-Loss-Prozentsatz
  • Nur lang oder kurz gehen, basierend auf dem Marktsystem
  • Hinzufügen von Machine Learning-Modell, um die Trendrichtung zu bestimmen

Schlussfolgerung

Diese Strategie kombiniert die Stärken von Bollinger Bands Reversion und Momentum, was es ermöglicht, einige Trends frühzeitig zu erfassen. Durch Parameter-Tuning kann sie sich an verschiedene Marktstadien anpassen. Die direkte Stop-Loss/Take-Profit-Berechnung reduziert manuelle Intervention. Es gibt noch Raum für Verbesserungen, z. B. durch die Einbeziehung mehrerer Hilfsindikatoren. Diese werden in weiterer Forschung und Optimierung schrittweise verbessert.


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

Mehr