Mehrzeitrahmen Bollinger Bands Krypto-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-27 14:13:39
Tags:

img

Übersicht

Diese Strategie wendet den Bollinger Bands-Indikator über 1 Minute, 3 Minuten, 5 Minuten und 15 Minuten hinweg an, um die Preisbewegungen von Kryptowährungen zu analysieren, um Kauf- und Verkaufsmöglichkeiten zu identifizieren. Sie verwendet die 5-minütigen Preise von Bitcoin als Maßstab für die allgemeine Stimmung des Kryptowährungsmarktes. Wenn der Bitcoin-Preis über das obere Band bricht, wird der Markt als bullisch angesehen. Wenn der Preis unter das untere Band bricht, wird der Markt als bärisch angesehen. Die Strategie sucht nach oberen oder unteren Bandbrechungen in verschiedenen Kryptowährungen und Zeitrahmen.

Strategie Logik

Die Strategie berechnet Bollinger Bands gleichzeitig auf den 1-Minuten-, 3-Minuten-, 5-Minuten- und 15-Minuten-Zeitrahmen. Die Bollinger Bands bestehen aus einem n-tägigen (Standard 20-Tage) gleitenden Durchschnitt und einer Reihe von Standardabweichungen (Standard 1.5x) darüber und darunter. Der gleitende Durchschnitt repräsentiert den durchschnittlichen Preis der Krypto über einen bestimmten Zeitraum und die Standardabweichung misst die Volatilität. Wenn die Preise sich dem oberen Band nähern oder überbrechen, zeigt dies an, dass der Markt überdeckt ist und die Volatilität wächst, was eine mögliche Umkehr nach unten signalisiert. Wenn die Preise sich dem unteren Band nähern oder unterbrechen, signalisiert es, dass der Markt mit wachsender Volatilität und einer möglichen Aufwärtsumkehr überverkauft wird.

Die Strategie richtet sich nach den aktuellen Marktentwicklungen in verschiedenen Zeithorizonten - 1 Minute, 3 Minuten, 5 Minuten und 15 Minuten. Wenn es einen oberen oder unteren Bandbruch in den 3-minütigen oder 5-minütigen Zeitrahmen gibt, sowie bestätigende Signale in den 1-minütigen und 15-minütigen Zeitrahmen, bestimmt die Strategie, ob ein neues Kauf- oder Verkaufssignal ausgelöst wird. Darüber hinaus bezieht sich die Strategie auch auf die 5-minütigen Preise von Bitcoin, um den allgemeinen Markttrend und die Stimmung (bullish/bearish bias) auf dem gesamten Krypto-Markt zu messen. Basierend auf diesen Faktoren entscheidet die Strategie, ob man lang oder kurz geht.

Nach dem Eintritt in den Handel setzt die Strategie auch die Gewinnnahme- und Stop-Loss-Bedingungen fest. Wenn der Einstiegspreis um 25% steigt oder fällt, wird der Take-Profit ausgelöst. Bewegt sich der Preis mehr als 25% gegen die Einstiegsrichtung, wird der Stop-Loss ausgelöst.

Vorteile

  1. Die Strategie umfasst sowohl kurzfristige als auch mittelfristige Marktansichten - 1 Minute und 5 Minuten für die neuesten Updates, 15 Minuten für den mittelfristigen Trend, um vorübergehende Marktschwankungen zu vermeiden.

  2. Die Strategie überwacht Ausbrüche der mittleren, oberen und unteren Bands und minimiert verpasste Chancen.

  3. Bitcoin dient als Maßstab und Barometer für die allgemeinen Marktbedingungen und Stimmungen und verbessert die Entscheidungsgenauigkeit.

  4. Profit-taking- und Stop-Loss-Mechanismen kontrollieren Risiken wirksam.

Risiken

  1. Bollinger-Band-Breakouts weisen einige Verzögerungsmerkmale auf und können den besten Einstiegszeitpunkt verpassen.

  2. Die Strategie ist anfällig für marktweite systemische Risiken wie Passwörter Black Swan Events.

  3. Trotz der Gewinnspanne und des Stop-Loss-Systems können Verluste bei extremen Ereignissen die Stop-Loss-Marge übersteigen.

  4. Unpassende Parameter-Einstellungen wie Zeitrahmen, Standard-Abweichungs-Multiplikator können zu schlechter Signalqualität führen.

Entsprechende Lösungen

  1. Um den optimalen Zeitpunkt des Einstiegs zu bestimmen, sollten mehr Indikatoren eingeschlossen werden.

  2. Verbesserung der Bewertung von Systemrisiken auf Marktebene.

  3. Reduzieren Sie die Positionsgröße und die Stop-Loss-Marge für jeden Trade.

  4. Optimieren Sie die Parameter-Einstellungen durch Backtesting.

Möglichkeiten zur Verbesserung

  1. Fügen Sie mehr Zeitrahmen wie 30-minütige oder 60-minütige Bollinger Bands hinzu.

  2. Auswählen von Bollinger Bands-Parametern, die besser zu den Eigenschaften der einzelnen Kryptowährungen passen.

  3. Das Handelsvolumen für die Verifizierung der Ergebnisse berücksichtigen, da das Handelsvolumen die Zuverlässigkeit der Preisbewegung bestätigt.

  4. Diese Indikatoren können die Beurteilung der tatsächlichen Marktbewegungen erheblich verbessern.

  5. Vergleichen Sie Preisbewegungen und Korrelationen zwischen Kryptowährungen und wählen Sie diejenigen aus, die den größten Spielraum haben.

  6. Optimierung der Profit- und Stop-Loss-Mechanismen durch statistische Analyse der historischen Performance zur Bestimmung der optimalen Einstellungen.

