Quantitative Handelsstrategie basierend auf gleitendem Durchschnitt


Erstellungsdatum: 2024-01-16 17:37:13 zuletzt geändert: 2024-01-16 17:37:13
Kopie: 0 Klicks: 711
1
konzentrieren Sie sich auf
1617
Anhänger

Quantitative Handelsstrategie basierend auf gleitendem Durchschnitt

Überblick

Diese Strategie ist eine typische Trend-Tracking-Strategie, indem sie die Moving Averages der verschiedenen Perioden berechnet und beurteilt, ob ihre Goldfork-Deadforks ein Handelssignal erzeugen. Sie verwendet hauptsächlich den gewichteten Moving Average WMA und den adaptiven Moving Average ALMA.

Strategieprinzip

Die Strategie berechnet zunächst die mittelfristigen Moving Averages ma1 und ma2 des Preises, wobei ma1 kürzer und ma2 länger ist. Dann berechnet man die Differenz zwischen ma1 und ma2 und berechnet den glatten Moving Average ma4 für ma3. Bei einem Durchschnittswert von ma3 wird ein Kaufsignal erzeugt, bei einem Durchschnittswert von ma4 ein Verkaufssignal.

Auf diese Weise reflektiert ma3 die mittelfristige Trendrichtung des Preises, und ma4 filtert den Teil des Geräusches in ma3 und bildet ein zuverlässigeres Handelssignal. Die Periodenzusammenstellung von ma1 und ma2 wird durch die Parameter maLen festgelegt, so dass der Benutzer die optimale Kombination von Parametern nach den verschiedenen Marktanpassungszyklen erhalten kann.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Die Verwendung von Adaptive Moving Averages ALMA und Weighted Moving Averages WMA ermöglicht eine bessere Anpassung an Marktveränderungen.

  2. Die Anwendung von mehrperiodischen Preisdurchschnitten macht die Handelssignale zuverlässiger.

  3. Die Parameter sind anpassbar und können für verschiedene Märkte optimiert werden.

  4. Die Strategie ist klar, verständlich und einfach umzusetzen.

  5. Das ist eine sehr gute Methode, um sowohl in trendigen als auch in schwankenden Märkten erfolgreich zu sein.

Risiken und Lösungen

Die Strategie birgt auch einige Risiken:

  1. In stark wechselnden Märkten kann eine Moving-Average-Strategie zu unklaren und verzögerten Handelssignalen führen. Sie kann durch Anpassung der Moving-Average-Periode und der Parameter optimiert werden.

  2. Die reine Trend-Tracking-Strategie ist anfällig für Verluste in der Phase der Erschütterung. Sie kann in Kombination mit anderen Indikatoren als Filterbedingungen verwendet werden.

  3. Die falsche Einstellung der Parameter kann zu übermäßigen Transaktionen führen, die zu sehr kurzen Perioden führen. Die richtigen Parameter sollten sorgfältig ausgewählt werden.

Strategieoptimierung

Die Strategie kann in folgenden Bereichen optimiert werden:

  1. Es werden mehrere Arten von Moving Averages getestet, wie z.B. lineare Moving Averages, gewichtete Moving Averages usw.

  2. Erhöhung der Stop-Loss-Mechanismen auf Basis von Indikatoren wie Volatilität, Preiskanäle usw.

  3. In Kombination mit mehreren Zeitzyklus-Analysen wird ein Rolloptimierungsparameter verwendet.

  4. Die automatische Optimierung von Parametern durch die Zugabe von Machine Learning-Algorithmen.

Zusammenfassen

Diese Strategie basiert auf einem Moving Average, um ein Handelssignal zu erzeugen. Die Anwendung von adaptierten Moving Averages und Mehrzeitpreisdurchschnitten macht das Signal präziser und zuverlässiger. Die Strategie hat ein flexibles Parameterfeld, eine breite Palette von Anwendungsbereichen, ist einfach und klar konzipiert, wirkt gut in Trendmärkten und hat einen hohen Einsatzwert.

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

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)