Bollinger Band Moving Average Crossover-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-30 16:37:47
Tags:

img

Übersicht

Dies ist eine Handelsstrategie, die auf dem Crossover von Bollinger Bands und gleitenden Durchschnitten basiert, um Kauf- und Verkaufsentscheidungen zu treffen. Sie verwendet hauptsächlich den Bollinger Bands-Indikator auf dem 5-minütigen Zeitrahmen, um den Kursschwankungsbereich zu bestimmen, kombiniert mit gleitenden Durchschnitten, um die Trendrichtung zu bestimmen, und bildet eine Handelsstrategie nach den Crossover-Situationen des oberen Bands, des unteren Bands und des mittleren Bands von Bollinger Bands. Diese Strategie eignet sich für das AUD/NZD-Währungspaar.

Strategieprinzip

  1. Verwenden Sie den Bollinger Bands Indikator, um die oberen und unteren Grenzen der Preise zu bestimmen. Das mittlere Band der Bollinger Bands ist ein einfacher gleitender Durchschnitt für 20 Perioden, das obere Band ist das mittlere Band plus zwei Standardabweichungen und das untere Band ist das mittlere Band minus zwei Standardabweichungen.

  2. Wenn der Schlusskurs durch das untere Band nach oben bricht, zeigt dies an, dass der Preis steigen beginnt, also machen wir hier einen langen Einstieg.

  3. Wenn der Schlusskurs das mittlere Band der Bollinger Bands überschreitet, bedeutet das, dass der Preis über das mittlere Band gestiegen ist, also verlassen wir die Position hier, um diese Runde des Handels zu beenden.

  4. Wenn der Schlusskurs durch das obere Band nach unten bricht, bedeutet das, dass der Preis zu sinken beginnt, also machen wir hier einen kurzen Einstieg.

  5. Wenn der Schlusskurs das mittlere Band der Bollinger Bands durchbricht, bedeutet das, dass der Preis unter das mittlere Band gefallen ist, also verlassen wir die Position hier, um diese Runde des Handels zu beenden.

Analyse der Vorteile

  1. Vermeiden Sie fehlende Umkehrsignale. Diese Strategie nutzt die Eigenschaften der Bollinger-Bänder voll aus, um Preisschwankungen aus dem unteren Band und Rückgänge aus dem oberen Band rechtzeitig zu erfassen und Verluste durch verpasste Umkehrmöglichkeiten zu vermeiden.

  2. Durch Kauf- und Verkaufseinträge an wichtigen Punkten und eine angemessene Stop-Loss-Einstellung kann es während der Transformation zwischen Bullen- und Bärenmarkt schnell die Richtung wechseln, um bessere Renditen zu erzielen.

  3. Entsprechende Handelsfrequenz. Formieren Sie Handelssignale auf Basis von 5-minütigen Zeitrahmen, die kurzfristige Trends erfassen können, ohne zu häufig zu handeln, um die Transaktionskosten zu erhöhen.

Risikoanalyse

  1. Risiko einer zu schnellen Konvergenz von Bollinger Bands. Wenn die Marktpreise heftig schwanken, konvergieren die oberen und unteren Banden der Bollinger Bands zu schnell, was leicht falsche Breaks bilden und falsche Signale geben kann. Wir müssen die Parameter anpassen oder den Handel an dieser Stelle aussetzen.

  2. Ein zu kleiner Stop-Loss kann leicht durchbrochen werden, während ein zu großer Stop-Loss zu riesigen Verlusten führen kann.

  3. Hohe Transaktionskostenrisiko. Wenn die Handelsfrequenz zu hoch ist, werden auch die Transaktionskosten erheblich steigen. Wir müssen die Parameter richtig anpassen, um die Handelsfrequenz zu reduzieren.

Optimierung

  1. Wir können verschiedene Kombinationen von Zyklusparametern und Standardabweichungsparametern testen, um den Satz von Parametern zu finden, der am besten dem Volatilitätsbereich dieses bestimmten Produkts entspricht.

  2. Hinzufügen anderer Indikatoren, um falsche Signale zu filtern. Indikatoren wie KDJ und MACD können eingeführt werden, um Probleme zu vermeiden, die durch die ausschließliche Abhängigkeit von Bollinger Bands verursacht werden.

  3. Optimieren Sie die Stop-Loss-Strategie. Wir können einen genaueren Stop-Loss festlegen, indem wir die Preisänderungen in Echtzeit verfolgen.

Schlussfolgerung

Diese Strategie ist insgesamt relativ stabil mit einer gewissen Rentabilität. Durch die Optimierung von Parametern und Stop-Loss-Strategien können die Handelsrisiken weiter reduziert werden, um in volatilen Marktbedingungen gute Renditen zu erzielen. Diese Strategie lohnt sich weiter zu testen und zu optimieren und hat sehr gute praktische Anwendungsperspektiven.


/*backtest
start: 2023-12-30 00:00:00
end: 2024-01-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © theTradeAI

strategy('TradeAI - 5min AUDNZD Strategy', overlay=true)

//////////////////////////////
//////// STOP ORDERS DETECTING
//////////////////////////////

length = input(1)

h = ta.highest(high, length)
l = ta.lowest(low, length)

//////////////////////////////
//////// EMAS
//////////////////////////////

emaLenght = input.int(200)

ema200 = ta.ema(close,emaLenght)

//////////////////////////////
//////// BOLLINGER BANDS
//////////////////////////////

length1 = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")

ma(source, length1, _type) => 
    switch _type
        "SMA" => ta.sma(source, length1)
        "EMA" => ta.ema(source, length1)
        "SMMA (RMA)" => ta.rma(source, length1)
        "WMA" => ta.wma(source, length1)
        "VWMA" => ta.vwma(source, length1)

basis = ma(src, length1, maType)
dev = mult * ta.stdev(src, length1)
upperr = basis + dev
lowerr = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)


//////////////////////////////
//////// ENTRY & EXIT
//////////////////////////////

// Buy entry
if ta.crossover(lowerr, close)
    strategy.entry('long', strategy.long, stop=h)

// Buy entry CANCEL
if close > lowerr
    strategy.cancel('long')

// Buy exit
if close > basis
    strategy.close('long')

// Sell entry
if ta.crossunder(upperr, close)
    strategy.entry('short', strategy.short, stop=l)

// Sell entry CANCEL
if close < upperr
    strategy.cancel('short')

// Sell exit
if close < basis
    strategy.close('short')



Mehr