Bitcoin-Volatilitätsband-Umkehrstrategie


Erstellungsdatum: 2023-10-12 17:38:39 zuletzt geändert: 2023-10-12 17:38:39
Kopie: 0 Klicks: 738
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie ist ein Rückzugssystem, das für hochvolatile Wertpapiere entwickelt wurde, so dass Bitcoin eine sehr ideale Handelsvariante ist. Die Strategie kann auf Tageszeitkarten oder niedrigeren Zeitrahmen verwendet werden (ich habe gute Ergebnisse in 3-Stunden-Zeitrahmen gefunden, aber nicht unter 1 Stunde getestet).

Strategieprinzip

Die Strategie berechnet die Volatilität, indem sie die Änderung des Schlusskurses der beiden vorherigen K-Linien vergleicht und mit dieser Preisänderung einen Moving Average erzeugt. Auf dem Moving Average wird ein Standarddifferenzband mit 1 Standarddifferenz im Inneren und 2 Standarddifferenz im Äußeren eingewickelt. Wenn der Preis höher ist als der vorgegebene Moving Average-Filter, wird festgestellt, dass wir in einem Aufwärtstrend sind, so dass bei einem Aufwärtstrend ein Kaufsignal ausgegeben wird, wenn ein Rückzug dazu führt, dass der interne Standarddifferenzband durchbrochen wird.

Benutzer können den Datumsumfang ändern, den sie testen möchten, den Moving Average Cycle und die Standarddifferenz der Innen- und Außenbandbreite der Volatilität berechnen. Für Bitcoin behielt ich die internen und externen Standarddifferenzbänder bei den Standard-Einstellungen, aber fand heraus, dass ein 3-Zyklus-Volatilitäts-Tracking für 1-Tages-Charts gut ist und ein 5-Zyklus-Volatilitäts-Tracking für 3-Stunden-Charts gut ist. Da dies keine Buy-and-Hold-Strategie ist, möchten Sie beim Handel möglicherweise an den am meisten flüssigen Währungen festhalten, um schnell an jeder Börse ein- und auszugehen.

Strategische Vorteile

  • Der Markt kann sich mit Volatilität handeln, um Wendepunkte zu erfassen.
  • Zwei-Wege-Handel, profitieren Sie von steigenden und fallenden Märkten
  • Standard-Parameter-Einstellungen sind einfach und benutzerfreundlich
  • Die Parameter können leicht optimiert werden, um unterschiedliche Standards anzupassen
  • Stop-Loss- und Stop-Loss-Einstellungen sind vernünftig, und es ist vorteilhaft, Gewinne zu sperren.

Strategisches Risiko

  • Das Risiko einer Ausweitung von Verlusten bei hoher Volatilität
  • Häufige Multi-Switching und hohe Transaktionskosten
  • Kurzfristige Operationen, bei denen die Marktentwicklung im Auge behalten wird
  • Die Banken sind in der Lage, ihre Liquidität zu verbessern, wenn sie nicht ausreichend sind.
  • Fehlende Parameter können zu übermäßigen Transaktionen führen

Risikomanagement:

  1. Wählen Sie die richtige Volatilitätsmarke und kontrollieren Sie die Einzelleistung.

  2. Optimierung der Parameter und Verringerung der ungültigen Transaktionen.

  3. Das Unternehmen hat sich für die Entwicklung der neuen Technologie entschieden.

  4. Die Banken, die die Effizienz der Transaktionsdurchführung berücksichtigen, wählen die Anleihen, die eine gute Liquidität haben.

  5. Anpassung der Parameter an die Eigenschaften der verschiedenen Standards.

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Optimierung der Moving Average-Perioden, um die Schwankungen verschiedener Indizes besser zu verfolgen.

  2. Anpassung der Parameter des Schwankungsbandes an den Schwankungsbereich eines bestimmten Standards.

  3. Zusätzliche Filterbedingungen, wie z. B. die Erhöhung des Handelsvolumens, werden hinzugefügt, um das Handelssignal weiter zu verifizieren.

  4. Die dynamische Optimierung von Parametern mit Hilfe von Machine Learning-Technologien macht die Strategie anpassungsfähiger.

  5. Es wird auf eine höhere Frequenz getestet, um mehr Handelschancen zu erfassen.

  6. Die Einführung von Stop Loss Mobile Tracking ermöglicht es den Kunden, ihre Gewinne besser im Konto zu halten.

  7. In Verbindung mit anderen Indikatoren oder Modellen erstellen Sie eine quantitative Kombinationsstrategie.

Zusammenfassen

Die Strategie insgesamt ist relativ einfach und intuitiv, und die Verwendung von Volatilitätsindikatoren identifiziert die Umkehrung, um die Marktwende zu erfassen. Die Strategie Optimierung Raum ist groß, durch die Anpassung der Parameter und in Kombination mit anderen technischen Indikatoren, kann die Strategie zu verbessern, die Stabilität und die Profitabilität weiter.

Strategiequellcode
/*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)