Trendfolgende Kauf- und Verkaufsstrategien


Erstellungsdatum: 2023-10-17 12:59:59 zuletzt geändert: 2023-10-17 12:59:59
Kopie: 0 Klicks: 628
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgende Kauf- und Verkaufsstrategien

Überblick

Eine Trend-Follow-Buy-Sell-Strategie ist eine einfache Trend-Follow-Day-Trading-Strategie. Die Grundidee dieser Strategie ist es, die Richtung des Trends anhand eines beweglichen Durchschnitts zu bestimmen und bei Schwankungen im Trend zu kaufen und zu verkaufen.

Strategieprinzip

Die Strategie verwendet einen einfachen Moving Average SMA, um die Richtung des Trends zu bestimmen. In einem Aufwärtstrend, wenn die K-Linie einen Tiefpunkt aufweist, wird die Strategie mehr tun, wenn sie den höchsten Punkt der vorherigen K-Linie durchbricht.

Die Strategie nutzt auch Blanchflower Intensitätsindikatoren%K und%D für Trendbeurteilungen. Wenn%K über%D geht, wird der Kurs gegenwärtig platziert. Zusätzlich nutzt die Strategie die MACD- und Signalkurve als Filterbedingungen und führt nur dann Geschäfte aus, wenn MACD und Signal der Trendrichtung entsprechen.

Die Strategie kann nur mehr, nur leere oder gleichzeitig mehr leere. Die Startdaten können den Monat und das Jahr eingestellt werden, in dem die Rückmessung beginnt. Alle Parameter wie die Moving Average-Periode, die K-Periode, die D-Periode, die MACD-Parameter usw. können benutzerdefiniert werden.

Analyse der Stärken

  • Die Verwendung von Moving Averages zur Bestimmung der Trendrichtung kann Schwankungen wirksam filtern und Fehlhandlungen vermeiden.
  • Die Anwendung des Blanchflower-Indikators ermöglicht die zeitnahe Beurteilung einer Trendwende zur Risikokontrolle
  • MACD- und Signal-Filter reduzieren den Noise-Handel, der nicht in die Richtung des Trends passt
  • Anpassbare Parameter, um das Preisverhalten verschiedener Sorten anzupassen
  • Sie können nur mehr, nur weniger oder in zwei Richtungen handeln und flexibel an die Marktbedingungen angepasst werden.

Risikoanalyse

Diese Strategie birgt folgende Risiken:

  • Das Risiko, dass ein großer Bruch des Moving Averages zu großen Verlusten führt. Um das Risiko zu verringern, kann der Moving Average-Zyklus entsprechend vergrößert werden.
  • Häufige Transaktionen in einem schwankenden Trend führen zu Overtrading. Sie können die %K-Zyklen erhöhen, um die Handelsfrequenz zu verringern.
  • Wenn die MACD- und Signal-Parameter nicht korrekt eingestellt sind, ist die Filterung ungültig. Die Parameter sollten nach der jeweiligen Sorte optimiert werden.
  • Bei bilateralen Geschäften haben sich überflüssige Positionen angesammelt, was zu großen Verlusten geführt hat. Die Größe der Positionen sollte begrenzt werden.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  • Optimierung der Periodizität der Moving Averages, um Schwingungen zu filtern, während die Trendentscheidung beibehalten wird
  • Optimierung der Parameter %K, %D, Whipsaw-Reduktion bei gleichzeitiger Aufrechterhaltung der Trendwende
  • Optimierung der MACD-Parameter, um ihre Filterwirkung zu verbessern und Noise-Transaktionen zu reduzieren
  • Erhöhung der Positionskontrolle, z. B. durch die Eröffnung einer festen Anzahl von Positionen oder durch die Erhöhung der Floating-Position
  • Erhöhung der Stop-Loss-Strategien, wie beispielsweise Bewegungsstop, Zeitstop, ATR-Stop

Zusammenfassen

Die Gesamtkonzeption der Trend-Tracking-Kaufstrategie ist klar und einfach, die Richtung der Tendenz wird durch die Bewegung des Durchschnitts beurteilt und die Indikatorfilter werden verwendet, um die Handelschancen in der Tendenz zu sperren. Die Strategie kann durch Parameteroptimierung gute Ergebnisse erzielen, benötigt aber immer noch die Combine-Code-Package, um das optimierte Risiko zu reduzieren und die Stabilität zu verbessern.

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

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

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