Zwei-Richtungs-Umkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 16:47:08
Tags:

img

Übersicht

Die bidirektionale Umkehrstrategie ist eine einfache Bitcoin-Handelsstrategie, die Stop-Loss-Kaufordern basierend auf der Handelsspanne des vorherigen Tages setzt.

Strategie Logik

Die Strategie berechnet zunächst den Handelsspielraum des vorherigen Tages, der der höchste Preis minus der niedrigste Preis ist. Nach der Eröffnung des aktuellen Tages beurteilt sie, ob der Preis höher oder niedriger ist als der Schlusskurs des vorherigen Tages. Wenn höher, wird der Stop-Loss-Kaufpreis auf den Eröffnungskurs plus 0,6 Mal den Bereich des vorherigen Tages gesetzt. Wenn niedriger, wird der Stop-Loss-Kaufpreis auf den Eröffnungskurs plus 1,8 Mal den Bereich des vorherigen Tages gesetzt. Die Strategie eröffnet eine Long-Position, wenn der Stop-Loss ausgelöst wird, und schließt die Position vor dem Ende des aktuellen Tages.

Insbesondere enthält die Strategie zwei Eintrittsregeln:

  1. Wenn der Eröffnungspreis des laufenden Tages höher ist als der Schlusskurs des vorhergehenden Tages (longCond1 erfüllt) und innerhalb des Backtest-Zeitfensters (window() erfüllt ist, setzen Sie einen Stop-Loss-Kauf zum Eröffnungspreis zuzüglich 0,6-facher Bandbreite des vorhergehenden Tages (strategie.long1).

  2. Wenn der Eröffnungspreis des laufenden Tages niedriger ist als der Schlusskurs des vorherigen Tages (longCond2 erfüllt) und innerhalb des Backtestfensters ein Stop-Loss-Kauf zum Eröffnungspreis zuzüglich des 1,8fachen Bereichs des vorherigen Tages (Strategie.long2) eingestellt wird.

Die Strategie eröffnet eine Long-Position, wenn einer der oben genannten Stop-Losses ausgelöst wird, und schließt die Position vor dem Ende des Tages mit strategy.close_all (().

Analyse der Vorteile

Die zweiseitige Umkehrstrategie hat folgende Vorteile:

  1. Die Strategie berücksichtigt sowohl Aufwärts- als auch Abwärtsbewegungen und erfasst Umkehrschritte in beide Richtungen.

  2. Das vorgegebene Stop-Loss begrenzt effektiv den maximalen Verlust pro Handel.

  3. Vermeidet das Übernachtungsrisiko, indem alle Positionen täglich geschlossen werden.

  4. Höhere Handelsfrequenz für den kurzfristigen Handel: Das Halten von Positionen für nur einen Tag sorgt für eine hohe Handelsfrequenz.

  5. Einfache und klare Logik, leicht zu verstehen und umzusetzen.

Risikoanalyse

Es gibt jedoch auch einige Risiken für die Strategie:

  1. Eine falsche Stop-Loss-Distanz kann dazu führen, dass ein Stop-Loss getroffen wird.

  2. Eine hohe Handelsfrequenz kann zu erheblichen Transaktionskosten führen.

  3. In einem Markt mit hohen Marktschwankungen ist es anfällig, wenn ein Stopp-Verlust häufiger ausgelöst wird, wenn die Whipsaw-Bedingungen bestehen.

  4. Die Strategie eignet sich besser für Umkehrungen und kann keine Gewinne aus der Fortsetzung des Trends erzielen.

Möglichkeiten zur Verbesserung

Einige Möglichkeiten, wie die Strategie verbessert werden kann:

  1. Optimieren Sie die Stop-Loss-Distanz. Testen Sie verschiedene Stop-Loss-Level, um optimale Stop-Loss-Punkte zu finden. Berücksichtigen Sie auch dynamische Stops, die auf der Marktvolatilität basieren.

  2. Fügen Sie Trendfilter hinzu. Überprüfen Sie Trends in größeren Zeitrahmen vor dem Eintritt, um Kontratrendgeschäfte zu vermeiden.

  3. Verbessern Sie die Einstiegsregeln und erwägen Sie, Volumen- oder Impulsindikatoren hinzuzufügen, um die Präzision des Einstiegs zu erhöhen.

  4. Einführung des Positionsmanagements, Test-Stopps oder Trend-Ausgänge, um profitable Trends zu erreichen.

  5. Die Strategie kann bei Produkten mit höherer Volatilität besser funktionieren.

  6. Verwenden Sie Machine-Learning-Techniken. Optimieren Sie Parameter wie Stopps und Einträge mit ML-Algorithmen.

Schlussfolgerung

Insgesamt ist die bidirektionale Umkehrstrategie ein sehr einfaches und praktisches kurzfristiges Strategiekonzept. Sie kann Umkehrchancen sowohl bei Aufwärts- als auch Abwärtsbewegungen effektiv erfassen. Allerdings müssen Risiken wie Stop-Loss-Distanz und Einstiegsregeln optimiert werden, um Risiken zu reduzieren und die Robustheit zu verbessern. Mit wichtigen Verbesserungen kann die Strategie zu einem sehr nützlichen kurzfristigen Handelswerkzeug werden.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Simple strat", shorttitle="Simple Strat", overlay=true)

// X001TK R1 strategy
//
// 
// This strategy combines the special approach in previous daily range trading
//
// This strategy goes long on stop buy order which is calculated as previous day range
// multiplied by special number.
//
// This pure strategy does not have any
// stop loss or take profit money management logic.
//
// Exit rule is simple. We close the position on market close or next day open
//
// 
// 
//
// Input
length = input(10, minval=1)
stopLossPercent=input(1.1,"Stop Loss Percent")
profitPercent=input(9,"Profit Percent")


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2029, title = "To Year", minval = 2017)
ses_cls = input(defval=true, title="End of Session Close Out?")


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


// === STRATEGY ===
// conditions
longCond1 = close>close[1]
longCond2 = close<close[1]


strategy.entry("long1", strategy.long, when=longCond1==true and window()==true, stop=close+(high - low)*0.6)
strategy.entry("long2", strategy.long, when=longCond2==true and window()==true, stop=close+(high - low)*1.8)
strategy.close_all(when=ses_cls)

// === /STRATEGY ===

Mehr