Trend der Kauf- und Verkaufsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-17 12:59:59
Tags:

img

Übersicht

Die Trend Following Buy and Sell Strategie ist eine einfache Trend Following Day Trading Strategie, deren Prämisse darin besteht, die Trendrichtung auf der Grundlage des gleitenden Durchschnitts zu bestimmen und die Dips und Blips im Trend zu kaufen/verkaufen.

Strategie Logik

Die Strategie verwendet den einfachen gleitenden Durchschnitt (SMA) zur Bestimmung der Trendrichtung. In einem Aufwärtstrend, wenn die Kerzenaktion einen dip bietet, wird die Strategie lang gehen, wenn das Hoch der aktuellen Kerze das Hoch der vorherigen Kerze bricht. In einem Abwärtstrend, wenn die Kerzenaktion einen blip bietet, wird die Strategie kurz gehen, wenn das Tief der aktuellen Kerze das Tief der vorherigen Kerze bricht.

Die Strategie verwendet auch %K und %D des Blanchflower-Oszillators zur Trendbestimmung. Sie schließt die Position und handelt in die entgegengesetzte Richtung, wenn %K über %D überschreitet. Darüber hinaus fungieren MACD und Signal-Linie als Filter, um nur Trades zu nehmen, die mit der von MACD und Signal festgelegten Trendrichtung übereinstimmen.

Die Strategie kann nur lang, nur kurz oder beides sein. Der Startmonat und das Jahr erlauben das Backtesting von diesem Zeitpunkt bis jetzt. Alle Parameter wie SMA-Periode, %K-Periode, %D-Periode, MACD-Parameter usw. sind anpassbar.

Analyse der Vorteile

  • Die Verwendung von SMA zur Bestimmung des Trends vermeidet Schlagsägen und falsche Trades
  • Die Anwendung des Blanchflower-Oszillators erkennt rechtzeitig eine Trendumkehr und kontrolliert das Risiko
  • MACD und Signalfilter verringern den Trendsinn
  • Anpassbare Parameter passen sich unterschiedlichen Preisverhaltens an
  • Nur Long-, Nur-Short- oder Bidirektionshandel passt sich den Marktbedingungen an

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  • Ein hohes Verlustrisiko durch starke Durchdringung von SMA kann die SMA-Periode verlängern, um das Risiko zu senken.
  • Häufiger Handel und Überhandel auf einem Bereichsmarkt. Kann die %K-Periode verlängern, um die Handelshäufigkeit zu reduzieren.
  • Unwirksame Filterung aufgrund schlechter MACD- und Signalparameter.
  • Akkumulierte große Positionen aus Doppelrichtungshandel verursachen Verluste.

Möglichkeiten zur Verbesserung

Die Strategie kann in folgenden Bereichen verbessert werden:

  • Optimieren Sie die SMA-Periode, um Whipsaw zu filtern und gleichzeitig die Trenderkennungsfähigkeit zu erhalten
  • Optimieren Sie die Parameter %K, %D, um Trendumkehrungen zu erfassen und gleichzeitig Whipsaws zu reduzieren
  • Optimierung der MACD-Parameter für eine effizientere Geräuschfilterung
  • Hinzufügen von Positionsgrößenkontrolle, z. B. feste Menge, variabler Anteil an Eigenkapital usw.
  • Hinzufügen von Stop-Loss-Mechanismen, z. B. Trailing-Stop, Time-Stop, ATR-Stop usw.

Schlussfolgerung

Die Trend Following Buy and Sell Strategy hat eine einfache und unkomplizierte Logik, um Pullbacks in Trends zu handeln, die von SMA identifiziert und durch Indikatoren gefiltert werden. Feinsteuningparameter und Risikokontrollen können zu anständigen Ergebnissen führen, aber Combine-Encapsulation ist immer noch erforderlich, um Überanpassung zu verhindern und die Robustheit zu verbessern. Insgesamt ist es eine praktische Intraday-Handelsstrategie.


/*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)


Mehr