Strategie für den Durchbruch des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2024-02-06 15:02:33
Tags:

img

Übersicht

Diese Strategie verwendet drei gleitende Durchschnitte verschiedener Perioden, um die Markttrendrichtung zu identifizieren. Sie tritt in eine Position ein, wenn sich die drei gleitenden Durchschnitte in die gleiche Richtung bewegen. Gleichzeitig setzt sie, kombiniert mit dem höchsten oder niedrigsten Preis der jüngsten N-Kerzen, einen Stop-Loss und einen Gewinn.

Strategie Logik

  1. Berechnen Sie die langfristigen, mittelfristigen und kurzfristigen drei gleitenden Durchschnitte. Benutzer können die Perioden selbst festlegen. Die Standardwerte sind 20, 10 und 5.

  2. Vergleichen Sie die Richtungen der drei gleitenden Durchschnitte. Wenn der kurzfristige gleitende Durchschnitt über den mittelfristigen und der mittelfristige über den langfristigen liegt, wird er als Bullenmarkt beurteilt. Wenn der kurzfristige unter den mittelfristigen und der mittelfristige unter den langfristigen liegt, wird er als Bärenmarkt beurteilt.

  3. In einem Bullenmarkt, wenn der Preis den höchsten Preis der letzten N Kerzen durchbricht, gehen Sie lang; in einem Bärenmarkt, wenn der Preis den niedrigsten Preis der letzten N Kerzen durchbricht, gehen Sie kurz.

  4. Der Stop-Loss in einem Bullenmarkt ist der niedrigste Preis der letzten N-Kerzen und in einem Bärenmarkt der höchste Preis.

Analyse der Vorteile

Diese Strategie kombiniert den gleitenden Durchschnittsindikator und Kerzenkarten, die den Markttrend besser bestimmen können. Gleichzeitig ist die Einstellung von Stop-Loss und Take-Profit angemessen, was dazu beiträgt, größere Verluste zu vermeiden.

Im Vergleich zu einem einzigen gleitenden Durchschnitt und anderen Indikatoren verwendet diese Strategie drei gleitende Durchschnitte, um den Markttrend zuverlässiger zu beurteilen.

Risikoanalyse

Die wichtigsten potenziellen Risiken dieser Strategie sind:

  1. Die Wahrscheinlichkeit eines falschen Urteils über die Richtung der drei gleitenden Durchschnitte.

  2. Fehlende Auswahl des Zeitpunkts für den Eintritt in die Position, in der man leicht gefangen werden kann.

  3. Die Stop-Loss-Distanz ist zu klein eingestellt. Die Erweiterung der Stop-Loss-Distanz hilft, mehr Spielraum für den Preis zu schaffen.

Optimierungsrichtlinien

Zu den Richtungen zur Optimierung dieser Strategie gehören:

  1. Hinzufügen anderer Indikatoren zur Filtration, um die Zuverlässigkeit der gleitenden Durchschnittssignale zu gewährleisten.

  2. Optimierung der gleitenden Durchschnittsperioden, um sie besser an verschiedene Produkte anzupassen.

  3. Hinzufügen von Algorithmen für maschinelles Lernen zur automatischen Optimierung von Parametern.

  4. Testen Sie die Wirksamkeit dieser Strategie bei Hochfrequenzdaten.

Zusammenfassung

Diese Strategie ist relativ einfach und universell. Die Idee ist klar mit starker Machbarkeit. Als Beispiel für ein gleitendes Durchschnitts-Crossover-System ist es eine gängige Wahl für Anfänger. Durch die richtige Optimierung kann das System auf mehr Produkte und Zeitrahmen angewendet werden, um eine stetige Rendite zu erzielen.


/*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")

Mehr