Strategie zur Verfolgung von Trends mit mehreren Indikatoren

Schriftsteller:ChaoZhang, Datum: 23.09.2023 15:19:46
Tags:

Übersicht

Diese Strategie integriert mehrere Indikatoren zur Trendenkennung und erzeugt Handelssignale auf der Grundlage ausgerichteter Richtungsänderungen.

Strategie Logik

Die Kernindikatoren sind:

  1. Beweglicher Durchschnittsgeschwindigkeit: spiegelt die Kursdynamik wider.

  2. STOCH: Überverkauft/übergekauft aufgrund von Trendänderungen.

  3. MACD: Trendveränderungen von zwei gleitenden Durchschnitten.

Die Handelsregeln sind:

  1. Steigende gleitende Durchschnittsgeschwindigkeit gibt ein bullisches Signal.

  2. STOCH in einer überkauften Zone gibt ein bärisches Signal.

  3. Ein positiver MACD-Crossover gibt ein bullisches Signal.

  4. Geben Sie ein, wenn zwei Indikatoren die Signale ausrichten.

  5. Aussteigen, wenn sich die Signale ändern.

Die Kombination bewertet den Trend aus mehreren Dimensionen und filtert Geräusche nach Signalen mit hoher Überzeugung.

Vorteile

Im Vergleich zu einzelnen Indikatoren hat die Kombinationsstrategie folgende Vorteile:

  1. Die Kombination verbessert die Genauigkeit.

  2. Das Filtern reduziert die falschen Signale.

  3. Die Angaben sind in der Tabelle zu entnehmen.

  4. Ausgerichtete Signale haben eine hohe Überzeugungskraft und vermeiden falsche Ausbrüche.

  5. Einfache und klare Regeln, leicht umzusetzen.

  6. Flexible Parameter-Ausrichtung, Robustheit.

  7. Anwendbar für verschiedene Zeitrahmen.

  8. Kann Indikatorgewichte mit maschinellem Lernen trainieren.

  9. Insgesamt bessere Stabilität und Rentabilität als einzelne Indikatoren.

Risiken

Trotz der Vorzüge sind folgende Risiken zu berücksichtigen:

  1. Erhöhte Komplexität mit mehreren Indikatoren.

  2. Herausfordernde Optimierung und Gewichtung von Parametern.

  3. Es können widersprüchliche Indikatorsignale auftreten.

  4. Es gibt immer eine gewisse Verzögerung, man kann nicht alle Verluste vermeiden.

  5. Unsichere einseitige Wartezeit mit Glücksfaktor.

  6. Zusammengefasste Signale können die inhärenten Trendhandelsrisiken nicht beseitigen.

  7. Eine hohe Handelsfrequenz erhöht die Transaktionskosten.

  8. Wir müssen das Verhältnis von Gewinn und Risiko überwachen.

Verbesserungen

Auf der Grundlage der Analyse können Verbesserungen Folgendes beinhalten:

  1. Bewertung der Wirksamkeit der Indikatoren auf verschiedenen Märkten.

  2. Hinzufügen von Parameterrobustheitsprüfungen zur Vermeidung von Überanpassung.

  3. Optimierung der Indikatorgewichte zur Verringerung von Konflikten.

  4. Umfangreiche Verluste zu begrenzen.

  5. Zeit-Ausgänge zur Steuerung unbegrenzter Aufbewahrungszeiten.

  6. Bewertung der Auswirkungen der Handelsfrequenz auf die Transaktionskosten.

  7. Einbeziehung von Risikometriken.

  8. Test der Robustheit auf mehreren Märkten.

  9. Kontinuierliche Validierung der Wirksamkeit der Strategie.

Schlussfolgerung

Diese Strategie bildet stabile Ensemble-Signale durch die Integration mehrerer Indikatoren für die Trendbewertung. Aber kontinuierliche Optimierung ist der Schlüssel für jede Strategie, Überwachung von Risiken und Verhinderung von Überanpassung.


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

// By TradeStation
//@version=5

strategy("Mov Avg Speed Strategy", overlay=true)

src = input(close, title="Source")

// MA Speed  
avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed")
roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed")
avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed")

// Stochastic
stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic")
smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic")
overbought = input.float(80, title="Stochastic Overbought", group="Stochastic")
oversold = input.float(20, title="Stochastic Oversold", group="Stochastic")

// MACD
fast_length = input(12, title="Fast Length", group="MACD")
slow_length = input(26, title="Slow Length", group="MACD")
macd_avg_length = input.int(9, title="MACD Avg Length",  minval=1, group="MACD")

// MA Speed
avg = ta.sma(src, avg_len)
roc = ta.roc(avg, roc_len)
avg_roc = ta.sma(roc, avg_roc_len)
avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 

// Stochastic k
k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k)
stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0

// MACD
fast_ma = ta.ema(src, fast_length)
slow_ma = ta.ema(src, slow_length)
macd = fast_ma - slow_ma
macd_avg = ta.ema(macd, macd_avg_length)
macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0

// set the signal couint
long_count = 0
short_count = 0

if macd_signal == 1
    long_count += 1

else if macd_signal == -1
    short_count += 1
 
if stochastic_signal == 1
    long_count += 1

else if stochastic_signal == -1
    short_count += 1
 
if avg_roc_signal == 1
    long_count += 1

else if avg_roc_signal == -1
    short_count += 1

if (long_count >= 2)
    strategy.entry("Long", strategy.long)

if (short_count >= 2)
    strategy.entry("Short", strategy.short)

Mehr