Bitcoin Momentum Trailing Stop Strategie


Erstellungsdatum: 2024-03-08 16:20:16 zuletzt geändert: 2024-03-08 16:20:16
Kopie: 0 Klicks: 747
1
konzentrieren Sie sich auf
1617
Anhänger

Bitcoin Momentum Trailing Stop Strategie

Strategieübersicht

Die Bitcoin-Dynamik-Stop-Loss-Strategie ist eine dynamisch-basierte Long-Position-Strategie, die darauf abzielt, die steigenden Trends von Bitcoin zu erfassen und das Abwärtsrisiko durch dynamische Anpassung des Stop-Losses zu umgehen. Die Strategie verwendet eine einfache und geschickte Dynamik-Stop-Technologie, um die Stop-Loss-Strecke in Zeiten hoher Bewegungsschwankungen zu schließen, um die Gewinnmarge zu schützen, während die Stop-Loss-Strecke während der anhaltenden Beweglichkeit von Bedenken gelockert wird.

Strategieprinzip

  1. Der aktuelle Bitcoin-Preis muss höher sein als der EMA auf dem High-Level-Zeitrahmen ((20-Wochen-EMA))
  2. Bitcoin kann nicht in einem “Alarm”-Zustand sein, d.h. der jüngste Peak von Bitcoin minus der aktuellen K-Linie mit einem Minimum von mehr als 1,5-fachen ATR, oder der Schlusskurs am Tag unter der aktuellen 20 EMA
  3. Die Stop-Loss-Einstellung ist 1 ATR abzüglich des jüngsten Wellenpegels und 20% abzüglich des ATR (d. h. 0,2 ATR), wenn Sie in Alarmbereitschaft sind.
  4. Wenn der Preis unter dem Stop-Loss-Preis schließt, wird eine Off-Position auf der nächsten K-Linie eröffnet

Die Strategie nutzt die Periodenzyklen und die 20-Wochen-EMA als Trendfilter und greift nur ein, wenn der Preis über der 20-Wochen-EMA liegt. Die 5-Zyklus-ATR wird verwendet, um die Distanz zwischen den Stopps dynamisch zu korrigieren. Der Stopp wird auf der Hut gehalten. Die Warnlage wird durch zwei Bedingungen definiert: die Distanz zwischen dem jüngsten Hoch und dem aktuellen Tief ist mehr als 1,5 mal so groß wie die ATR, oder der Schlusskurs des Tages liegt unter der 20EMA des Tages.

