Dynamische Stop-Loss-Trailing-Strategie


Erstellungsdatum: 2024-01-03 16:15:29 zuletzt geändert: 2024-01-03 16:15:29
Kopie: 0 Klicks: 596
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische Stop-Loss-Trailing-Strategie

Überblick

Die Strategie verwendet Stoch-Indikatoren, um Eintrittssignale zu ermitteln. Nach dem Eintritt wird der Preis in Echtzeit neu hoch oder neu niedrig verfolgt, wodurch die Stop-Loss-Position dynamisch angepasst wird. Gleichzeitig wird die Strategie über die Alert-Funktion die Informationen zur Stop-Loss-Änderung an die MT4/MT5 senden, um die Position im echten Handel in Echtzeit anzupassen.

Strategieprinzip

  1. Die Strategie basiert auf Stochs Indikatoren, die ein Kauf- und Verkaufssignal erzeugen, wenn Stochs K-Linie die D-Linie von unten durchbricht; ein Verkaufssignal, wenn Stochs K-Linie die D-Linie von oben durchbricht.

  2. Nach dem Eintritt in den Markt verfolgt die Strategie in Echtzeit die neuesten Tiefstpreise und die neuesten Höchstpreise der niedrigsten Preise als dynamische Stop Losses. Insbesondere wird der neueste Tiefstpreis der niedrigsten Preise als Stop Losses verfolgt, wenn mehrere Bestellungen getätigt werden.

  3. Wenn eine Änderung der Stop-Loss-Leistung erkannt wird, erzeugt die Strategie eine modifizierte Stop-Loss-Anweisung über die Alert-Funktion, die an die MT4/MT5 gesendet wird, um die Stop-Loss-Leistung im realen Handel in Echtzeit anzupassen. Gleichzeitig werden Grafiken markiert, um die Stop-Loss-Veränderung visuell anzuzeigen.

  4. Die Strategie unterstützt die manuelle Kontrolle, ob ein dynamischer Stop-Loss-Mechanismus aktiviert ist. Sobald er aktiviert ist, kann der Stop-Loss-Tracking-Preis in Echtzeit an die Marktschwankungen angepasst werden.

Analyse der Stärken

  1. Durch den Einsatz eines dynamischen Stop-Tracking-Mechanismus kann der Stop-Loss-Bereich flexibel an die Marktfluktuation angepasst werden, wodurch Stop-Tracking und eine effektive Risikokontrolle ermöglicht werden.

  2. Mit Hilfe der Alert-Funktion können Stop-Loss-Anpassungs-Informationen in Echtzeit an MT4/MT5 gesendet werden, um eine automatisierte Verwaltung zu ermöglichen, ohne dass eine manuelle Intervention erforderlich ist.

  3. Die Stop-Loss-Adjustment-Informationen werden intuitiv auf der Grafik angezeigt, um die Stop-Loss-Tracking-Effekte zu sehen und zu überprüfen.

  4. Unterstützt manuelle Kontrolle, ob ein Stop-Loss-Tracking-Mechanismus aktiviert ist, flexibel an unterschiedliche Marktbedingungen angepasst.

  5. In Kombination mit dem Stoch-Kennzeichen kann die Zeitmessung die falschen Durchbrüche wirksam filtern und die Strategie stabilisieren.

Risikoanalyse

  1. Stoch-Indikatoren können häufig gekreuzt werden, was die Gefahr von weiteren ungültigen Operationen mit sich bringt. Die Parameter können entsprechend angepasst werden, um die Signale zu filtern.

  2. In extremen Situationen kann der Stop-Loss überschritten werden, wodurch die Gefahr eines massiven Verlusts nicht vollständig vermieden werden kann.

  3. Alarm-Verbindungen können unterbrochen oder verzögert werden, es ist nicht möglich, die Ergebnisse in Echtzeit zu korrigieren.

  4. Die dynamische Verfolgung von Stop-Losses erfordert relativ intensive Anpassungen, die möglicherweise zu höheren Transaktionskosten führen. Die Anpassungsbreite sollte mit den Kosten in Einklang gebracht werden.

