Gleitende Durchschnitt-Crossover-Ausbruchsstrategie


Erstellungsdatum: 2024-02-06 15:02:33 zuletzt geändert: 2024-02-06 15:02:33
Kopie: 1 Klicks: 671
1
konzentrieren Sie sich auf
1617
Anhänger

Gleitende Durchschnitt-Crossover-Ausbruchsstrategie

Überblick

Die Strategie verwendet drei bewegliche Durchschnitte aus verschiedenen Zeitabschnitten, um die Richtung der Markttrends zu identifizieren. Eintritt in eine Position, wenn die drei beweglichen Durchschnitte in die gleiche Richtung sind. Gleichzeitig wird ein Stop-Loss-System eingerichtet, das den höchsten oder niedrigsten Preis der letzten N-K-Linie kombiniert.

Strategieprinzip

  1. Berechnen Sie drei Moving Averages für die langfristige, mittlere und kurzfristige Periode. Der Benutzer kann die Periode selbst festlegen. Der Default ist 20, 10 und 5 Tage.

  2. Vergleichen Sie die Richtung der drei Moving Averages. Wenn der kurzfristige Moving Average über die mittlere und die mittlere über die langfristige bewegt wird, wird er als Mehrkopfmarkt beurteilt. Wenn der kurzfristige Moving Average unter die mittlere und die mittlere unter die lange bewegt wird, wird er als leerer Markt beurteilt.

  3. In einem Mehrkopfmarkt, wenn der Preis den höchsten Preis innerhalb der neuesten N-K-Linie überschreitet, mehr zu tun; in einem Leerkopfmarkt, wenn der Preis den niedrigsten Preis innerhalb der neuesten N-K-Linie überschreitet, leer zu machen. N ist auch ein benutzerdefinierter Parameter.

  4. Nach dem Eintritt in die Position setzt man einen Stop-Loss. Der Stop-Loss ist der niedrigste Preis innerhalb der N-K-Linie und der Stop-Loss ist der höchste Preis innerhalb der N-K-Linie.

Analyse der Stärken

Diese Strategie, kombiniert mit einem Moving Average und einer K-Line-Grafik, hilft bei der Beurteilung der Marktentwicklung. Die Stop-Loss-Stillungen sind jedoch vernünftig und helfen, größere Verluste zu vermeiden.

Die Strategie verwendet drei Moving Averages, um die Marktentwicklung zu beurteilen, im Vergleich zu einem einzigen Moving Average. Die brechende Strategie besteht aus drei Moving Averages, die die Marktentwicklung zuverlässig bestimmen.

Risikoanalyse

Die wichtigsten Risiken, die mit dieser Strategie verbunden sind, sind:

  1. Die drei Moving Average Richtungen bestimmen die Wahrscheinlichkeit eines Fehlers. Wenn ein mittlerer oder kurzfristiger Moving Average ein falsches Signal verursacht, kann dies zu unnötigen Verlusten führen.

  2. Die Auswahl der Eintrittszeiten für den Durchbruch ist unzureichend und leicht zu erwischen. Die Auswahl der Eintrittszeiten sollte entsprechend optimiert werden.

  3. Die Stop-Loss-Distanz ist zu klein eingestellt, und die Erweiterung der Stop-Loss-Distanz hilft, den Preisen mehr Running Room zu geben.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen optimiert werden:

  1. Zusätzliche Filter für andere Indikatoren, um die Zuverlässigkeit des Moving-Average-Signals zu gewährleisten.

  2. Optimierung der Periodizität von Moving Averages, um sie besser an unterschiedliche Sorten anzupassen.

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

  4. Die Effektivität der Strategie wird anhand von Hochfrequenzdaten getestet.

Zusammenfassen

Diese Strategie ist allgemein einfach, allgemein verständlich und praktisch praktikabel. Als Beispiel für ein Moving-Average-Cross-System ist sie eine häufige Wahl für Anfänger. Durch die richtige Optimierung kann das System auf eine breitere Palette von Sorten und Zeiträumen angewendet werden, wodurch stabile Gewinne erzielt werden.

Strategiequellcode
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hobbiecode

//@version=5
strategy("Cross Breakout - Hobbiecode", shorttitle="Cross - HOBBIE", overlay=true)

// User-defined input for moving averages
long_period = input(20, title="Long Period")
medium_period =  input(10, title = "Medium Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])
candles_back = input(10, title = "Candles Back")
bars_valid = input(3, title = "Bars to Exit")

// Calculating moving averages
long_ma = 0.0
medium_ma = 0.0
short_ma = 0.0

if type_ma == "SMA"
    long_ma := ta.sma(close, long_period)
    medium_ma := ta.sma(close, medium_period)
    short_ma := ta.sma(close, short_period)
else
    long_ma := ta.ema(close, long_period)
    medium_ma := ta.ema(close, medium_period)
    short_ma := ta.ema(close, short_period)

// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(medium_ma, title = "Medium Moving Average", color = color.yellow)
plot(short_ma, title="Short Moving Average", color=color.green)

// Check last min/max
last_min = ta.lowest(candles_back)
last_max = ta.highest(candles_back)

// Strategy logic for crossing of moving averages
longCondition = short_ma > medium_ma and medium_ma > long_ma and high == last_max
shortCondition = short_ma < medium_ma and medium_ma < long_ma and low == last_min

longCondition_entry = longCondition and strategy.position_size == 0
shortCondition_entry = shortCondition and strategy.position_size == 0

// Check last min/max for operation
last_min_op = ta.lowest(candles_back)[1]
last_max_op = ta.highest(candles_back)[1]

// Plot lines
var line r1Line = na

// Entry orders
// if (longCondition)
//     from_line = chart.point.now(high)
//     to_line = chart.point.from_index(bar_index + candles_back, high)
//     r1Line := line.new(from_line, to_line, color = color.green, width = 2)

if longCondition_entry and ta.crossover(close,last_max_op)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=low)

// if (shortCondition)
//     from_line = chart.point.now(low)
//     to_line = chart.point.from_index(bar_index + candles_back, low)
//     r1Line := line.new(from_line, to_line, color = color.red, width = 2)

if shortCondition_entry and ta.crossunder(close,last_min_op)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=high)

if ta.barssince(longCondition_entry) >= bars_valid
    strategy.close("Long")

if ta.barssince(shortCondition_entry) >= bars_valid
    strategy.close("Short")