Strategie zur Umkehrung des doppelten gleitenden Durchschnitts-Crossovers


Erstellungsdatum: 2023-11-22 10:07:19 zuletzt geändert: 2023-11-22 10:07:19
Kopie: 1 Klicks: 605
1
konzentrieren Sie sich auf
1617
Anhänger

Strategie zur Umkehrung des doppelten gleitenden Durchschnitts-Crossovers

Überblick

Die Hauptidee der Strategie ist es, die Kreuzung von schnellen und langsamen Durchschnittslinien zu nutzen, um Markttrends zu beurteilen und bei einer Umkehrung der kurzen und langen Durchschnittslinien einzutreten, um die Trends zu verfolgen.

Strategieprinzip

  1. Setzen Sie schnelle bewegliche Durchschnittsphase (shortma) und langsame bewegliche Durchschnittsphase (longma) (standardmäßig 7 Tage)
  2. Wenn die kurze Linie die lange Linie überschreitet, wird dies als Kaufsignal beurteilt und als barssince (mabuy) aufgezeichnet, wobei die lange Linie den Eintritt in den Trend bedeutet. Wenn die kurze Linie die lange Linie unterhalb der mittleren Linie überschreitet, wird dies als Verkaufssignal beurteilt und als barssince (masell) aufgezeichnet, wobei die lange Linie den Trend beendet bedeutet.
  3. Vergleichen Sie die Größe der Barssince: Die Anzahl der Bars, die die kurze Durchschnittslinie von oben nach unten überschreitet, bedeutet, dass die Tendenz länger andauert; umgekehrt bedeutet die Anzahl der Bars, die die kurze Durchschnittslinie von unten nach oben überschreitet, die Stärke des Umkehrsignals
  4. Ein Kaufsignal wird gesendet, wenn die Anzahl der Verkaufsbars größer ist als die Anzahl der Kaufbars; ein Verkaufssignal wird gesendet, wenn die Anzahl der Kaufbars größer ist als die Anzahl der Verkaufsbars.
  5. Such-Strategie ist im Wesentlichen eine Binär-Gleichgewichtsumkehr-Strategie, bei der ein Trendwendepunkt durch eine Umkehrung der schnellen Mittellinie und der langsamen Mittellinie beurteilt wird

Strategische Vorteile

  1. Mit der doppelten Gleichheitsbeurteilung wurde ein Teil des Noise-Trading-Signals gefiltert.
  2. Barssince-Vergleiche hinzugefügt, um Fehlsignale durch False-Fraktions- und Close-Price-Umkehrungen zu vermeiden
  3. Einfach zu verstehen und umzusetzen
  4. Anpassbare Moving Average-Parameter für verschiedene Perioden und Märkte

Strategisches Risiko

  1. Eine Binäre-Strategie erzeugt leicht mehr Signale und häufigere Transaktionen
  2. Die falsche Einstellung der Moving Average-Parameter kann eine längere Trendchance verpassen
  3. Wenn die langfristige Durchschnittslinie überschritten wird, kann der Stopppunkt weit entfernt sein und es gibt einen größeren Rückzug.
  4. Das Problem ist, dass es keine wirksame Filterung der Spirale und des Schwingungsmarktes gibt.

Richtung der Strategieoptimierung

  1. Filter für weitere Indikatoren, um nicht in den Schock gefangen zu sein
  2. Erhöhung der Stop-Loss-Mechanismen
  3. Optimierung der Parameterkombination für die bewegliche Durchschnittslinie
  4. Moving Average-Parameter, angepasst an die Dynamik der Marktzyklen

Zusammenfassen

Die Strategie als Ganzes ist logisch klar und verständlich. Die Trendwendepunkte der Markttrends werden anhand von schnellen Durchschnittslinien und langsamer Durchschnittslinie-Umkehrung beurteilt. Theoretisch ist es möglich, Trends effektiv zu verfolgen. In der Praxis müssen jedoch die Strategie-Algorithmen und die Parameter-Einstellungen optimiert werden, um sie stabiler und praktischer zu machen.

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

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

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

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)