Alpha-Trendstrategie mit Trailing Stop Loss

Schriftsteller:ChaoZhang, Datum: 2023-11-27 15:25:35
Tags:

img

Übersicht

Die Alpha-Trend-Strategie mit Trailing Stop Loss ist eine erweiterte Version der Alpha-Trend-Strategie, da sie einen Trailing-Stop-Loss-Mechanismus enthält, der Risiken effektiver kontrollieren und die Gesamtrendite verbessern kann.

Strategie Logik

Die Strategie verwendet zuerst den Alpha-Indikator, um die Preisentwicklung zu bestimmen. Wenn der Alpha-Indikator steigt, ist es ein bullisches Signal. Wenn der Alpha-Indikator sinkt, ist es ein bärisches Signal. Die Strategie erzeugt Kauf- und Verkaufssignale auf der Grundlage des goldenen Kreuzes und des toten Kreuzes des Alpha-Indikators.

In der Zwischenzeit wird ein Trailing Stop Loss Mechanismus aktiviert. Das Trailing Stop Loss Level wird standardmäßig auf 10% des Schlusskurses des Tages festgelegt. Bei Halten von Long Positionen, wenn der Preis unter das Stop Loss Level fällt, wird die Strategie die Position verlassen, um den Stop Loss zu stoppen. Ähnlich für Short Positionen. Dies hilft, Gewinne besser zu erzielen und Risiken zu reduzieren.

Analyse der Vorteile

  1. Der Alpha-Trend hat eine stärkere Fähigkeit, die Preisentwicklung zu bestimmen als einfache gleitende Durchschnitte und andere Indikatoren.

  2. Durch die Bereitstellung von Trailing Stop Loss können Einzelhandelsverluste wirksam kontrolliert und die Risiken verringert werden.

  3. Diese Strategie verfügt über starke Risikokontrollfähigkeiten, sodass auch bei ungünstigen Marktbedingungen Verluste minimiert werden können.

  4. Mit weniger Referenzinputs ist diese Strategie effizient zu berechnen und eignet sich für den Hochfrequenzhandel.

Risikoanalyse

  1. In Seitenbereichsmärkten kann die Strategie viele unnötige Handelssignale erzeugen, was die Handelskosten und Schlupfverluste erhöht.

  2. Bei der Bereitstellung von Trailing Stop Loss muss der Stop-Loss-Prozentsatz angemessen festgelegt werden.

  3. Bei stark schwankenden Preisen steigt die Wahrscheinlichkeit, dass ein Stop-Loss ausgelöst wird, erheblich und erhöht das Risiko, in Positionen eingesperrt zu sein.

  4. Bei der Optimierung der Stop-Loss-Parameter sollten verschiedene Faktoren berücksichtigt werden, darunter die Merkmale des Basiswerts und die Handelshäufigkeit, nicht nur die Verfolgung maximaler Renditen.

Die oben genannten Risiken könnten durch Anpassung der Alpha-Indikatorparameter, Einstellung von DYNAMIC Stop Loss, Verkürzung der Handelszykluslänge usw. gemindert werden.

Optimierungsrichtlinien

  1. Es können verschiedene Indikatorparameter getestet werden, um geeignete Kombinationen von Alpha-Indikatorparametern zu finden.

  2. Versuchen Sie, Stopp-Loss-Prozentsätze dynamisch auf der Grundlage von ATR festzulegen, um sich besser an die Marktschwankungen anzupassen.

  3. Kombinieren Sie mit anderen Indikatoren wie MACD, KD, um einige falsche Signale auszufiltern.

  4. Die Parameter können automatisch basierend auf den Ergebnissen des Live-Handels und des Backtestings optimiert werden, wobei maschinelle Lerntechniken zur Verbesserung der Intelligenz der Parameterwahl verwendet werden.

Schlussfolgerung

Die Alpha Trend Strategie mit Trailing Stop Loss kombiniert Trendbestimmung und Risikokontrolle. Sie kann Preistrends effektiv identifizieren und Gewinne einfangen, um Risiken zu reduzieren. Im Vergleich zu einfachen Trendverfolgungsstrategien kann diese Strategie höhere stetige Renditen erzielen. Mit verschiedenen Aspekten der Optimierung hat sie das Potenzial, noch bessere Leistungen zu erzielen.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=false)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))


// //ENTER SOME SETUP TRADES FOR TSL EXAMPLE
// longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
// if longCondition
//     strategy.entry('My Long Entry Id', strategy.long)

// shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20))
// if shortCondition
//     strategy.entry('My Short Entry Id', strategy.short)



longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
    

enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true)
//TRAILING STOP CODE
trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01



longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    math.min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop')

    
if enableTrailing
    //EXIT TRADE @ TSL
    if strategy.position_size > 0
        strategy.exit(id='Close Long', stop=longStopPrice)
    if strategy.position_size < 0
        strategy.exit(id='Close Short', stop=shortStopPrice)


 

Mehr