Preis-Momentum-Trailing-Stop-Strategie


Erstellungsdatum: 2023-11-27 11:45:04 zuletzt geändert: 2023-11-27 11:45:04
Kopie: 0 Klicks: 627
1
konzentrieren Sie sich auf
1617
Anhänger

Preis-Momentum-Trailing-Stop-Strategie

Überblick

Die Strategie ermöglicht das Trend-Tracking von Stopps, indem sie die Dynamik der Preise berechnet und langfristige, bidirektionale Stopps festlegt, um Gewinne zu erzielen. Die Strategie kombiniert gleichzeitig die Aktivierungsstufe, die den Stopp erst nach Erreichen des angegebenen Gewinns verfolgt, und verhindert so die vorzeitige Stop.

Strategieprinzip

Berechnen Sie die 12-Zyklen-Dynamik des Preises, dann berechnen Sie die 1-Zyklen-Dynamik der Dynamik. Wenn die schnelle Dynamik (die 1-Zyklen-Dynamik der Preisbewegung) größer als 0 ist, machen Sie mehr, wenn sie kleiner als 0 ist.

Tracking Stop-Loss-Distanz und Tracking Stop-Loss-Aktivierungsniveau eingestellt. Tracking Stop-Loss-Distanz bedeutet, dass die Stop-Loss-Distanz auf die angegebene Distanz angepasst wird, wenn der Preis zu einem neuen Hoch oder zu einem neuen Tief läuft. Tracking Stop-Loss-Aktivierung bedeutet, dass die Stop-Loss-Aktivierung erst beginnt, wenn eine bestimmte Gewinnquote erreicht wurde.

Strategie, die Gewinne durch die Verfolgung der höchsten oder niedrigsten Preise zu verriegeln, um einen Ausstiegssignal zu senden, wenn der Preis über die eingestellte Stop-Loss-Distanz zurückgeht.

Strategische Stärkenanalyse

  1. Mit Hilfe der doppelten Dynamik kann die Richtung der Preisentwicklung genau ermittelt werden, wodurch die Anzahl der Geschäfte reduziert wird und eine Bestechung vermieden wird.

  2. Flexible Einstellungen zur Verfolgung von Stop-Loss-Distanzen, Risikominderung und Gewinnschließung.

  3. Die Stop-Loss-Aktivierungsstufe kann eingestellt werden, um zu verhindern, dass die Stop-Loss-Mechanismen nur nach Erreichen eines bestimmten Gewinns aktiviert werden.

  4. Es ist möglich, die Stop-Loss-Ebene für mehrere und leere Köpfe gleichzeitig einzustellen, um das Risiko vollständig zu kontrollieren.

  5. Die Berechnung ist einfach, effizient, leicht zu verstehen und umzusetzen.

Strategische Risikoanalyse

  1. Bei doppelter Dynamik kann es zu Rückschlüssen kommen, die in Kombination mit einem Trendfilter erforderlich sind.

  2. Eine übermäßige Einstellung der Stoppdistanz kann zu erheblichen Verlusten führen.

  3. Ein zu hoher Aktivierungswert kann zu einem verpassten Stopp führen.

  4. Weitere Parameter-Tests und Optimierungen sind erforderlich, um den optimalen Stop-Loss zu finden.

Es ist möglich, Fehlsignale zu reduzieren, indem Trends beurteilt und Parameter optimiert werden. Verschiedene Arten von Verträgen und Parameter-Einstellungen werden getestet, um die optimale Konfiguration zu finden.

Richtung der Strategieoptimierung

  1. In Kombination mit Marktstrukturierungskennzeichen, identifizieren Sie leere Tendenzen und vermeiden Sie Umkehrhandel.

  2. Weitere Zeiteingriffe, wie z. B. Änderungen des Handelsvolumens, Schrumpfungsbruch usw., werden hinzugefügt, um die Signalgenauigkeit zu verbessern.

  3. Optimierung der Parameter und Test der Leistung bei unterschiedlichen Stopp-Distanzen und Aktivierungsstufen.

  4. Berücksichtigen Sie die dynamische Verfolgung der Stop-Loss-Distanz, die sich automatisch an die Marktfluktuation anpasst.

  5. Ein partieller oder beweglicher Stopp kann eingestellt werden, um das Risiko weiter zu kontrollieren.

Zusammenfassen

Die Strategie hat eine klare Gesamtstruktur, beurteilt die Preisentwicklung anhand von doppelten Dynamikindikatoren, setzt einen flexiblen Stop-Loss-Tracking ein, um Gewinne zu sichern und das Handelsrisiko effektiv zu kontrollieren. Die Strategie ist leicht zu verstehen und umzusetzen, und es gibt Raum für Optimierung, indem mehr technische Indikatoren und Parameter-Tests hinzugefügt werden, um die Strategie-Performance weiter zu verbessern.

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

//@version=5
strategy("Trailing Stop Snippet", overlay=true)

length = input(12)
price = close
momentum(seria, length) =>
	mom = seria - seria[length]
	mom
mom0 = momentum(price, length)
mom1 = momentum( mom0, 1)

tsact = input.float(0.0, "Trailing Stop Activation |", group="strategy", tooltip="Activates the Trailing Stop once this PnL is reached.") / 100
tsact := tsact ? tsact : na
ts = input.float(0.0, "Position Trailing Stop |", group="strategy", tooltip="Trails your position with a stop loss at this distance from the highest PnL") / 100
ts := ts ? ts : na

in_long = strategy.position_size > 0
in_short = strategy.position_size < 0

var ts_ = array.new_float()
ts_size = array.size(ts_)
ts_get = ts_size > 0 ? array.get(ts_, ts_size - 1) : 0

if in_long
    if tsact and high > strategy.position_avg_price + strategy.position_avg_price * tsact
        if ts_size > 0 and ts_get < high
            array.push(ts_, high)
        if ts_size < 1
            array.push(ts_, high)
    if not tsact
        if ts_size > 0 and ts_get < high
            array.push(ts_, high)
        if ts_size < 1
            array.push(ts_, high)
if in_short
    if tsact and low < strategy.position_avg_price - strategy.position_avg_price * tsact
        if ts_size > 0 and ts_get > low
            array.push(ts_, low)
        if ts_size < 1
            array.push(ts_, low)
    if not tsact
        if ts_size > 0 and ts_get > low
            array.push(ts_, low)
        if ts_size < 1
            array.push(ts_, low)
    
trail = in_long and ts_size > 0 ? low < ts_get - ts_get * ts : in_short and ts_size > 0 ? high > ts_get + ts_get * ts : na

if (mom0 > 0 and mom1 > 0)
	strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and mom1 < 0)
	strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
	strategy.cancel("MomSE")

tsClose = in_long ? ts_get - ts_get * ts : in_short ? ts_get + ts_get * ts : na
if trail    
    strategy.close_all()
if not strategy.opentrades
	array.clear(ts_)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

plotchar(ts_get, "GET", "")
plot(strategy.position_avg_price > 0 ? strategy.position_avg_price : na, "Average", color.rgb(251, 139, 64), 2, plot.style_cross)
plot(tsClose > 0 ? tsClose : na, "Trailing", color.rgb(251, 64, 64), 2, plot.style_cross)
plot(strategy.position_avg_price - strategy.position_avg_price * tsact > 0 ? strategy.position_avg_price - strategy.position_avg_price * tsact : na, "TS Activation", color.fuchsia, 2, plot.style_cross)