Strategische Vorteile

  1. Einfach und effektiv: Die Logik der Strategie ist einfach und klar, leicht zu verstehen und umzusetzen, während sie die wichtigsten Aufwärtstrends von Bitcoin effektiv erfasst.

  2. Dynamische Stop-Loss-Methode: Die Stop-Loss-Methode ist eine ausgeglichene und robuste Methode, die die Stop-Loss-Position dynamisch an die Marktschwankungen anpasst, um den Rückzug zu kontrollieren und die Gewinne zu strecken.

  3. Trendfilter: Durch die Filterung der hochrangigen Mittellinie ((20-Wochen-EMA) wird nur bei klaren Aufwärtstrends eingesetzt, was die Strategie-Gewinn- und Verlustquote erheblich verbessert.

  4. Positionsmanagement: Standard-Vollpositionshandel, um die Kapitalverwertung zu maximieren und die Kapitalverwertung zu verbessern. Die Positionsgröße kann auch flexibel angepasst werden.

  5. Breite Anwendbarkeit: Die Strategie ist leicht auf andere Märkte übertragbar und hat eine gute Allgemeingültigkeit.

Strategisches Risiko

  1. Anwendbarkeit der Parameter: Die Parameter der Strategie basieren auf den Merkmalen des Bitcoin-Marktes. Die Anwendbarkeit in anderen Märkten muss noch überprüft werden. Möglicherweise müssen die Parameter für verschiedene Benchmarks optimiert werden.

  2. Trenderkennung: Die Strategie beruht hauptsächlich auf technischen Indikatoren wie EMA und ATR, um Trends zu beurteilen. Die Kenntnis der Marktentwicklung ist nicht so umfassend wie die grundlegende Analyse.

  3. Stopp-Risiko: Während dynamische Stopps das Risiko bis zu einem gewissen Grad kontrollieren können, kann es unter extremen Umständen (wie einem Sturz oder einer schnellen, tiefen Erschütterung) immer noch zu einem starken Rückzug kommen. Und die Stop-Loss-Punkte sind näher und können bei Erschütterungen häufig gestoppt werden.

  4. Gewinnspielraum: Die Strategie ist in einem einseitigen Aufwärtstrend gut, kann aber in einem schwankenden Markt eher in eine häufige Verlustsituation geraten, wobei der Gesamtgewinnspielraum begrenzt sein kann.

  5. Die Strategie hat sich in der Rückprüfung gut entwickelt, jedoch sind Faktoren wie Gleitpunkte, Gebühren und andere Faktoren, die von den theoretischen Ergebnissen abweichen können, von der Strategie beeinflusst.

Optimierungsrichtung

  1. Trends zu erkennen: Versuchen Sie, mehr High-Level-Mittelwerte, Volatilitätsindikatoren und sogar grundlegende Daten einzuführen, um die Genauigkeit und Zuverlässigkeit der Trenderkennung zu verbessern.

  2. Dynamische Parameter: Die Stop-Loss- und ATR-Parameter können weiter optimiert werden, indem dynamische Anpassungsmechanismen im Zusammenhang mit dem Preis oder der Volatilität eingeführt werden, um sich an unterschiedliche Marktbedingungen anzupassen.

  3. Positionsmanagement: Die Positionsgröße kann dynamisch angepasst werden, je nach Trendstärke, Volatilität und anderen Indikatoren. Die Positionsgröße kann erhöht werden, wenn die Tendenz stark ist, die Positionen werden reduziert, wenn die Volatilität hoch ist, und die Ertrag-Risiko-Relation erhöht.

  4. Mehrere Leerlaufmechanismen: Die Einführung von Leerlaufmechanismen in den Bärenmärkten erweitert den Anwendungsbereich der Strategie und den potenziellen Gewinnraum. Es müssen jedoch die Regeln für den Einstieg und den Verlust neu gestaltet werden.

  5. Kombinationsstrategie: Kombination mit anderen Strategien (z. B. Umkehrung, Durchschnittsrückgang usw.), die sich ergänzen und die Stabilität und Profitabilität der Strategie verbessern.

Zusammenfassung der Strategie

Die Bitcoin-Dynamik-Tracking-Stopp-Strategie ist eine einfache und effektive Dynamik-Strategie, die einen starken Aufwärtstrend von Bitcoin mit Hilfe von High-Level-Grenzen und ATR-Indikatoren erfasst und das Abwärtstrendrisiko durch dynamische Anpassung des Stopps kontrolliert. Die Strategie ist klar in der Logik, einfach zu implementieren und zu optimieren und eignet sich für mittel- und langfristige Investoren, die nach stabilen Erträgen suchen. Die Strategie kann als Basis-Vorlage verwendet werden, die der Anleger nach seinen Bedürfnissen und Erfahrungen weiter verfeinern kann, um Trends zu beurteilen, Parameter zu optimieren, Positionsmanagement, Freihandelsmechanismen usw., oder mit anderen Strategien kombiniert werden, um ein höheres Risiko-Ertrags-Verhältnis zu erzielen. Es ist jedoch zu beachten, dass die Strategie in der Praxis möglicherweise von den Rückmessungen abweicht und das Risiko sorgfältig bewertet und kontrolliert werden muss.

Strategiequellcode
/*backtest
start: 2023-03-08 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading
// ------------------------------------------------------------------------------------------------------
// System Concept: Capture as much Bitcoin upside volatility as possible while side-stepping downside volatility.
//  Entry Rule #1: Bitcoin must be trading above higher-timeframe EMA (Weekly 20 EMA)
//  Entry Rule #2: Bitcoin must not be in 'caution' condition
//      -> Caution: True if BTC's recent swing high minus its current low is > 1.5x ATR OR close < Daily EMA
//  Trailing Stop: Stop is trailed 1 ATR from recent swing high, OR 20% of ATR if in caution condition
// ------------------------------------------------------------------------------------------------------
// @version=5
strategy("Bitcoin Momentum Strategy", 
     overlay=true)

// Get user input
var const string    G_STRATEGY  = "Strategy Entry Settings"
var const string    G_EXIT      = "Strategy Exit Settings"
var const string    G_FILTER    = "Strategy Filters"
i_HigherTimeframe   = input.timeframe("W", "Higher Timeframe", group=G_STRATEGY, tooltip="Higher timeframe MA reference")
i_EmaLength         = input.int(20, "EMA Length", group=G_STRATEGY, tooltip="Moving average period length")
i_AtrLength         = input.int(5, "ATR Length", group=G_STRATEGY, tooltip="ATR period length")
i_TrailStopSource   = input.source(low, "Trail Stop Source", group=G_EXIT, tooltip="Lowest price source for trailing stop")
i_TrailStopLookback = input.int(7, "Trail Stop Lookback", group=G_EXIT, tooltip="How many bars to look back for trailing price source")
i_TrailStopMulti    = input.float(0.2, "Trailing Stop Ratchet Multiplier", group=G_EXIT, tooltip="When momentum is yellow (caution), shrink ATR distance for TS by this much")
i_StartTime         = input(timestamp("01 Jan 2000 13:30 +0000"), "Start Filter", group=G_FILTER, tooltip="Start date & time to begin searching for setups")
i_EndTime           = input(timestamp("1 Jan 2099 19:30 +0000"), "End Filter", group=G_FILTER, tooltip="End date & time to stop searching for setups")

// Define custom security function which does not repaint
RequestSecurity_NonRP(_market, _res, _exp) => request.security(_market, _res, _exp[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1]

// Define date filter check
DateFilter(int start, int end) => time >= start and time <= end

// Get indicator values
float   atrValue    = ta.atr(i_AtrLength)
float   emaValue    = ta.ema(close, i_EmaLength)
float   htfEmaValue = RequestSecurity_NonRP(syminfo.tickerid, i_HigherTimeframe, emaValue)
float   marketPrice = close

// Check for bullishness / bearish volatility caution
bool    isBullish   = marketPrice > htfEmaValue
bool    isCaution   = isBullish and (ta.highest(high, 7) - low > (atrValue * 1.5) or marketPrice < emaValue) 

// Set momentum color
color bgCol = color.red
if isBullish[1]
    bgCol := color.green
if isCaution[1]
    bgCol := color.orange

// Handle strategy entry, and reset trailing stop
var float trailStop = na
if isBullish and strategy.position_size == 0 and not isCaution
    strategy.entry(id="Buy", direction=strategy.long)
    trailStop := na

// Update trailing stop
float temp_trailStop = ta.highest(i_TrailStopSource, i_TrailStopLookback) - (isCaution[1] ? atrValue * i_TrailStopMulti : atrValue)
if strategy.position_size > 0
    if temp_trailStop > trailStop or na(trailStop)
        trailStop := temp_trailStop

// Handle strategy exit
if (close < trailStop or close < htfEmaValue) and barstate.isconfirmed
    strategy.close("Buy", comment="Sell")

// Draw trailing stop, HTF EMA and color-coded momentum indicator
plotshape(true, color=bgCol, style=shape.square, location=location.bottom, size=size.auto, title="Momentum Strength")
plot(htfEmaValue, color=close > htfEmaValue ? color.green : color.red, linewidth=2, title="HTF EMA")
plot(emaValue, color=close > emaValue ? color.green : color.red, linewidth=1, title="CTF EMA")
plot(strategy.position_size[1] > 0 ? trailStop : na, style=plot.style_linebr, color=color.red, title="Stop Loss")