Trendfolgende Stop-Loss-Strategie auf Basis eines Trendwarnindikators

Schriftsteller:ChaoZhang, Datum: 2024-02-05 16:00:35
Tags:

img

Übersicht

Die Trend Following Stop Loss Strategie ist eine Trend-Tracking-Stop-Loss-Handelsstrategie, die auf dem TrendAlert-Indikator basiert. Sie bestimmt die Trendrichtung durch den TrendAlert-Indikator, um den Trend-Tracking-Eintrag umzusetzen. Gleichzeitig verwendet sie den ATR-Indikator, um den Stop-Loss zu setzen, um Risiken zu kontrollieren.

Strategie Logik

Die Strategie besteht aus folgenden Hauptteilen:

  1. Der TrendAlert-Indikator beurteilt die Trendrichtung. Wenn TrendAlert größer als 0 ist, ist es ein Aufwärtssignal. Wenn er kleiner als 0 ist, ist es ein Bärensignal.

  2. Der ATR-Indikator berechnet den jüngsten Kursschwankungsbereich. ATR multipliziert mit dem ATR-Stop-Loss-Multiplikator atrStopMultiplier wird als fester Stop-Loss verwendet.

  3. Der niedrigste niedrigste niedrigsteNiedrigste und höchste höchste höchsteHoch zusammen mit ATR-Stop-Loss konstruieren den Tracking-Stop-Loss. Der Strukturparameter steuert, ob er aktiviert ist.

  4. Geben Sie Long- oder Short-Positionen gemäß der Trendsignalrichtung ein.

  5. Schließen von Positionen, wenn der Preis einen Stop-Loss oder einen Profit auslöst.

Die Strategie filtert falsche Signale durch Trendbeurteilung, kontrolliert Risiken durch Stop-Loss-Tracking, gewährleistet die Rentabilität durch Take-Profit und verbessert die Stabilität des Handelssystems.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Die doppelte Garantie der Trendfilterung und Stop-Loss-Verfolgung verhindert, Marktlärm zu verfolgen, und gewährleistet kontrollierte Handelsrisiken.

  2. Die ATR-adaptive Stop-Loss-Einstellung verhindert eine Überoptimierung und eignet sich für verschiedene Marktumgebungen.

  3. Profit machen sorgt für Rentabilität und verhindert, dass Profite verbraucht werden.

  4. Die Strategie-Logik ist klar und prägnant, leicht verständlich und anpassungsfähig, geeignet für quantitative Händler Sekundärentwicklung.

  5. Es ist in der Sprache Pine Script geschrieben und kann direkt auf der TradingView-Plattform ohne Programmierkenntnisse verwendet werden.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Eine falsche Trendbeurteilung kann zu unnötigen Eintritts- und Stop-Loss-Trigger führen.

  2. Wenn der Markt heftig schwankt, kann ATR die wahre Amplitude unterschätzen. Zu diesem Zeitpunkt kann der ATR-Stop-Loss-Multiplikator atrStopMultiplier erhöht werden.

  3. Der Zielgewinn kann den Gewinnspielraum der Strategie einschränken.

  4. Die Logik der Existenz, die nur auf dem Preis beruht, sollte mit dem Zeitmanagement kombiniert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren der Parameter ATR Länge atrLength und Stop-Loss-Multiplikator atrStopMultiplier, um die Empfindlichkeit des Stop-Loss-Algorithmus anzupassen.

  2. Versuchen Sie verschiedene Trendindikatoren, um bessere Einstiegsmöglichkeiten zu finden.

  3. Auswahl oder Anpassung des Zielgewinnparameters entsprechend den Merkmalen bestimmter Handelsarten.

  4. Vergrößern Sie den Zeitstop-Loss-Mechanismus, um Risiken über Nacht zu vermeiden.

  5. Filtern Sie falsche Ausbrüche, indem Sie Handelsvolumenindikatoren kombinieren, um die Stabilität der Strategie zu verbessern.

Schlussfolgerung

Im Allgemeinen ist dies eine sehr praktische Trend-Tracking-Stop-Loss-Strategie. Sie verwendet Indikatoren, um die Trendrichtung zu bestimmen, um Trend-Tracking zu erreichen, während sie adaptive Stops setzt, um die Risikokontrolle zu gewährleisten. Die Strategie-Logik ist klar und einfach zu bedienen, so dass sie ideal für Anfänger zu lernen ist. Gleichzeitig bietet sie auch einen guten Handelsstrategie-Rahmen für die fortgeschrittene Strategieentwicklung, die quantitative Händler wert ist tiefgreifende Forschung und Optimierung.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jaque_verdatre

//@version=5
strategy("TrendAlert Based", overlay = true)

// Get inputs
TrendAlert = input.source(close, "TrendAlert")
atrLength = input.int(title="ATR Length", defval=15, minval=1)
useStructure = input.bool(title="Use Structure?", defval=true)
lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1)
atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1)
LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1)
PineConnectorID = input.int(title = "Pine Connector ID",defval = 0)
CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD")
Risk = input.int(title = "risk in % to send", defval = 10, minval = 1)

// Calculate data
atr = ta.atr(atrLength)
lowestLow = ta.lowest(low, lookback)
highestHigh = ta.highest(high, lookback)
longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier
shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier

// Draw data to chart
plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none)
plot(longStop, color=color.green, title="Long Trailing Stop")
plot(shortStop, color=color.red, title="Short Trailing Stop")

var float LimitL = na
var float LimitS = na
var float LPosPrice = na
var float SPosPrice = na
var float LPosLongStop = na
var float SPosShortStop = na

KnowLimit (PosPrice, PosStop) =>
    (PosPrice-PosStop)*LimitMultiplier+PosPrice


NotInTrade = strategy.position_size == 0
InLongTrade = strategy.position_size > 0
InShortTrade = strategy.position_size < 0

longCondition = TrendAlert > 0 and NotInTrade
if (longCondition)
    LPosPrice := close
    LPosLongStop := longStop
    LimitL := KnowLimit(LPosPrice, LPosLongStop)
    strategy.entry("long", strategy.long)
    LTPPip = LimitL-LPosPrice
    LSLPip = LPosPrice-longStop
    alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "long", stop = longStop, limit = LimitL)

shortCondition = TrendAlert < 0 and NotInTrade
if (shortCondition)
    SPosPrice := close
    SPosShortStop := shortStop
    LimitS := KnowLimit(SPosPrice, SPosShortStop)
    strategy.entry("short", strategy.short)
    STPPip = SPosPrice-LimitS
    SSLPip = shortStop - SPosPrice
    alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "short", stop = shortStop, limit = LimitS)

plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition")
plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition")

if (InShortTrade)
    LimitL := close
    LPosLongStop := close
    LPosPrice := close

PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit")
PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss")
PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price")

if (InLongTrade)
    LimitS := close
    SPosShortStop := close
    SPosPrice := close

PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit")
PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss")
PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price")

fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))

fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))
fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))

Mehr