Strategie zur Umkehrung des Volatilitätsbandes von Bitcoin

Schriftsteller:ChaoZhang, Datum: 2023-10-12 17:38:39
Tags:

Übersicht

Diese Strategie ist ein Pullback-System, das für Wertpapiere mit hoher Volatilität entwickelt wurde, daher ist Bitcoin natürlich eine ausgezeichnete Wahl für den Handel.

Strategie Logik

Die Strategie berechnet die Volatilität, indem sie die Veränderung des Schlusskurses der vorherigen 2 Kerzen vergleicht und diese Preisänderung verwendet, um einen gleitenden Durchschnitt zu erzeugen. Ein Band wird um den gleitenden Durchschnitt mit einer Standardabweichung von 1 für das innere Band und 2 für das äußere Band gewickelt. Wenn der Preis über einem vorgegebenen MA-Filter liegt, wird festgestellt, dass wir uns in einem Aufwärtstrend befinden.

Der Benutzer kann den Testdatumsbereich, den gleitenden Durchschnittszeitraum für die Volatilitätsverfolgung und die Abweichungen der inneren und äußeren Bands ändern. Bei BTC habe ich die inneren Abweichungen und äußeren Abweichungsbänder auf Standard-Einstellungen gelassen, fand aber die 3-Perioden-Volatilitätsverfolgung für den Handel mit einem Tagesdiagramm und die 5-Perioden-Volatilitätsverfolgung für das 3-Stunden-Diagramm gut. Da dies keine Buy-and-Hold-Strategie ist, möchten Sie für den Handel wahrscheinlich mit den flüssigsten Münzen bleiben, damit Sie sehr schnell auf jeder Börse ein- und aussteigen können. Wenn Sie dies auf weniger volatilen Märkten ausprobieren möchten, würde die Änderung des inneren Abweichungsbandes auf ~ 0,75 auch in verschiedenen Märkten funktionieren. Die Gewinn- und Stop-Loss-Level basieren auf einer Vielzahl der Handelsspanne, die auf die letzten 7 Kerzen zurückblickt.

Vorteile der Strategie

  • Nutzt den Volatilitätshandel, um Marktturnpunkte zu erfassen
  • Handel sowohl mit Long als auch mit Short, Gewinn in Auf- und Abwärtsträgern
  • Einfache Standardparameter-Einstellungen einfach zu bedienen
  • Parameter können leicht für verschiedene Unterlagen optimiert werden
  • Ein angemessener Stop-Loss- und Take-Profit-Einstellungen hilft, Gewinne zu erzielen

Risiken der Strategie

  • Hohe Volatilität der Basiswerte
  • Häufige Umstellung von Long/Short führt zu höheren Handelskosten
  • Kurzfristige Geschäfte erfordern eine sorgfältige Marktüberwachung
  • Schwierig, Verluste zu stoppen, wenn die Liquidität auf dem Markt gering ist
  • Eine schlechte Einstellung der Parameter kann zu einem Überhandel führen

Risikominderungsmethoden:

  1. Wählen Sie geeignete flüchtige Basiswerte aus, steuern Sie die Positionsgröße.

  2. Optimieren von Parametern, um ineffektive Trades zu reduzieren.

  3. Verwenden Sie Stop-Loss und Take-Profit, strenges Geldmanagement.

  4. Konzentrieren Sie sich auf die Ausführungseffizienz, wählen Sie flüssige Basiswerte.

  5. Anpassung der Parameter an die verschiedenen zugrunde liegenden Eigenschaften.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der gleitenden Durchschnittsperiode, um die Volatilität verschiedener Basiswerte besser zu verfolgen.

  2. Anpassung der Volatilitätsbandparameter an den spezifischen Volatilitätsbereich des Basiswerts.

  3. Fügen Sie weitere Filter wie Lautstärkerhöhungen hinzu, um Signale weiter zu validieren.

  4. Verwenden Sie maschinelle Lerntechniken zur dynamischen Optimierung von Parametern für Anpassungsfähigkeit.

  5. Tests mit höheren Frequenzen, um mehr Handelschancen zu erfassen.

  6. Hinzufügen Sie bewegliche Stop-Loss / Take-Profit-Tracking, um mehr Gewinne zu erzielen.

  7. Kombination mit anderen Indikatoren oder Modellen zur Erstellung quantitativer Portfoliostrategie.

Zusammenfassung

Die Strategie insgesamt ist ziemlich einfach und intuitiv, indem Rückschläge über Volatilitätsindikator identifiziert werden, um Marktwendepunkte zu erfassen. Es gibt einen großen Optimierungsraum durch Anpassung von Parametern und Einbeziehung anderer technischer Indikatoren, um die Stabilität und Rentabilität weiter zu verbessern. Trader müssen sich jedoch der Überanpassung und Kurvenanpassung bewusst sein Probleme. Diese Strategie eignet sich eher für den kurzfristigen Handel und erfordert ein strenges Geldmanagement, um Risiken zu kontrollieren.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 4h
basePeriod: 15m
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/
// © gary_trades
//This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC).
//It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest.

//@version=4

strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100)

//VOLATILTY
CandleChange = ((close - close[1])/close)*100         //OR CandleChange = ((close[2] - close[1])/close)*100
plot(CandleChange, color=color.red, linewidth = 1)

//VOLATILITY BANDS 
MAlen = input(7, minval=3, maxval=30, title=" MA Length")
MAout = sma(CandleChange, MAlen)
plot(MAout, color=color.black, display=display.none)

InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band")
OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band")
devInner = InnerBand * stdev(CandleChange, MAlen)
devOuter = OuterBand * stdev(CandleChange, MAlen)

upper1 = MAout + devInner
lower1 = MAout - devInner
b1 = plot(upper1, "Upper Inner", color=color.gray)
b2 = plot(lower1, "Lower Inner", color=color.gray)
upper2 = MAout + devOuter
lower2 = MAout - devOuter
b3 = plot(upper2, "Upper Outer", color=color.gray)
b4 = plot(lower2, "Lower Outer", color=color.gray)
fill(b1, b3, color.rgb(250,145,175,70), title="Background")
fill(b2, b4, color.rgb(250,145,175,70), title="Background")

band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)
band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)

//LONG FILTER
VolFilterL = CandleChange <= lower1 and CandleChange > lower2
SMAFilterL = close[1] > sma(close[1], 50)
PriceFilterL = close > lowest(close,7)
LongFilter = VolFilterL and SMAFilterL and PriceFilterL
bgcolor(LongFilter ? color.new(color.green, 80) : na)

//SHORT FILTER
VolFilterS = CandleChange >= upper1 and CandleChange < upper2
SMAFilterS = close[1] < sma(close[1], 50)
PriceFilterS = close < highest(close,7)
ShortFilter = VolFilterS and SMAFilterS and PriceFilterS
bgcolor(ShortFilter ? color.new(color.red, 80) : na)

//SETTING BACK TEST INPUTS
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)

startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00)
time_condition = time >= startDate and time <= finishDate

//ORDER DETAILS
Risk = (high[7] - low[7])/ 7
Profit = Risk*1.15
Loss = Risk*0.65

AlertMSG = "New stategy position" + tostring(strategy.position_size)

if (time_condition) 
    strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG)
    if (LongFilter)
        LongStop = strategy.position_avg_price - Loss
        LongProfit = strategy.position_avg_price + Profit 
        strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit)

if (time_condition)
    strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG)
    if (ShortFilter)
        ShortStop = strategy.position_avg_price + Loss
        ShortProfit = strategy.position_avg_price - Profit 
        strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)




Mehr