
Die Strategie nutzt den Moving Average als Handelssignal und kombiniert mit einem benutzerdefinierten Stop-Loss-Ratio, um eine vollständige, indikatorgetriebene Stop-Loss-Strategie zu realisieren. Die Strategie kann automatisch eingegeben, gestoppt und gestoppt werden, ohne menschliche Intervention und ist für den automatischen Handel geeignet.
Die Kernlogik der Strategie lautet:
Verwenden Sie ein 3-Zyklus-SMA als Handelssignal, wenn Sie über dem SMA einen Plus von 0 machen und unter dem SMA einen Minus von 0 machen;
Der Benutzer kann die Stop-Loss-Ratio und die Stop-Stop-Ratio nach dem Eintritt anpassen.
Ein automatisches Setzen einer Stop-Line basierend auf dem Einstiegspreis und dem Verhältnis der Stop-Loss-Einstellungen des Benutzers;
Die automatische Einstellung der Stop-Line basiert auf dem Einstiegspreis und dem Verhältnis der Stop-Line zu den Benutzer-Einstellungen.
Wenn der Preis die Stop-Line berührt, wird automatisch gestoppt; Wenn der Preis die Stop-Line berührt, wird automatisch gestoppt;
Nach dem Ausgleich wird der Stop-Loss-Stop-Order automatisch widerrufen.
Konkret berechnet die Strategie einen 3-Zyklus-Moving Average mit der Funktion sma und gibt diesen Wert der Variablen ma ≠.
Dann berechnen wir die Mehrkopf-Eingangslinie long, deren Wert ma plus der Prozentanteil von ma ist. lo ist ein benutzerdefinierbarer Parameter, der die Mehrzeitverschiebung der Eingangslinie darstellt.
Wenn ma auf 0 übertragen wird, bedeutet dies, dass die Übernahme beginnt, und die Übernahme erfolgt über die Strategy.entry-Funktion, wobei der Einstiegspreis long。 ist.
Gleichzeitig werden die Stop-Loss- und Stopp-Preise festgelegt. Der Stop-Loss-Preis ist der Einstiegspreis abzüglich sl% des Einstiegspreises. Sl ist ein benutzerdefinierbares Parameter, das den Stop-Loss-Prozent darstellt.
Setzen Sie Stop-Loss- und Stop-Stop-Warte über die Strategy.entry-Funktion. Wenn der Preis die Stop-Loss-Linie berührt, wird automatisch gestoppt; Wenn der Preis die Stop-Line berührt, wird automatisch gestoppt.
Nach dem Ausgleich wird die Stop-Loss-Bestellung automatisch mit der Funktion strategy.cancel widerrufen.
Diese Strategie hat folgende Vorteile:
Die Automatisierungsstufe ist hoch und erfordert keine menschlichen Eingriffe, was für den automatischen Handel geeignet ist.
Die Anpassung des Stop-Loss-Stopp-Ratios zur Risikokontrolle;
Es gibt auch eine Reihe von Anwendungen, die es ermöglichen, den Markt zu verbessern.
Die visuelle Stoppschwelle ist klar sichtbar.
Die Strategie ist klar und einfach zu verstehen und umzusetzen.
Die Strategie birgt auch Risiken:
Das Risiko, dass ein Indikator ein falsches Signal erzeugt. Die Lösung besteht darin, die Parameter zu optimieren, um sicherzustellen, dass der Indikator stabil und zuverlässig ist.
Die Stop-Loss-Stopp-Ratio ist nicht vernünftig eingestellt und kann zu locker oder zu radikal sein. Die Lösung besteht darin, die Stop-Loss-Stopp-Parameter für verschiedene Märkte anzupassen.
Ein brecherischer Eintritt ist leicht zu erwischen. Die Lösung besteht darin, Eintrittssignale wie Trends, Kennzahlen usw. zu filtern.
Die Lösung ist, die Standards zu senken oder die Stop Loss zu verfolgen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Parameter des Moving Averages, um sie zuverlässiger zu machen;
Optimierung der Eintrittsbedingungen, um falsche Durchbrüche zu vermeiden, die mit einer Preisbestätigung verbunden werden können;
Optimierung von Stop-Loss-Strategien, wie beispielsweise dynamische Stop-Loss-Strategien oder Tracking-Stops;
Die Bank hat die Möglichkeit, die Kapitalverwaltung zu optimieren, die Positionskriterien anzupassen und das Einzelrisiko zu reduzieren.
Optimierung des Filter-Eintritts in Kombination mit Trends und Indikatoren wie Widerstandswerte.
Schließen Sie sich Pyramiding an, um eine Aktienstrategie zu entwickeln, um die Profitabilität zu verbessern.
Parameteroptimierung für bestimmte Sorten.
Diese Strategie ist eine indikatorgetriebene Stop-Loss-Strategie mit den Vorteilen der Handelsautomation und Risikokontrolle für den Quantitativen Handel. Es gibt jedoch einige Optimierungsmöglichkeiten, wie zum Beispiel die Optimierung der Kennzahlenparameter, die Eintrittsfilterung, die Stop-Loss-Strategie und die Vermögensverwaltung. Insgesamt bietet die Strategie einen einfachen und zuverlässigen technischen Rahmen für den Handel, der auf dieser Grundlage erweitert und optimiert werden kann, um eine stärkere Strategie zu 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])