Optimierungsrichtung

  1. Verschiedene Parameterkombinationen können getestet werden, um die Stoch-Kennzahlen zu optimieren und so bessere Signalqualität und Strategieeffekte zu erzielen.

  2. In Kombination mit anderen Indikatoren können Filtersignale oder Anpassungsbreiten festgelegt werden, um die Stop-Loss-Mechanismen zu optimieren und die Strategie zu verbessern.

  3. Es können verschiedene Tracking-Algorithmen erforscht werden, die eine Stop-Loss-Effizienz gewährleisten, während die Anpassungsfrequenz reduziert wird.

  4. Die Verbindung zu MT4/MT5 kann optimiert werden, um eine zeitnahe und effiziente Alarmierung zu gewährleisten und die Verzögerung zu reduzieren.

  5. Es kann ein automatischer Stop-Loss-Modus und ein manueller Moduswechsel eingeführt werden, wobei unterschiedliche Stop-Loss-Mechanismen für unterschiedliche Marktbedingungen verwendet werden.

Zusammenfassen

Diese Strategie ermittelt zuerst den Zeitpunkt des Kaufs und Verkaufs anhand der Stoch-Indikatoren und verfolgt dann in Echtzeit die Preisschwankungen, um die Stop-Loss-Position zu korrigieren, und sendet die Korrekturmitteilungen über die automatische Ausgabe von Alarm-Anweisungen. Diese dynamische Stop-Loss-Mechanik kann das Positionsrisiko proaktiv nach Marktveränderungen verwalten und die Effizienz von künstlichen Interventionen reduzieren.

Strategiequellcode
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
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/
// © Peter_O

//@version=4
strategy(title="Moving Stop-Loss mechanism", overlay=true)

// This script was created for educational purposes only and it is a spin-off of my previous script:
// https://www.tradingview.com/script/9MJO3AgE-TradingView-Alerts-to-MT4-MT5-dynamic-variables-NON-REPAINTING/
// This spin-off adds very often requested Moving Stop-Loss Mechanism - the logic here moves the stop-loss each time 
// a new pivot is detected.
//
// Last lines of the script include alert() function calls, with a syntax compatible with TradingConnector
// for execution in Forex/indices/commodities/crypto markets via MetaTrader.
// Please note that "tradeid=" variable must be passed with each alert, so that MetaTrader knows which
// trade to modify.

TakeProfitLevel=input(400)

// **** Entries logic, based on Stoch **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph

plot(stoploss_long, color=color.red, title="stoploss_long")
plot(stoploss_short, color=color.lime, title="stoploss_short")

// Stop-Loss Updating mechanism
enable_stoploss_mechanism=input(true, title="Enable Stoploss Modification Mechanism")
UpdateLongStopLoss = strategy.position_size>0 and strategy.position_size[1]>0 and piv_low and pl!=stoploss_long and not GoLong and enable_stoploss_mechanism
UpdateShortStopLoss = strategy.position_size<0 and strategy.position_size[1]<0 and piv_high and ph!=stoploss_short and not GoShort and enable_stoploss_mechanism
if UpdateLongStopLoss
    stoploss_long := pl
if UpdateShortStopLoss
    stoploss_short := ph

plotshape(UpdateLongStopLoss ? stoploss_long[1]-300*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.lime, textcolor=color.white, text="SL\nmove")
plotshape(UpdateShortStopLoss ? stoploss_short[1]+300*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.red, textcolor=color.black, text="SL\nmove")
// } End of Pivot-points and stop-loss logic

// **** Trade counter **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1
// } End of Trade counter

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if UpdateLongStopLoss
    alertsyntax_updatelongstoploss='slmod slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updatelongstoploss, freq=alert.freq_once_per_bar_close)
if UpdateShortStopLoss
    alertsyntax_updateshortstoploss='slmod slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updateshortstoploss, freq=alert.freq_once_per_bar_close)