Chaotische Handelsregeln Stop-Loss-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-07
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, einige wichtige Handelsmanagementregeln auf der Grundlage der RSI-Strategie hinzuzufügen, einschließlich Stop-Loss, Take-Profit, Trailing Stop-Loss und Leverage Tracking Stop-Loss. Dies ermöglicht es der Strategie, höhere Renditen während der Trendmärkte zu erzielen und Verluste während der Rangierungsmärkte im Backtest zu minimieren.

Strategie Logik

Die Strategie berechnet zuerst den RSI-Indikator. Sie geht lang, wenn der RSI unter dem Überverkauf liegt, und kurz, wenn der RSI über dem Überkauf liegt.

Wenn der Kurs unter den Stop-Loss-Punkt minus den Stop-Loss-Bereich fällt, wird die Position durch einen Stop-Loss geschlossen.

Wenn der Kurs über den Stop-Loss-Punkt plus den Stop-Loss-Bereich steigt, wird die Position durch Stop-Loss geschlossen.

Gleichzeitig werden feste Take-Profit- und Stop-Loss-Distanzen festgelegt. Wenn der Preis die Take-Profit-Distanz erreicht, nehmen Sie Profit zur Schließung der Position. Wenn er die Stop-Loss-Distanz erreicht, schließen Sie die Position durch Stop-Loss.

Darüber hinaus wird eine Stop-Loss-Linie für die Hebelverfolgung basierend auf der Hebelwirkung festgelegt.

Durch die Verfolgung des höchsten Preises während Aufwärtstrends und des niedrigsten Preises während Abwärtstrends, kombiniert mit festen Take-Profit- und Stop-Loss-Distanzen, können in Trendmärkten höhere Renditen erzielt werden.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die Einführung mehrerer Handelsmanagementregeln, die Risiken besser kontrollieren und gleichzeitig die Stärken der RSI-Strategie nutzen.

Die Vorteile sind insbesondere:

  1. Der Trailing Stop Loss kann dem Trend kontinuierlich folgen, um während der Trendmärkte einen höheren Gewinn zu erzielen.

  2. Fixed Take Profit und Stop Loss sperren einige Gewinne ein und verhindern, dass der vollständige Gewinn ausgelöscht wird, wenn sich der Trend umkehrt.

  3. Ein Stop-Loss mit Hebelwirkung hilft, Verluste zu vermeiden und das Risiko zu kontrollieren.

  4. Die Kombination verschiedener Stop-Loss-Methoden kann ihre Stärken in verschiedenen Marktumgebungen ausüben und die allgemeine Stabilität der Strategie verbessern.

  5. Eine flexible Anpassung der Strategieparameter passt zu verschiedenen Handelsinstrumenten und Marktumgebungen.

  6. Eine leicht verständliche Logik erleichtert die Überprüfung, Optimierung und Anwendung.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind folgende:

  1. Die RSI-Strategie selbst hat einige Whipsaw-Risiken, die einen Stop-Loss auslösen können.

  2. Oszillation um Stop-Loss-Punkte kann häufig zum Stop-Loss führen.

  3. Die Gewinnentfernung kann nicht vollständig in den Gewinnen während der Trending-Märkte verriegeln.

  4. Die Feststop-Loss-Distanz kann zu klein sein, um Verluste vollständig zu vermeiden.

  5. Übermäßige Hebelwirkung führt dazu, dass der Stop-Loss zu nahe am Einstiegspreis liegt.

  6. Eine Rückprüfungsperiode kann die künftigen Marktbedingungen möglicherweise nicht vollständig repräsentieren.

Die oben genannten Risiken können durch Parameter-Tuning, Optimierung von Stop-Loss-Mechanismen, Risikokontrolle usw. gemildert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Optimierung der RSI-Parameter zur Verringerung der Whipsaw-Trades und Prüfung der optimalen Parameter für verschiedene Märkte.

  2. Versuchen Sie andere Indikatoren wie KD, MACD kombiniert mit RSI Einträge zu filtern.

  3. Verwenden Sie maschinelles Lernen, um die Stop-Loss- und Take-Profit-Parameter dynamisch zu optimieren.

  4. Test kompliziertere Stop-Loss-Mechanismen wie schwingenden Stop-Loss, durchschnittlichen Stop-Loss, dynamischen Stop-Loss usw.

  5. Optimierung der Hebelwirkung und Untersuchung der Auswirkungen auf die Gewinn- und Risikokontrolle.

  6. Automatische Anpassung der Parameter basierend auf Marktveränderungen, wie α-Dual Thrust.

  7. Einbeziehung anderer Faktoren zur Bestimmung der Trendbeständigkeit, z. B. Volumenenergie.

  8. Verwenden Sie Deep-Learning-Modelle, um robustere und interpretierbarere Stop-Loss-Methoden zu entwickeln.

  9. Testdaten aus verschiedenen Instrumenten und Zeitabschnitten zur Bewertung der Strategiesicherheit.

Schlussfolgerung

Diese Strategie ergänzt die RSI-Strategie durch verschiedene Stop-Loss-Methoden, wodurch die doppelten Effekte des Stop-Loss bei der Gewinnung von Trends und der Kontrolle von Risiken voll ausgeschöpft werden. Es gibt immer noch viel Raum für Optimierung. Die Ideen können auf weitere Strategien und Handelsinstrumente ausgedehnt werden. Stop-Loss-Strategien sind eine gründliche Forschung wert und können nach kontinuierlicher Optimierung und Verifizierung zu einem sehr wichtigen Teil mechanischer Handelssysteme werden.


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

//@version=2
strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)

/////////////// Component Code Start ///////////////
testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2016, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
/////////////// Component Code Stop ///////////////

///////////// RSI component /////////////
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, length)
notna = not na(vrsi)

/////////////// STRATEGY ///////////////
ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100

long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)

last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=long_signal)
    strategy.entry("Short", strategy.short, when=short_signal)

    // plot(long_call, color=red)
    // plot(short_call, color=green)
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)

Mehr