Handelsstrategie für Trend-bewegliche Durchschnittswerte

Schriftsteller:ChaoZhang, Datum: 2021-09-21
Tags:

Übersicht

Diese Strategie verwendet eine Kombination aus schnellen und langsamen gleitenden Durchschnitten, um die Trendrichtung zu bestimmen und die mittelfristigen bis langfristigen Trends für den Trendhandel zu erfassen.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf das goldene Kreuz und das Todeskreuz der gleitenden Durchschnitte, um Markttrends zu bestimmen.

Wenn der schnelle MA über den langsamen MA überschreitet, signalisiert dies einen Aufwärtstrend auf dem Markt, und die Strategie wird bei der Öffnung der nächsten Bar lang gehen.

Darüber hinaus ist der bars-Parameter so eingestellt, dass er falsche Ausbrüche ausfiltert. Der Standardwert ist 2, was bedeutet, dass der schnelle MA 2 aufeinanderfolgende Bars über dem langsamen MA schließen muss, bevor ein langes Signal ausgelöst wird. Dies verhindert falsche Ausbrüche effektiv.

Für den Kryptohandel beinhaltet die Strategie auch eine extreme Wertlogik - nur wenn sowohl schnelle als auch langsame MAs extreme Bereiche erreichen, werden Handelssignale ausgelöst.

Die Exit-Regel ist einfach und direkt - Schließposition, wenn der Stop-Loss erreicht wird.

Vorteile

  • Das Dual-MA-System kann Trends effektiv verfolgen
  • Die schnelle MA reagiert schnell auf Trendänderungen
  • Der langsame MA bestimmt die Gesamtrichtung
  • Der Parameter bars filtert einige falsche Ausbrüche aus
  • Extreme-Wert-Guardiers vermeiden sporadische falsche Signale um kritische Punkte
  • Bewegtes Stop-Loss verwaltet Risiken

Risiken

  • Bei Trendumkehrungen verlieren Dual-MA-Systeme tendenziell
  • Bewegliche Stop-Loss können vorzeitig eingestellt werden
  • Der bars-Filter kann einige gültige Signale übersehen
  • Extreme Wertwächter verpassen gelegentlich gute Einträge.
  • Die Strategie funktioniert besser auf stark trendigen Märkten

Die Risiken können verringert werden, indem

  • Optimierung des Parameters bars
  • Hinzufügen anderer Filter wie MACD
  • Anpassung der Stop-Loss-Levels, um vorzeitiges Stop-Out zu vermeiden
  • Überlegungen zur Wiedereinreise

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Abstimmung der MA-Parameter

Test mehr MA-Kombinationen, um die optimalen Parameter für den aktuellen Markt zu finden, z. B. 10-Perioden-schnelle MA und 50-Perioden-langsamere MA.

  1. Hinzufügen weiterer Indikatoren

Test, bei dem MACD, KDJ und andere Indikatoren addiert werden, um strengere Einstiegsregeln festzulegen und falsche Signale zu vermeiden.

  1. Optimierung von Einträgen

Der derzeitige einfache doppelte MA-Eintrag kann erweitert werden:

  • Eingabe von Long nur, wenn MACDDIFF auch über 0 geht, wenn schnelle MA über langsame MA geht
  • Lange Eingabe nur, wenn KDJ ein Goldenes Kreuz gibt, wenn der schnelle MA über den langsamen MA geht
  1. Optimierung von Haltestellen

Testen Sie andere Stoppmechanismen, wie z. B. einen Rückhalt, um einen vorzeitigen Stopp zu vermeiden.

  1. Hinzufügen von Neueinträgen

Erlaubt erneute Eintritte nach Stopps, um zu vermeiden, dass Trends übersehen werden.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese grundlegende Trendfolgestrategie eine einfache und unkomplizierte Logik aufweist - die Verwendung von doppelten MAs für die Trendrichtung und beweglichen Stopps für das Risikomanagement. Die Vorteile sind leicht zu verstehen, können von Trends profitieren und Risiken verwalten. Aber es gibt auch Einschränkungen, wie schlechte Signale während von Konsolidierungen, vorzeitige Stopps usw. Live-Tuning und Optimierung sind erforderlich, wie das Hinzufügen von Filtern, das Anpassen von Stopps, um sie an unterschiedliche Marktumgebungen anpassbar zu machen. Als einführende Trendhandelsstrategie ist sie für Anfänger geeignet, sie zu lernen und anzuwenden. Aber ihre Einschränkungen sollten beachtet werden und fortgeschrittene Strategien sollten erforscht werden. Nur durch kontinuierliche Verbesserungen kann man nachhaltige Gewinne in ständig wechselnden Märkten erzielen.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

src = close

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading
stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Mehr