Zweiseitige Volatilitäts-Verschleierung-Strategie


Erstellungsdatum: 2023-11-21 12:04:19 zuletzt geändert: 2023-11-21 12:04:19
Kopie: 0 Klicks: 605
1
konzentrieren Sie sich auf
1617
Anhänger

Zweiseitige Volatilitäts-Verschleierung-Strategie

Überblick

Die Strategie ist eine zweiseitige Handelsstrategie, die die Volatilität verfolgt. Sie verwendet den Indikator ATR für die durchschnittliche reale Volatilität, um einen Stop-Loss zu setzen und die Richtung des Trends zu bestimmen, je nachdem, in welcher Richtung der Preis die Stop-Loss-Marke überschritten hat.

Strategieprinzip

Die Strategie verwendet die 3-Tage-ATR-Belastungsrate. Der ATR-Wert wird mit einem Faktor als Stop-Loss multipliziert. Wenn der Preis über dem Stop-Loss liegt, wird er als Aufwärtstrend beurteilt und bei einem Absturz der Stop-Loss-Position platziert. Wenn der Preis unter dem Stop-Loss liegt, wird er als Off-Trend beurteilt und bei einem Anstieg der Stop-Loss-Position platziert.

Analyse der Stärken

  • Mit ATR kann die Marktvolatilität dynamisch verfolgt werden, wodurch die Wahrscheinlichkeit, dass ein Stop-Loss durchbrochen wird, verringert wird.
  • Zwei-Wege-Trading, bei dem Sie in zwei-Wege-Schwankungen profitieren können
  • Umgekehrte Positionen, die zu Beginn einer Trendwende ausgewählt werden, um die Gewinnwahrscheinlichkeit zu erhöhen

Risikoanalyse

  • Der Markt kann stark schwanken, die ATR kann die tatsächlichen Schwankungen nicht vollständig widerspiegeln, was dazu führt, dass der Stop-Loss durchbrochen wird.
  • GAP-Risiken bei Mehrheitspositionen
  • Möglicherweise häufige, winzige Geschäfte

Der ATR-Faktor kann entsprechend erhöht werden, um die Stop-Loss-Bufferzone zu erhöhen, die Handelsfrequenz zu kontrollieren, die Mindeststop-Lösung einzurichten usw.

Optimierungsrichtung

  • Trendwechselsignale in Kombination mit anderen Indikatoren
  • Optimierung der ATR-Parameter
  • Zugriff auf die Volumenkontrolle

Zusammenfassen

Die Strategie insgesamt ist eine stabile, zweiseitige Stop-Loss-Strategie. Durch die ATR-Indikatoren wird ein dynamischer Stop-Loss-Satz eingestellt, um das Rücknahmerisiko zu kontrollieren. Gleichzeitig erhöht sich die Gewinnchancen für den zweiseitigen Handel. Durch weitere Optimierung kann die Strategie stabiler, zuverlässiger und tendenziellere gemacht werden.

Strategiequellcode
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BCH Swinger v1", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year")
ToMonth   = input(defval = 10, title = "To Month", minval = 1)
ToDay     = input(defval = 01, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction",  minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES