Es handelt sich um eine Trend-Following-Strategie, die auf einem Ausbruch und einem Volatilitätsstop basiert. Die Strategie identifiziert die Trendrichtung durch Preisbruch der dynamischen Stop-Loss-Linie. Sie tritt in den Handel, wenn der Preis die Stop-Loss-Linie durchdringt und die Stop-Loss-Linie verwendet, um Trends zu verfolgen und Gewinne zu erzielen. Die Strategie zielt darauf ab, mittelfristige Trends zu erfassen und gleichzeitig das Risiko mit dynamischen Stops zu kontrollieren.
Die Strategie verwendet den Volatility Stop Indikator, um die Trendrichtung und den Stop Loss zu bestimmen.
Die Stop-Loss-Linie schwankt mit dem Preis nach oben und unten und bildet einen dynamischen Kanal.
Wenn der Preis die Stop-Loss-Linie durchdringt, signalisiert er eine Trendumkehr.
Nach der Eröffnung der Position verfolgt die Strategie den Stop-Loss mit der Linie:
Wenn der Preis die Stop-Loss-Linie wieder erreicht, wird die Position geschlossen.
Auf diese Weise kann die Strategie Trends rechtzeitig verfolgen und gleichzeitig das Risiko durch Stopps kontrollieren.
Die Strategie weist folgende Vorteile auf:
Es gibt auch einige Risiken, die zu berücksichtigen sind:
Lösungen:
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Insgesamt ist diese Momentum-Breakout-Strategie mit Volatilitäts-Stop ein sehr praktisches Trendfolgensystem. Sie kann Trendumkehrmöglichkeiten erfassen und dem Trend folgen, während sie das Risiko effektiv mit dynamischen Stops kontrolliert. Mit angemessener Parameter-Ausrichtung kann sie eine gute Rendite während der Trendmärkte erzielen. Aber einige Probleme müssen angegangen werden, wie überempfindliche Stops, hohe Handelsfrequenz usw. Weitere Optimierungen können es zu einer effizienten und robusten Quant-Trading-Strategie machen.
/*backtest start: 2023-11-11 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m 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/ //@version=4 strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) // Works better on 3h, 1h, 2h, 4h // Best time frame 2H //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) //Entry strategy.entry(id="long", long = true, when = crossover(close, vStop) and window()) //Exit strategy.close("long", when = crossunder(close, vStop)) plot(vStop,"Vstop", color.black, linewidth=2)