Handelsstrategie zur Optimierung des gleitenden Durchschnitts-Crossovers


Erstellungsdatum: 2023-12-19 13:37:33 zuletzt geändert: 2023-12-19 13:37:33
Kopie: 0 Klicks: 683
1
konzentrieren Sie sich auf
1621
Anhänger

Handelsstrategie zur Optimierung des gleitenden Durchschnitts-Crossovers

Überblick

Die Strategie optimiert die übliche Moving Average Crossover-Strategie, indem sie drei Moving Averages mit verschiedenen Perioden setzt. Sie verwendet Moving Averages mit 9 Perioden, 50 Perioden und 100 Perioden, um eine Goldfork-Form zu erstellen. Unter Bedingungen, in denen die mittlere Long-Even-Linie in einem Aufwärtstrend ist, bildet die Short-Even-Linie ein Kaufsignal auf der mittleren Long-Even-Linie.

Strategieprinzip

Die Strategie verwendet drei Moving Averages mit 9 Perioden, 50 Perioden und 100 Perioden. Der 9-Perioden Moving Average ist der kurzfristige Mittelwert, der 50-Perioden Moving Average ist der mittlere Mittelwert und der 100-Perioden Moving Average ist der langfristige Mittelwert. Das Handelssignal der Strategie stammt aus der Kreuzung des kurzfristigen Mittelwertes mit dem mittleren Mittelwert.

Analyse der Stärken

Im Vergleich zur herkömmlichen Doppel-Moving-Average-Kreuzungsstrategie, die die Bedingungen für die mittelfristige Trendbeurteilung vor der Erzeugung von Handelssignalen erhöht, kann die Strategie effektiv einige unwirksame Signale filtern. In Fällen, in denen die langfristige Tendenz unklar ist, wird die Strategie kein Signal erzeugen, und es kann vermieden werden, eingestellt zu werden. Die Strategie eignet sich außerdem dazu, trendige Verhaltensweisen in der kurzen und mittleren Zeit zu erfassen und die Wahrscheinlichkeit eines aktiven Einstiegs zu verringern.

Risikoanalyse

Die Strategie erfordert eine Anpassung der Periodenkombination der Mittellinie bei der Einstellung der Parameter, wobei unterschiedliche Periodenkombinationen Auswirkungen auf die Wirksamkeit der Strategie haben. Wenn die Periodenkombination falsch eingestellt ist, besteht die Gefahr, dass zu viele falsche Signale erzeugt werden. Darüber hinaus müssen Händler auf potenzielle systemische Risiken achten und die Risiken rechtzeitig stoppen.

Optimierungsrichtung

Es kann in Verbindung mit anderen Indikatoren in Betracht gezogen werden, um die Markttrends zu beurteilen, z. B. MACD, BOLL usw., um strengere Einstiegsbedingungen festzulegen, oder in Verbindung mit den Volatilitätsindikatoren, um einen adaptiven Moving Average zu erstellen, der die Parameter automatisch an die Marktumgebung anpasst und die Strategie weiter optimiert.

Zusammenfassen

Die Strategie basiert auf dem üblichen Überschreiten von doppelten gleitenden Durchschnitten, ergänzt durch langfristige Durchschnittsurteile und Filterbedingungen. Sie ist geeignet, falsche Signale zu filtern und ist geeignet, kurz- und mittelfristige Trends zu erfassen. Sie ist eine einfache und praktische Trendverfolgungsstrategie.

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

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)