Die Wave Trend Trading Strategie basiert auf LazyBear

Schriftsteller:ChaoZhang, Datum: 2023-12-19 12:07:14
Tags:

img

Übersicht

Dies ist eine Handelsstrategie, die auf dem Wave Trend-Indikator von LazyBear basiert. Die Strategie identifiziert die Marktstimmung durch Berechnung des Wellentrends von Kursschwankungen und trifft entsprechend lange und kurze Entscheidungen.

Strategie Logik

Der Kern dieser Strategie ist der Wellen-Trend-Indikator von LazyBear. Er berechnet zuerst den durchschnittlichen Preis (AP), dann den exponentiellen gleitenden Durchschnitt von AP (ESA) und die absolute Preisbewegung (D). Basierend auf ESA und D berechnet die Strategie den Volatilitätsindex (CI), der dann in einen exponentiellen gleitenden Durchschnitt eingespeist wird, um die Wellen-Trendlinie (WT) zu erzeugen. WT wird weiter in WT1 und WT2 verarbeitet, indem einfache gleitende Durchschnitte verwendet werden. Wenn WT1 über WT2 kreuzt, löst es das goldene Kreuz aus und geht lang. Wenn WT1 unter WT2 geht, löst es das Todeskreuz aus und geht kurz.

Analyse der Vorteile

Dies ist ein sehr einfacher, aber praktischer Trend, der der Strategie folgt.

  1. Es identifiziert die Preisentwicklung und die Marktstimmung eindeutig auf der Grundlage des Wave Trend-Indikators
  2. Einfache Handelslogik des Long/Short-Tradings basierend auf goldenen/Todeskreuzungen von WT-Linien
  3. Anpassbare Parameter zur Anpassung der WT-Empfindlichkeit für verschiedene Zyklen
  4. Flexibilität beim Hinzufügen weiterer Filter wie Handelszeitfenster

Risikoanalyse

Diese Strategie birgt einige Risiken:

  1. Als Trend-Nachfolge-Strategie kann es viele falsche Signale während der Bereichsgebundenen Märkte erzeugen.
  2. Die Verzögerung der WT kann zu fehlenden Kurven führen
  3. Standardparameter können nicht für alle Produkte und Zyklen geeignet sein
  4. Kein Stop-Loss-Mechanismus, Haltedauer kann sehr lang sein

Die wichtigsten Lösungen sind:

  1. Optimieren von Parametern zur Abstimmung der WT-Empfindlichkeit
  2. Hinzufügen anderer Indikatoren zur Bestätigung, um falsche Signale zu vermeiden
  3. Einsatz von Stop Loss und Take Profit
  4. Grenzwerte für tägliche Geschäfte oder Positionen

Optimierungsrichtlinien

Es gibt Raum für weitere Optimierungen:

  1. Optimierung der WT-Parameter für eine bessere Empfindlichkeit oder Stabilität
  2. Verwenden Sie unterschiedliche Parameter-Sätze basierend auf Zyklen
  3. Zusätzliche Indikatoren wie Volumen, Volatilität zur Bestätigung
  4. Hinzufügen von Stop Loss und Take Profit
  5. Die Handelslogik zu bereichern, wie Pyramiden, Gitterhandel
  6. Erforschen Sie bessere Funktionen und Regeln mithilfe von maschinellem Lernen

Zusammenfassung

Zusammenfassend ist dies eine sehr einfache und praktische Wellen-Trend-Following-Strategie. Durch die Modellierung des Wellentrends von Kursschwankungen identifiziert sie überkaufte und überverkaufte Marktbedingungen, um Handelssignale mit WTs goldenen Kreuz und Todeskreuz zu generieren. Die Strategie ist einfach umzusetzen, erfordert jedoch möglicherweise weitere Optimierungen für Sensibilität und Stabilität. Als Trend-Following-Strategie benötigt sie auch zusätzliche Filter und Logik, um falsche Signale zu vermeiden.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note. 
//
//@version=4
     
// === INPUT BACKTEST RANGE ===
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)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)

plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)

//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
    
longCondition  = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())      

//strategy.entry(id="Short Entry", long=false, when=shortCondition)

Mehr