Strategie zur Trendfolge mit drei gleitenden Durchschnitten


Erstellungsdatum: 2024-02-02 17:30:09 zuletzt geändert: 2024-02-02 17:30:09
Kopie: 1 Klicks: 567
1
konzentrieren Sie sich auf
1617
Anhänger

Strategie zur Trendfolge mit drei gleitenden Durchschnitten

Überblick

Die Strategie, die als “Lightning Trimmer” bezeichnet wird, basiert auf drei Moving Averages und ist eine Trendfollowing-Strategie. Sie beurteilt die Preisentwicklung durch die Berechnung der Kreuzung von Schnell-, Mittel- und Langzeitlinien und setzt die Zielpreise und die Stop-Loss-Preise mit den ATR-Werten.

Strategieprinzip

Die Strategie verwendet folgende drei Moving Averages:

  1. 13. Gewichtete Moving Averages zur Bestimmung von kurzfristigen Trends
  2. Der 55-Tage-Moving Average wird als Mittelzeit-Trend verwendet.
  3. Ein 110-Tage-Simplemoving-Average, der als Grundlage für langfristige Trends verwendet wird

Beim Durchschreiten der mittleren Linie durch die schnelle Linie und der langsamen Linie durch die mittlere Linie wird als Mehrtrend beurteilt. Beim Durchschreiten der mittleren Linie unter der schnellen Linie und der langsamen Linie unter der mittleren Linie wird als Leerlauftrend beurteilt.

Die Strategie beinhaltet außerdem eine Reihe von zusätzlichen Bedingungen, um einige Noise-Transactions zu filtern:

  1. Die ersten fünf K-Linien liegen über der Mittellinie.
  2. Die ersten beiden K-Linien sind tief unter der mittleren Linie.
  3. Der erste K-Streck schließt über der mittleren Linie.

Wenn diese Bedingungen erfüllt sind, wird ein Signal für einen Über- oder Einbruch gesendet. Sie können nur eine Position pro Position halten, und nur nach dem Aus- oder Verlustschluss können Sie erneut eine Position eröffnen.

Zielpreise und Stop-Loss-Preise werden in Abhängigkeit von den ATR-Werten multipliziert.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Verwendung von drei Kombinationen von Moving Averages zur Beurteilung von Trends vermeidet die Wahrscheinlichkeit, dass ein einziger Indikator eine Fehleinschätzung macht.
  2. Mehrfache Hilfsbedingungen zum Filtern von Geräuschtransaktionen können die Signalqualität verbessern.
  3. ATR-Dynamische Stop-Losses sind hilfreich, um Einzelschäden zu kontrollieren.

Risikoanalyse

Die Strategie birgt auch folgende Risiken:

  1. Eine Kombination von Moving Averages kann ein falsches Signal geben und muss ausreichend zurückgeprüft werden.
  2. Eine falsche Einstellung des ATR-Multiplikators kann zu einer zu lockeren oder zu strengen Stop-Loss führen.
  3. Die Preisschwankungen, bei denen es keine effektiven Filter für Überraschungen gibt.

Um das Risiko zu kontrollieren, empfiehlt es sich, die Moving Average-Parameter entsprechend anzupassen, die ATR-Multiplikatoren zu optimieren und die maximale Haltedauer festzulegen, um zu hohe Einzelschäden zu vermeiden.

Optimierungsrichtung

Die Strategie kann optimiert werden durch:

  1. Verschiedene Moving Averages unterschiedlicher Länge oder Typen werden getestet.
  2. Parameter für die Optimierung von Hilfsbedingungen.
  3. Versuchen Sie, andere Indikatoren zu verwenden, um Trends vorherzusagen, z. B. MACD, DMI usw.
  4. Die Bindungsmenge kann als Indikator für Filtersignale wie Transaktionsmenge, Preisdifferenz verwendet werden.

Zusammenfassen

Diese Strategie ist insgesamt eine stabile Trend-Following-Strategie. Sie basiert hauptsächlich auf einem Moving Average, um die Richtung der Trends zu bestimmen, und unterstützt sich durch eine Reihe von technischen Indikatoren, die einen Teil des Rauschs filtern können. Obwohl noch weitere Optimierungsmöglichkeiten vorhanden sind, ist das Gesamtrisiko kontrollierbar und geeignet für Investitionen, die mit mittleren und langen Trends verbunden sind.

Strategiequellcode
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)