Strategie für den Handel mit Kryptowährungen auf Basis von MACD- und Stochastikindikatoren

Schriftsteller:ChaoZhang, Datum: 2024-02-01 11:52:15
Tags:

img

Übersicht

Diese Strategie ist eine Kryptowährungshandelsstrategie, die auf einer Kombination aus dem MACD-Indikator und den stochastischen Indikatoren basiert.

Strategie Logik

Die Strategie berechnet zunächst den MACD-Indikator. Der MACD steht für Moving Average Convergence Divergence, ein Trend-Folgende Indikator. Er besteht aus einer schnellen Linie und einer langsamen Linie, wobei die schnellen Linie ein kurzfristiger exponentieller gleitender Durchschnitt ist und die langsame Linie ein längerfristiger exponentieller gleitender Durchschnitt. Wenn die schnelle Linie über die langsame Linie überschreitet, erzeugt sie ein goldenes Kreuzsignal, was auf einen bullischen Markt hinweist. Wenn die schnelle Linie unter der langsamen Linie überschreitet, erzeugt sie ein Todeskreuzsignal, was auf einen bärischen Markt hinweist.

Nach der Berechnung des MACD-Indikators wird der stochastische Indikator %K auf den MACD selbst angewendet.

%K = (Jährlicher Schlussprozess - niedrigster Tiefpunkt über N-Perioden) / (höchster Tiefpunkt über N-Perioden - niedrigster Tiefpunkt über N-Perioden) * 100

Der stochastische Indikator spiegelt die Preisentwicklung von seinem jüngsten Bereich wider. Die Schwankung von %K zwischen 20-80 zeigt, dass der Preis in Konsolidierung gehandelt wird. Wenn %K von unten über 20 überschreitet, erzeugt er ein Kaufsignal. Wenn %K von oben unter 80 überschreitet, erzeugt er ein Verkaufssignal.

Diese Strategie kombiniert die Handelssignale sowohl des MACD als auch des stochastischen %K, um auf dem Kryptowährungsmarkt zu handeln. Sie erzeugt ein Kaufsignal, wenn %K über 20 und ein Verkaufssignal, wenn %K unter 80 geht.

Vorteile der Strategie

Diese Strategie kombiniert Trendanalyse und Überkauf-Überverkauft-Indikatoren, die wichtige Wendepunkte auf dem Markt effektiv identifizieren können.

Darüber hinaus wendet diese Strategie technische Indikatoren an, die häufig an Aktienmärkten für den Handel mit Kryptowährungen verwendet werden. Dies ist eine marktübergreifende Anwendung. Diese Indikatoren sind auf dem digitalen Währungsmarkt gleichermaßen anwendbar und können aufgrund der hohen Volatilität von Kryptowährungen sogar besser abschneiden.

Risiken und Lösungen

Das größte Risiko dieser Strategie ist die hohe Volatilität auf dem Kryptowährungsmarkt, die leicht zu falschen Signalen führt und zu Handelsverlusten führt.

Um diese Risiken zu kontrollieren, ist es ratsam, einen beweglichen Stop Loss zu verwenden, um Gewinne zu erzielen und weitere Verluste zu vermeiden.

Optimierungsrichtlinien

Erstens kann die Strategie versuchen, gleitende Durchschnitte mit Volatilitätsindikatoren wie Bollinger Bands zu kombinieren und Volatilitätsparameter festzulegen, um die Gültigkeit von Ausbrüchen zu ermitteln und falsche Signale zu vermeiden.

Zweitens können maschinelle Lernmodelle eingeführt werden, um auf historischen Daten zu trainieren und zufällige Wald- oder LSTM-Netzwerkmodelle zu erstellen, um die Wirksamkeit von Indikatorsignalen zu beurteilen.

Wenn sich die Preise über einen bestimmten Bereich in eine ungünstige Richtung bewegen, lösen Sie automatisch einen Stop-Loss aus, um Risiken zu kontrollieren.

Schlussfolgerung

Diese Strategie kombiniert den MACD-Indikator und den stochastischen Indikator %K und verwendet die Methode der gegenseitigen Überprüfung von Signalen von zwei Indikatoren, um eine Kryptowährungs-Handelsstrategie zu formulieren. Diese Kombinationsindikatorstrategie kann die Genauigkeit der Signale bis zu einem gewissen Grad verbessern.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source", defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

upper = input(75, defval=75)
lower = input(25, defval=25)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

//alertcondition(long_final, "Long", message="Long")
//alertcondition(short_final,"Short", message="Short")

//plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
//plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)


Mehr