Trend nach der SMA-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 16:58:23
Tags:

img

Übersicht

Die Trend Following SMA-Strategie verwendet eine Kombination aus einfachem gleitendem Durchschnitt (SMA) und schneller SMA, um die Markttrendrichtung zu bestimmen und Handelssignale zu generieren. Sie geht lang, wenn der Preis über SMA und FSMA überschreitet, und geht lang aus, wenn der Preis unterhalb überschreitet. Sie geht kurz, wenn der Preis unter SMA und FSMA überschreitet, und geht kurz aus, wenn der Preis überschreitet. Die Strategie bietet dynamische, kurvenfreie Handelssignale, um Trendänderungen zu erfassen.

Strategie Logik

Die Strategie verwendet die SMA-Funktion zur Berechnung der 50-Perioden-SMA und der schnellen SMA fsma. fsma wird auf Basis der SMA plus 6-fache Standardabweichung des Preises über n Perioden berechnet.

Zwei booleanische Variablen lang und kurz werden verwendet, um lange und kurze Positionen aufzuzeichnen. lang wird auf 1 gesetzt, wenn der Preis über sma und fsma für den langen Einstieg und -1 für den Ausgang überschreitet. kurz folgt der ähnlichen Logik für die kurze Position.

Die Trendvariable wird für die Trendbestimmung verwendet. Sie wird auf 1 gesetzt, wenn der Preis über fsma und sma für den Aufwärtstrend liegt, und -1 wenn der Preis unter fsma und sma für den Abwärtstrend liegt.

Wenn sich der Trend von unten nach oben ändert, gehen Sie lang, wenn sich der Trend von oben nach unten ändert, wenn sich der Preis unter SMA befindet, gehen Sie kurz.

Die Strategie kombiniert sowohl Trendfolgungs- als auch Breakout-Methoden, um Chancen zu nutzen, wenn sich der Trend ändert.

Vorteile

  1. Die doppelte Bestätigung von zwei MAs filtert gefälschte Ausbrüche.

  2. Die Kombination von Trendfolgung und Ausbruch führt zu Wendepunkten.

  3. Keine Kurvenanpassung oder Optimierung für dynamische Handelssignale.

  4. Einfache und klare Logik, leicht zu verstehen und zu ändern.

  5. Anpassbare Parameter für die Länge, Multiplikator für verschiedene Märkte.

Risiken

  1. Doppel-MA-Kreuzungen können zu übermäßigen Whipsaw-Trades und Umkehrungen führen.

  2. Die Verzögerung der MA kann eine frühe Trendumkehr verpassen.

  3. Es gibt keinen Stop-Loss-Mechanismus zur Kontrolle einzelner Handelsverluste.

  4. Eine unsachgemäße Einstellung der Parameter führt zu Überschreitungen oder Verzögerungen.

  5. Für Risiken 1 und 2 verlängern Sie die MA-Perioden und fügen Sie einen Drawdown-Stop-Loss hinzu.

  6. Die Risikopositionen werden in der Tabelle 060 aufgeführt.

  7. Für Risiko 4 werden die Parameter dynamisch für verschiedene Märkte angepasst.

Erweiterung

  1. Hinzufügen eines Trendfilters unter Verwendung von MACD, DMI, um den Trend zu bestätigen.

  2. Verwenden Sie KD, RSI für den Handel mit überkauften/überverkauften Mittelumkehrungen.

  3. Zusätzlich wird der Gesamt-Stop-Loss wie Trailing-Stop, Prozentsatz-Stop angegeben.

  4. Hinzufügen eines Positionsgrößenmoduls zur dynamischen Anpassung.

  5. Optimieren Sie die Parameter, um sich zeitlich anpassen zu können.

  6. Einführung von maschinellem Lernen für das automatische Parameter-Tuning.

  7. Erstellen Sie eine zusammengesetzte Strategie mit zusätzlichen Filtern.

  8. Verwenden Sie Deep Learning, um komplexe Trendmuster zu erkennen.

Schlussfolgerung

Die SMA-Trend-Folge-Strategie ist ein einfaches Trend-Trading-System. Es verwendet schnelle und langsame MAs, um die Trendrichtung zu unterstützen und die Trendumkehrung zu erfassen. Allerdings bestehen Risiken wie Whipsaw und Lag. Zukünftige Verbesserungen umfassen das Hinzufügen von Filtern, Stops, dynamischen Parametern usw. Insgesamt dient es als ein gutes Starter-Trend-Folge-System, aber Optimierungen sind für reale Anwendungen erforderlich, um seine Leistung zu maximieren.


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

//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")


r(src, n)=>
    s = 0.0
    for i = 0 to n-1
        s := s + ((n-(i*2+1))/2)*src[i]
    x=s/(n*(n+1))
    x

l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)

trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]

strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)

long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]

barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)

//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)

Mehr