Eine Indikator-gesteuerte Stop-Loss- und Take-Profit-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-10 11:28:06
Tags:

img

Übersicht

Diese Strategie verwendet einen gleitenden Durchschnitt als Handelssignale und kombiniert ihn mit benutzerdefinierten Stop-Loss- und Take-Profit-Verhältnissen, um eine vollständige indikatorgesteuerte Stop-Loss- und Take-Profit-Strategie zu implementieren.

Strategie Logik

Die Kernlogik dieser Strategie lautet:

  1. Verwenden Sie 3-Perioden-SMA als Handelssignale, gehen Sie lang, wenn die SMA über 0 überschreitet, und gehen Sie kurz, wenn die SMA unter 0 überschreitet.

  2. Nach dem Eintritt in einen Handel können Benutzer den Stop-Loss anpassen und Gewinnquoten nehmen.

  3. Auf der Grundlage des Einstiegspreises und der Stop-Loss-Ratio, die vom Benutzer festgelegt wurden, wird automatisch die Stop-Loss-Linie festgelegt.

  4. Auf der Grundlage des Einstiegspreises und der vom Benutzer festgelegten Gewinnquote wird automatisch die Gewinnlinie festgelegt.

  5. Wenn der Preis die Stop-Loss-Linie berührt, stoppt er automatisch.

  6. Nach dem Schließen der Positionen werden automatisch Stop-Loss- und Gewinnbestellungen annulliert.

Insbesondere berechnet die Strategie die 3-Perioden-SMA mit der Funktion sma und ordnet sie der Variablen ma zu.

Anschließend berechnet es die lange Eingangszeile, die ma plus ma% von lo ist. lo ist ein benutzeranpassbarer Parameter für das Offset der langen Eingangszeile.

Wenn ma über 0 geht, signalisiert dies einen Long-Eintrag. Strategie wird mit der Strategie.Entry-Funktion lang eingegeben, wobei der Einstiegspreis auf long gesetzt ist.

Gleichzeitig werden die Stop-Loss- und Take-Profit-Preise festgelegt. Der Stop-Loss-Preis ist der Einstiegspreis minus der Einstiegspreis% von sl. sl ist der benutzeranpassbare Stop-Loss-Verhältnisparameter. Der Take-Profit-Preis ist der Einstiegspreis plus der Einstiegspreis% von tp. tp ist der benutzeranpassbare Take-Profit-Verhältnisparameter.

Strategy.entry-Funktion setzt Stop-Loss und Take-Profit-Orders separat. Wenn der Preis die Stop-Loss-Linie berührt, wird er automatisch gestoppt. Wenn der Preis die Profit-Linie berührt, wird er automatisch Profit machen.

Nach dem Schließen von Positionen werden Stop-Loss- und Take-Profit-Orders automatisch mit Hilfe der Strategie.Cancel-Funktion storniert.

Vorteile

Die Vorteile dieser Strategie:

  1. Hochgradige Automatisierung, keine manuelle Interferenz erforderlich, geeignet für den Algorithmushandel.

  2. Anpassungsfähige Stop-Loss- und Take-Profit-Verhältnisse zur Risikokontrolle.

  3. Handelssignale kommen vom Indikator und vermeiden einen falschen Ausbruch.

  4. Visualisierte Stop-Loss- und Profitnahme, intuitiv.

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

Risiken und Lösungen

Diese Strategie birgt auch einige Risiken:

  1. Die Lösung besteht darin, die Parameter zu optimieren, um einen zuverlässigen Indikator sicherzustellen.

  2. Die Lösung besteht darin, die Verhältnisse für verschiedene Märkte anzupassen.

  3. Die Lösung besteht darin, Eingangssignale nach Trend, Volumen usw. zu filtern.

  4. Die Lösung besteht darin, die Positionsgröße zu verringern oder einen Stop Loss zu verwenden.

Optimierungsrichtlinien

Einige Richtungen zur Optimierung der Strategie:

  1. Optimierung der gleitenden Durchschnittsparameter für die Zuverlässigkeit.

  2. Optimieren Sie die Einstiegsbedingungen, um einen falschen Ausbruch zu vermeiden, fügen Sie Volumenbestätigungen hinzu usw.

  3. Optimieren Sie den Stop-Loss und nehmen Sie Gewinn, verwenden Sie dynamischen oder nachfolgenden Stop-Loss usw.

  4. Optimierung des Risikomanagements, Anpassung der Positionsgröße, Senkung des Einzelhandelsrisikos.

  5. Optimieren Sie den Eintrittszeitpunkt, kombinieren Sie mit Trend, Support/Resistance usw.

  6. Fügen Sie Pyramiden an, um die Gewinnsumme zu erhöhen.

  7. Parameteroptimierung für bestimmte Produkte.

Schlussfolgerung

Diese Strategie bietet einen einfachen und zuverlässigen technischen Rahmen für indikatorgetriebene Stop Loss und Take Profit mit Vorteilen wie Automatisierung und Risikokontrolle. Sie eignet sich für den algorithmischen Handel. Es gibt auch viele Aspekte, die verbessert und optimiert werden können, wie Indikatorparameter, Eintrittsfilter, Stop Loss / Take Profit-Strategien, Risikomanagement usw. Mit weiteren Erweiterungen und Optimierungen kann sie zu einer noch leistungsfähigeren Handelsstrategie werden.


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

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])




Mehr