Mehrperioden-Strategie für dynamische gleitende Durchschnitte


Erstellungsdatum: 2023-10-27 16:07:16 zuletzt geändert: 2023-10-27 16:07:16
Kopie: 1 Klicks: 647
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrperioden-Strategie für dynamische gleitende Durchschnitte

Diese Strategie ermöglicht die Erzeugung von Handelssignalen durch die dynamische Auswahl verschiedener Arten von Moving Averages, die in Kombination mit mehreren Zeiträumen erzeugt werden.

Strategieprinzip

Die Strategie erlaubt die Auswahl der fünf Moving Average-Indikatoren SMA, EMA, TEMA, WMA und HMA und setzt die Periodengröße der Mittelwertlinie fest. Die Strategie zeichnet verschiedene Arten von Mittelwerten nach der gewählten Dynamik. Wenn der Schlusskurs steigt, brechen Sie die Mittelwertlinie; wenn der Schlusskurs fällt, brechen Sie die Mittelwertlinie.

Insbesondere definiert die Strategie zunächst den Rückmesszyklus anhand der Eingabeparameter. Dann werden fünf Mittelwertindikatoren berechnet:

  • SMA Einfacher Moving Average
  • Der EMA bewegt sich durchschnittlich
  • TEMA dreifache gleitende Durchschnittswerte
  • WMA gewichtete gleitende Durchschnitte
  • HMA Hull bewegliche Durchschnitte

Entsprechend der Auswahl wird eine entsprechende Mittellinie gezeichnet. Wenn der Schlusskurs über der Mittellinie liegt, wird mehr gemacht; wenn der Schlusskurs unter der Mittellinie liegt, wird leer gemacht.

Die Strategie erzeugt ein zuverlässiges Handelssignal, indem sie die Verwendung verschiedener Arten von Mittellinien in Kombination mit Preisdaten ausgleicht, Marktlärm filtert und die Längen der Mittellinien-Zyklen anpasst, um Trends in verschiedenen Zyklen zu handeln.

Strategische Vorteile

  • Kombination mit mehreren Mittellinien, hohe Zuverlässigkeit
  • Anpassbare Gleichlaufphase für verschiedene Phasen
  • Dynamische Schalt-Einheitlichkeit, Optimierungsparameter flexibel
  • Einfache, intuitive und leicht umsetzbare Strategien zur Trendverfolgung

Strategisches Risiko

  • Die Durchschnittslinie ist zurückgeblieben und könnte einen Trendwendepunkt verpassen.
  • Die Festparameter sind leicht zu überfügen und die Festplatte kann schwächer als die Rückmessung wirken
  • Aktive Überschuldung in der Mehrheitsphase und aktive Auszahlung in der Leerlaufphase können die Effizienz der Kapitalnutzung beeinträchtigen.

Das Risiko kann durch Optimierung der folgenden Aspekte verringert werden:

  • Ein besserer Zeitpunkt für die Einreise in Kombination mit anderen Indikatoren
  • Festplattenoptimierungsparameter, Anpassung der Durchschnittszyklus an unterschiedliche Marktumstände
  • Optimierung der Positionsverwaltung, Anpassung der Positionen an die Größe der Fonds und die Risikokontrolle

Optimierungsrichtung

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Zusätzliche Filter für andere Indikatoren, um ein stabileres Handelssignal zu schaffen

Zum Beispiel kann ein Quantitätsindikator hinzugefügt werden, der nur dann ein Handelssignal erzeugt, wenn die Transaktionsmenge größer ist, um einige falsche Durchbrüche zu filtern.

  1. Optimierung der Ein- und Ausstiegslogik

Es kann ein Kanal eingerichtet werden, der nur dann betreten wird, wenn der Preis den Kanal durchbricht. Es kann eine Stop-Loss-Linie eingerichtet werden, die nach dem Berühren der Stop-Loss-Linie platziert wird. Dies kann unnötige Verluste verringern.

  1. Dynamisch angepasste Durchschnittszeit

Die Perioden können je nach Marktentwicklung angepasst werden, wobei die langfristigen Mittelwerte bei deutlicheren Trends und die kurzfristigen Mittelwerte bei der Bilanzierung verwendet werden.

  1. Optimierung der Kapitalverwaltungsstrategie

Die Positionsgröße kann je nach Auszahlung angepasst werden, die Position kann bei Auszahlung reduziert und bei Gewinnung moderat erhöht werden.

Zusammenfassen

Durch die Kombination mehrerer Gleichgewichtsindikatoren in Kombination mit mehreren Zeitzyklen erzeugt die Strategie eine relativ stabile Trend-Tracking-Effekt. Die Strategie hat einen großen Optimierungsraum und kann in Bezug auf Einstiegs-Filter, Ausstiegsmethoden und Parameteroptimierungen verbessert werden, so dass die Strategie in der Realität bessere Ergebnisse erzielt.

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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )