Einseitige Eintrittsstrategie auf Basis gleitender Durchschnitte

Schriftsteller:ChaoZhang, Datum: 2023-12-25 14:09:49
Tags:

img

Übersicht

Diese Strategie berechnet verschiedene Arten von gleitenden Durchschnitten, um die Kurstrendrichtung zu bestimmen und einen einseitigen Einstieg zu implementieren.

Strategieprinzip

Die Strategie erlaubt die Auswahl aus 7 verschiedenen gleitenden Durchschnittsarten, darunter einfacher gleitender Durchschnitt (SMA), exponentieller gleitender Durchschnitt (EMA), volumengewichteter gleitender Durchschnitt (VWMA), doppelter exponentieller gleitender Durchschnitt (DEMA), dreifacher exponentieller gleitender Durchschnitt (TEMA), Kaufman's adaptive gleitender Durchschnitt (KAMA) und Preiskanal Mittellinie. Sie beurteilt die Kurstrendrichtung anhand der Beziehung zwischen dem ausgewählten gleitenden Durchschnitt und dem Schlusskurs.

Wenn der Schlusskurs durch die gleitende Durchschnittslinie nach oben bricht, wird er als Aufwärtstrend beurteilt und eine Long-Position eröffnet. Wenn der Schlusskurs durch die gleitende Durchschnittslinie nach unten bricht, wird er als Abwärtstrend beurteilt und eine Short-Position eröffnet. Dies kann Wendepunkte im Preistrend erfassen und einen einseitigen Einstieg erreichen.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Für die Flexibilität können verschiedene Arten von gleitenden Durchschnitten ausgewählt werden, die verschiedenen Produkten und Zyklen entsprechen.

  2. Einseitige Einträge können Risiken wirksam kontrollieren.

  3. Eintritt in die Trendrichtung ist leicht zu profitieren.

  4. Es ist leicht zu verstehen und umzusetzen.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Wenn der Preis um die gleitende Durchschnittslinie schwingt, gibt es mehrere falsche Signale und umgekehrte Eintrittspositionen.

  2. Es ist nicht möglich, die Risiken, die durch schnelle Kursbewegungen nach oben oder unten entstehen, vollständig zu vermeiden.

  3. Der Analyst muss geeignete gleitende Durchschnittsparameter auswählen.

Optimierungsrichtlinien

Die Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Kombination mit anderen technischen Indikatoren wie MACD, RSI, um das Trendsignal zu beurteilen und eine Handelskombination zu bilden.

  2. Hinzufügen von Stop-Loss-Logik, wie z. B. Trailing Stop-Loss oder pending Order Stop-Loss.

  3. Testen und optimieren Sie Parameter wie gleitende Durchschnittszeit, gleitende Durchschnittsart, um die optimale Parameterkombination zu finden.

  4. Überlegen Sie, ob Sie für den Eintrag den Auftragstyp MarketIfTouched verwenden, um dem Trend zu folgen.

Zusammenfassung

Die Strategie bestimmt die Kursentwicklungsrichtung basierend auf gleitenden Durchschnitten und implementiert einseitigen Eintrag. Sie ist einfach zu bedienen und zu implementieren und kann Risiken effektiv kontrollieren. Es gibt aber auch Risiken von falschen Signalen und umgekehrten Einträgen. Sie kann kontinuierlich verbessert werden, indem andere Signalindikatoren kombiniert, Parameter optimiert, Stop-Loss hinzugefügt werden, um die Strategie stabiler und zuverlässiger zu machen.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

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

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

Mehr