Bewegung Stop Loss Tracking Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-03 16:15:29
Tags:

img

Übersicht

Diese Strategie verwendet den Stoch-Indikator, um Eintrittssignale zu generieren. Nach dem Eintritt in eine Position wird es neue Höchst- oder Tiefstände in Echtzeit verfolgen, um den Stop-Loss dynamisch anzupassen. Gleichzeitig sendet die Strategie auch Stop-Loss-Modifikationsinformationen an MT4/MT5 über die Alarmfunktion, um Positionen im realen Handel anzupassen.

Strategieprinzip

  1. Die Strategie erzeugt Kauf- und Verkaufssignale basierend auf dem Stoch-Indikator. Wenn die Stoch-K-Linie von unten über die D-Linie kreuzt, wird ein Kaufsignal erzeugt. Wenn die K-Linie von oben unter die D-Linie kreuzt, wird ein Verkaufssignal erzeugt.

  2. Nach dem Eintreten einer Position verfolgt die Strategie den letzten Tiefpunkt des niedrigsten Preises und den letzten Höchstpunkt des höchsten Preises in Echtzeit als dynamische Stop-Loss-Level.

  3. Wenn eine Änderung des Stop-Loss-Niveaus erkannt wird, generiert die Strategie über die Alarmfunktion einen Modifizierungs-Stop-Loss-Auftrag und sendet ihn an MT4/MT5, um das Stop-Loss-Niveau der tatsächlichen Trades in Echtzeit anzupassen.

  4. Diese Strategie unterstützt die manuelle Steuerung, ob der dynamische Stop-Loss-Mechanismus aktiviert wird.

Analyse der Vorteile

  1. Der dynamische Trailing-Stop-Loss-Mechanismus kann die Stop-Loss-Level flexibel an die Marktschwankungen anpassen, um die Risiken wirksam zu kontrollieren.

  2. Die Warnfunktion ermöglicht die Echtzeitübermittlung von Stop-Loss-Anpassungsinformationen an den MT4/MT5 für die automatisierte Verwaltung ohne manuelles Eingreifen.

  3. Die visuellen Anmerkungen der Stop-Loss-Anpassungen auf dem Diagramm erleichtern die Ansicht und Überprüfung der nachfolgenden Stop-Loss-Effekte.

  4. Die Unterstützung der manuellen Steuerung des Stop-Loss-Trailing-Mechanismus ermöglicht eine flexible Anpassung an unterschiedliche Marktbedingungen.

  5. In Kombination mit dem Stoch-Indikator zur Ermittlung von Chancen kann die Strategie falsche Ausbrüche effektiv filtern und die Stabilität verbessern.

Risikoanalyse

  1. Der Stoch-Indikator kann häufige Crossover-Signale erzeugen, wodurch die Gefahr von ineffizienteren Operationen besteht.

  2. In extremen Marktbedingungen können Stop-Losses eingeholt werden, so dass große Verluste nicht vollständig vermieden werden können.

  3. Es kann zu Verbindungsproblemen wie Unterbrechungen und Verzögerungen kommen, die das Echtzeitfeedback von Anpassungen verhindern.

  4. Der dynamische Trailing Stop Loss erfordert relativ häufige Anpassungen, die möglicherweise höhere Handelskosten mit sich bringen.

Optimierungsrichtlinien

  1. Es können verschiedene Parameterkombinationen getestet werden, um den Stoch-Indikator für eine bessere Signalqualität und Strategieleistung zu optimieren.

  2. Andere Indikatoren können kombiniert werden, um Signale zu filtern oder Anpassungsbereiche zu bestimmen, um die Strategie-Stabilität zu verbessern.

  3. Verschiedene Tracking-Algorithmen können untersucht werden, um die Anpassungsfrequenz zu reduzieren und gleichzeitig Stopp-Loss-Effekte zu gewährleisten.

  4. Die Verbindungsmethoden mit MT4/MT5 können verbessert werden, um zeitnahe und effiziente Warnungen zu gewährleisten und Verzögerungen zu minimieren.

  5. Automatische und manuelle Stop-Loss-Modi können für die Verwendung verschiedener Mechanismen unter unterschiedlichen Marktbedingungen eingeführt werden.

Zusammenfassung

Diese Strategie bestimmt zunächst Handelschancen auf Basis des Stoch-Indikators, verfolgt dann die Kursschwankungen während der Positionen, um die Stop-Loss dynamisch anzupassen, und gibt automatisch Anpassungsinformationen über Alarmorder heraus. Ein solcher dynamischer Mechanismus ermöglicht ein aktives Positionsrisikomanagement gemäß Marktveränderungen mit weniger manuellem Eingreifen. In der Zwischenzeit erleichtern die intuitiven Stop-Loss-Annotationen auch die Überwachung. Weitere Optimierungen der Signalfilterung und der Trailing-Algorithmen können die Rentabilität verbessern. Insgesamt eignet sich die dynamische Trailing-Stop-Loss-Strategie für die Verfolgung von volatilen Märkten und das automatisierte Positionsrisikomanagement.


/*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)


Mehr