Dynamische gleitende Durchschnitt-Crossover-Trendstrategie


Erstellungsdatum: 2024-02-05 12:14:12 zuletzt geändert: 2024-02-05 12:14:12
Kopie: 0 Klicks: 589
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische gleitende Durchschnitt-Crossover-Trendstrategie

Überblick

Die Strategie ist eine einfache Moving Average (SMA) Crossover-Strategie für den Kryptowährungsmarkt. Sie nutzt drei Gruppen von SMAs, Fast, Medium und Slow, um potenzielle Ein- und Ausstiegssignale zu erkennen. Wenn ein schneller SMA einen mittleren SMA durchbricht, erzeugt dies ein Kaufsignal. Wenn ein schneller SMA einen mittleren SMA durchbricht, erzeugt dies ein Verkaufsignal.

Strategieprinzip

Parametereinstellungen

Die Strategie erlaubt den Händlern, die folgenden Schlüsselparameter einzustellen:

  • Preisdatenquelle: Schlusskurs oder anderer Preis
  • Ob die unvollständige K-Linie berücksichtigt wird
  • SMA-Vorhersage: Horizontale Vorhersage oder lineare Regression
  • Schnelle SMA-Länge: Standard 7
  • Durchschnittliche SMA-Länge: Standard 30
  • Langsame SMA-Länge: Standard 50
  • Geld auf dem Konto
  • Risikoprozentsatz pro Transaktion

Berechnung der SMA

Die Schnell-SMA, die Mittelschnell-SMA und die Langzeit-SMA werden je nach der vom Benutzer eingestellten SMA berechnet.

Handelssignale

Wenn der schnelle SMA über den mittleren SMA geht, erzeugt er ein Kaufsignal; wenn der schnelle SMA unter dem mittleren SMA geht, erzeugt er ein Verkaufssignal.

Risikomanagement und Positionsmanagement

Die Strategie kombiniert das Konto-Fonds mit dem Risiko-Ratio für jeden Handel und berechnet die Nominalbasis für jeden Handel. Die Strategie kombiniert das ATR mit der Stop-Loss-Marge, um die spezifische Position für jeden Handel zu bestimmen.

Analyse der Stärken

  • Trends mit mehreren Gruppen von SMAs zu erkennen, um bessere Beurteilung zu ermöglichen
  • SMA-Vorhersage ist optional und besser anpassungsfähig
  • Handelssignale sind einfach, klar und umsetzbar
  • Integration von Risikomanagement und Positionsmanagement, mehr Wissenschaft

Risikoanalyse

  • Die SMA selbst ist so rückständig, dass sie den Preiswendepunkt verpasst.
  • Nur technische Indikatoren, ohne die Grundlagen
  • Nicht berücksichtigt

Dies kann durch eine angemessene Verkürzung der SMA-Zyklen und die Unterstützung anderer Indikatoren optimiert werden.

Optimierungsrichtung

  • In Kombination mit anderen Indikatoren filtern Fehlsignale
  • Das ist ein grundlegendes Urteil.
  • Optimierung der SMA-Zyklusparameter
  • Optimierung der Parameter zur Berechnung von Risiken und Positionen

Zusammenfassen

Die Strategie integriert die Funktionen der SMA-Kreuzentscheidung, des Risikomanagements und der Positionsoptimierung und ist eine Trendverfolgungsstrategie, die für den Krypto-Markt geeignet ist. Händler können die Parameter anpassen und Optimierungen implementieren, die auf ihre eigenen Handelsstile und Marktumgebungen basieren.

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

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")