Preiskanal-Trendfolgestrategie


Erstellungsdatum: 2023-10-31 17:44:19 zuletzt geändert: 2023-10-31 17:44:19
Kopie: 0 Klicks: 636
1
konzentrieren Sie sich auf
1617
Anhänger

Preiskanal-Trendfolgestrategie

Spektral-Alters-Strategie

Überblick

Die Spektral-Age-Strategie ist eine auf den Preiskanälen basierende Trendverfolgungsstrategie. Sie verwendet schnelle und langsame Tangxian-Kanäle, um die Richtung des Trends zu erkennen und bei Rückschlägen zu kaufen und zu verkaufen. Die Strategie hat den Vorteil, dass sie den Trend automatisch verfolgt und bei Trendänderungen zu stoppen und umzukehren.

Strategieprinzip

Die Strategie definiert zunächst die Schnellkorridor-Periode als 20 K-Linien und die Schnellkorridor-Periode als 50 K-Linien. Die Schnellkorridor-Periode dient zur Einstellung des Stop-Loss-Preises, die Schnellkorridor-Periode dient zur Bestimmung der Trendrichtung und der Einstiegszeit.

Die Strategie berechnet zunächst die Höchst- und die Mindestpreise des schnellen Kanals und nimmt die mittlere Linie als Stop-Loss-Linie. Gleichzeitig werden die Höchst- und die Mindestpreise des langsamen Kanals berechnet, wobei die Ober- und Unterseite des Kanals als Einstiegslinien dienen.

Wenn der Preis die langsame Bahn überschreitet, machen Sie mehr; wenn der Preis die langsame Bahn überschreitet, machen Sie eine Lücke. Nach dem Eintritt ist der Stop-Loss-Punkt auf der mittleren Linie der schnellen Bahn gesetzt.

So kann der langsame Weg die Richtung des großen Trends bestimmen, während der schnelle Weg den kleinen Bereich überschreitet, um den Stopp zu bestimmen. Wenn der große Trend sich umkehrt, wird der Preis zuerst den schnellen Weg überschreiten, um den Stopp zu erreichen.

Strategische Vorteile

  • Automatische Trendverfolgung, zeitnahe Stop-Off. Mit der Doppelkanalstruktur kann der Trend automatisch verfolgt und bei einer Trendwende schnell gestoppt werden.

  • Positionen nur dann zu eröffnen, wenn der Preis die Kanalgrenze überschreitet, um einige nicht-trendbedingte Falschbrüche zu beseitigen.

  • Risiken sind kontrollierbar. Die Stop-Loss-Distanz ist knapp, sodass einzelne Verluste kontrolliert werden können.

Strategisches Risiko

  • Der Rückzug kann groß sein und erfordert eine psychologische Vorbereitung.

  • Der Stopppunkt ist zu nahe. Der Schnellweg ist kürzer, der Stopp ist näher und leicht zu erfassen. Der Schnellweg kann entsprechend gelockert werden.

  • Es ist leicht zu übermäßigen Transaktionen. Die Doppelkanalstruktur führt zu mehr Kauf- und Verkaufspunkten und erfordert eine vernünftige Kontrolle der Positionen.

Optimierungsrichtung

  • Erhöhung der Filterbedingungen für die Eröffnung von Positionen. Indikatoren wie Volatilität können in die Eröffnung von Positionen aufgenommen werden, um tendenziell schwache Durchbrüche zu filtern.

  • Optimierung der Kanalzyklusparameter. Die optimale Kombination von Kanalparametern kann durch eine systematischere Methode gefunden werden.

  • In Kombination mit mehreren Zeitzyklen kann man große Trends in höheren Zeitzyklen identifizieren und in niedrigeren spezifische Geschäfte tätigen.

  • Die Stop-Loss-Distanz kann dynamisch angepasst werden, je nachdem, wie stark der Markt schwankt.

Zusammenfassen

Die Spektral-Age-Strategie ist insgesamt eine eher standardisierte Trend-Tracking-Strategie. Sie nutzt die Preiskanal, um die Trendrichtung zu bestimmen, und setzt Stop-Losses, um das Risiko zu kontrollieren. Die Strategie hat einige Vorteile, aber es gibt auch Probleme mit Rückzugs- und Stop-Loss-Punkten. Durch die Optimierung der Kanalparameter, die Erhöhung der Filterbedingungen und andere Methoden können bessere Strategieeffekte erzielt werden.

Strategiequellcode
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
fromyear  = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear    = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth   = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday   = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today     = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    // la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)