Dynamischer Wiedereintritt - Strategie nur zum Kauf

Schriftsteller:ChaoZhang, Datum: 2023-12-19
Tags:

img

Übersicht

Bei dieser Strategie handelt es sich um ein Kauf-nur-Handelssystem, das Kaufsignale auf der Grundlage von gleitenden Durchschnitts-Crossovers und dem wöchentlichen Commodity Channel Index (CCI) oder dem wöchentlichen Durchschnitts-Richtungsindex (ADX) erzeugt. Es erzeugt Kaufsignale, wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt überschreitet und wenn der wöchentliche CCI und/oder der wöchentliche ADX bestimmte Bedingungen erfüllen.

Die Strategie ermöglicht auch einen dynamischen Wiedereintritt, was bedeutet, dass sie neue Long-Positionen eröffnen kann, wenn der Preis nach einem Ausgang über die drei gleitenden Durchschnitte geht.

Strategieprinzip

Das Skript definiert die Bedingungen für die Erzeugung von Kaufsignalen und überprüft zwei Bedingungen für ein gültiges Kaufsignal:

  • Der schnelle gleitende Durchschnitt überschreitet den langsamen gleitenden Durchschnitt
  • Der Benutzer kann wählen, ob er die Trades mit dem wöchentlichen CCI oder dem wöchentlichen ADX filtern möchte.

Dynamischer Wiedereintritt:Wenn keine aktive Long-Position besteht und der Preis über allen drei gleitenden Durchschnitten liegt, wird eine neue Long-Position eröffnet.

Ausgangszustand:Wenn der Schlusskurs unter den dritten gleitenden Durchschnitt fällt, schließt das Skript die Longposition.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Verwendung mehrerer technischer Indikatoren zur Filterung von Signalen verringert die Anzahl falscher Signale
  2. Der dynamische Wiedereintrittsmechanismus maximiert die Erfassung von Trends
  3. Nur lange Zeit zu verbringen, vermeidet die Gefahr von Kurzlauf

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Es besteht ein gewisses Risiko von Whipsaws.
  2. Lange Wartezeiten können zu lang sein, so dass Stopps erforderlich sind
  3. Schlechte Einstellungen von Parametern können zu häufigen Handel führen

Lösungen:

  1. Verwenden Sie bessere Kombinationen von Parametern und Indikatoren, um zu filtern
  2. Festlegen angemessener Stop-Losses
  3. Anpassung der Parameter zur Gewährleistung der Stabilität

Optimierungsrichtlinien

Diese Strategie kann optimiert werden, indem

  1. Test mehrer technischer Indikatorenkombinationen, um bessere Zeitpunkte für den Einstieg zu finden
  2. Optimierung von Parametern zur Suche nach den besten Parameterkombinationen
  3. Hinzufügen von Stop-Loss-Mechanismen zur Kontrolle einzelner Verluste
  4. Hinzufügen von Positionsdimensionierung zu Erhöhung/Verringerung von Positionen basierend auf Marktbedingungen

Zusammenfassung

Diese dynamische Re-Entry-Buy-Only-Strategie integriert mehrere technische Indikatoren, um den Eintrittszeitpunkt zu bestimmen, und übernimmt ein dynamisches Re-Entry-Design, um Trends in Echtzeit zu verfolgen.


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

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


Mehr