Breakout Bollinger Bands Schwingungshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-21 14:39:14
Tags:

img

Übersicht

Die Breakout Bollinger Bands Oscillation Trading Strategie ist eine Handelsstrategie für den Zeitpunkt, an dem sich der Markt in einem oszillierenden Zustand befindet. Diese Strategie verwendet den Bollinger Bands Indikator, um den oszillierenden Zustand des Marktes zu beurteilen, und sendet Handelssignale aus, wenn der Preis die oberen oder unteren Schienen der Bollinger Bands berührt. Im Gegensatz zu traditionellen Trendfolgestrategien eignet sich diese Strategie besser für Bereichsgebundene seitliche Märkte.

Strategie Logik

Diese Strategie wird hauptsächlich auf der Grundlage des Indikators Bollinger Bands umgesetzt. Bollinger Bands bestehen aus einer mittleren Schiene, einer oberen Schiene und einer unteren Schiene. Wenn sich der Preis der oberen oder unteren Schiene nähert, stellt er einen übermäßigen Optimismus oder übermäßigen Pessimismus auf dem Markt dar, was eine relativ hohe Wahrscheinlichkeit einer Umkehrung bedeutet.

Diese Strategie verwendet zunächst den DMI-Indikator, um festzustellen, ob der Markt in einem oszillierenden Zustand ist. Wenn die Differenz zwischen +DMI und -DMI kleiner als 20 ist, gilt der Markt als seitlich. Unter dieser Bedingung geht man lang, wenn der Preis über die untere Schiene bricht, und kurz, wenn der Preis unter die obere Schiene bricht. Der Stop-Loss-Punkt wird in der Nähe der gegenüberliegenden Schiene gesetzt.

Vorteile

Im Vergleich zu Trend-Folge-Strategien eignet sich diese Strategie besser für Bereichsgebundene Marktumgebungen und verliert kein Geld, wenn sie Trends verfolgt. Im Vergleich zu traditionellen Schwankungshandelsstrategien kann diese Strategie die überkauften und überverkauften Situationen auf dem Markt mithilfe des Bollinger Bands-Indikators genauer beurteilen und so die Wahrscheinlichkeit des Markteintritts verbessern.

Risiken

Diese Strategie stützt sich hauptsächlich auf Bollinger Bands, um die Marktschwankungen und Überkauf/Überverkaufszustände zu bestimmen. Wenn Bollinger Bands abweichen oder sich abnormal kontrahieren, kann dies zu falschen Signalen führen. Darüber hinaus ist der Stop-Loss-Punkt nahe, so dass ein einzelner Stop-Loss relativ groß sein könnte. Es wird empfohlen, die Stop-Loss-Strategie mit Geldmanagement zu optimieren.

Optimierung

Wir können in Betracht ziehen, andere Indikatoren zu kombinieren, um Einstiegssignale wie RSI und andere Oszillatoren zu filtern, um die Einstiegsgenauigkeit zu verbessern. Darüber hinaus ist die Optimierung der Stop-Loss-Strategie auch sehr wichtig, um einen einzigen großen Stop-Loss zu vermeiden. Wir können auch Handelsvarianten wählen, die für diese Strategie geeigneter sind, wie z. B. Münzen mit niedriger Marktkapitalisierung.

Schlussfolgerung

Im Allgemeinen eignet sich diese Strategie für schwankende Märkte und kann verwendet werden, wenn Trendstrategien scheitern. Aber es gibt immer noch Raum für eine Verbesserung ihrer Wirksamkeit, indem Marktzustände mit Indikatoren beurteilt werden.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))


Mehr