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.
Berechnen Sie die langfristigen, mittelfristigen und kurzfristigen drei gleitenden Durchschnitte. Benutzer können die Perioden selbst festlegen. Die Standardwerte sind 20, 10 und 5.
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.
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.
Der Stop-Loss in einem Bullenmarkt ist der niedrigste Preis der letzten N-Kerzen und in einem Bärenmarkt der höchste Preis.
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.
Die wichtigsten potenziellen Risiken dieser Strategie sind:
Die Wahrscheinlichkeit eines falschen Urteils über die Richtung der drei gleitenden Durchschnitte.
Fehlende Auswahl des Zeitpunkts für den Eintritt in die Position, in der man leicht gefangen werden kann.
Die Stop-Loss-Distanz ist zu klein eingestellt. Die Erweiterung der Stop-Loss-Distanz hilft, mehr Spielraum für den Preis zu schaffen.
Zu den Richtungen zur Optimierung dieser Strategie gehören:
Hinzufügen anderer Indikatoren zur Filtration, um die Zuverlässigkeit der gleitenden Durchschnittssignale zu gewährleisten.
Optimierung der gleitenden Durchschnittsperioden, um sie besser an verschiedene Produkte anzupassen.
Hinzufügen von Algorithmen für maschinelles Lernen zur automatischen Optimierung von Parametern.
Testen Sie die Wirksamkeit dieser Strategie bei Hochfrequenzdaten.
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")