Schlussfolgerung

Dies ist eine Multi-Timeframe Bollinger Bands Kryptowährungshandelsstrategie. Sie konzentriert sich auf die Preisentwicklung über kurz- und mittelfristige Zeithorizonte hinweg und nutzt Bollinger Bands, um den MULTI-Bullish/Bearish-Status des Marktes zu messen. In der Zwischenzeit verwendet sie Bitcoins Preisniveaus als Benchmarks und Referenzen, um den Gesamttrend im breiteren Kryptowährungsmarkt zu bestimmen.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="Crypto BB", title="Multi-Interval Bollinger Band Crypto Strategy", overlay=true)
length = 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(1.5, minval=0.001, maxval=50, title="StdDev")

interval1m = request.security(syminfo.tickerid, '1', src)
interval3m = request.security(syminfo.tickerid, '3', src)
interval5m = request.security(syminfo.tickerid, '5', src)
interval15m = request.security(syminfo.tickerid, '5', src)
btcinterval5m = request.security("BTC_USDT:swap", "5", src)
bitcoinSignal = 'flat'

var entryPrice = 0.000

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

bitcoinBasis = ma(btcinterval5m, length, maType)
bitcoinDev = ta.stdev(btcinterval5m, length)
bitcoinUpper = bitcoinBasis + bitcoinDev
bitcoinLower = bitcoinBasis - bitcoinDev

basis1m = ma(interval1m, length, maType)
basis3m = ma(interval3m, length, maType)
basis5m = ma(interval5m, length, maType)
basis15m = ma(interval5m, length, maType)
dev1m = mult * ta.stdev(interval1m, length)
dev3m = mult * ta.stdev(interval3m, length)
dev5m = mult * ta.stdev(interval5m, length)
upper1m = basis1m + dev1m
lower1m = basis1m - dev1m
upper3m = basis3m + dev3m
lower3m = basis3m - dev3m
upper5m = basis5m + dev5m
lower5m = basis5m - dev5m
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis3m, "Basis 3 minute", color=#2962FF, offset = offset)
p3upper = plot(upper3m, "Upper", color=#2962FF, offset = offset)
p3lower = plot(lower3m, "Lower", color=#2962FF, offset = offset)

//Exit protocols
if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Buy'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((interval1m - entryPrice)/entryPrice) * 30 > .25
        strategy.close('Buy', comment='Take Profit on Buy')
    if ((interval1m - entryPrice)/entryPrice) * 30 < -.25
        strategy.close('Buy', comment='Stop Loss on Buy')

if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Sell'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((entryPrice - interval1m)/entryPrice) * 30 > .25
        strategy.close('Sell', comment='Take Profit on Sell')
    if ((entryPrice - interval1m)/entryPrice) * 30 < -.25
        strategy.close('Sell', comment='Stop Loss on Sell')

//Bitcoin Analysis
if (btcinterval5m < bitcoinUpper and btcinterval5m[1] > bitcoinUpper[1] and btcinterval5m[2] < bitcoinUpper[2] and btcinterval5m[3] < bitcoinUpper[3])
    bitcoinSignal := 'Bear'
if (btcinterval5m > bitcoinUpper and btcinterval5m[1] < bitcoinUpper[1] and btcinterval5m[2] > bitcoinUpper[2] and btcinterval5m[3] > bitcoinUpper[3])
    bitcoinSignal := 'Bull'

//Short protocols
if (interval3m < basis3m and interval3m[1] > basis3m[1] and interval3m[2] < basis3m[2] and interval3m[3] < basis3m[3]) or 
 (interval5m < basis5m and interval5m[1] > basis5m[1] and interval5m[2] < basis5m[2] and interval5m[3] < basis5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell'
   and src < basis1m and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Basis Band Bearish Reversal')
    //strategy.order('Sell', strategy.short, comment = 'Basis band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m < upper3m and interval3m[1] > upper3m[1] and interval3m[2] < upper3m[2] and interval3m[3] < upper3m[3]) or 
 (interval5m < upper5m and interval5m[1] > upper5m[1] and interval5m[2] < upper5m[2] and interval5m[3] < upper5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell' and bitcoinSignal == 'Bear' and src < upper1m  and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Bearish Trend Reversal')
    strategy.order('Sell', strategy.short, comment = 'Upper band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m > basis3m and interval3m[1] < basis3m[1] and interval3m[2] > basis3m[2] and interval3m[3] > basis3m[3]) or 
 (interval5m > basis5m and interval5m[1] < basis5m[1] and interval5m[2] > basis5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > basis1m  and src > basis15m
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Basis Band Bullish Reversal')
    //strategy.order('Buy', strategy.long, comment = 'Basis band fractal rejection', stop = (lower1m + basis1m)/2)

if (interval3m > lower3m and interval3m[1] < lower3m[1] and interval3m[2] > lower3m[2] and interval3m[3] > lower3m[3]) or 
 (interval5m > lower5m and interval5m[1] < lower5m[1] and interval5m[2] > lower5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > lower1m  and src > basis15m and bitcoinSignal == 'Bull' 
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Bullish Trend Reversal')
    strategy.order('Buy', strategy.long, comment = 'Lower band fractal rejection', stop = (lower1m + basis1m)/2)

Mehr