
Die Strategie ist ein Trend-Tracking-System, das eine Kombination aus Multiple-Index-Moving Averages (MIAs) und Fibonacci-Ausdehnungsebenen kombiniert. Sie nutzt die Wechselwirkungen zwischen den EMAs der verschiedenen Perioden, um potenzielle Trendbeginn und -ende zu identifizieren, und verwendet die Fibonacci-Ausdehnungsebenen, um Gewinnziele zu bestimmen. Die Strategie enthält auch spezifische Stop-Loss-Regeln, um Risiken zu verwalten und Gewinne zu schützen.
Der Kern der Strategie ist die Verwendung von EMA-Kreuzungen über mehrere Zeiträume, um den Beginn und das Ende eines Trends zu erfassen. Insbesondere verwendet sie EMAs mit 5 Zyklen, 10 Zyklen und 30 Zyklen. Die Strategie enthält vier verschiedene Einstiegsbedingungen, die jeweils darauf abzielen, verschiedene Marktszenarien zu erfassen:
Die erste Einstiegsbedingung wird ausgelöst, wenn der Preis die 30-Zyklus-EMA erreicht oder unterhalb davon liegt, sich aber danach darüber schließt, während die 10-Zyklus-EMA über der 5-Zyklus-EMA liegt und die 30-Zyklus-EMA 1% unter der 5-Zyklus-EMA liegt.
Die zweite Einstiegsbedingung wird ausgelöst, wenn ein 30-Zyklus-EMA auf einer 5-Zyklus-EMA getragen wurde und ein 30-Zyklus-EMA innerhalb der letzten 6 K-Linien einen 5-Zyklus-EMA getragen hat.
Die dritte Einstiegsvoraussetzung wird ausgelöst, wenn die beiden aktuellen K-Linien-Höchstpreise niedriger als die jeweilige 5-Zyklus-EMA sind, die 5-Zyklus-EMA niedriger als die 10-Zyklus-EMA ist und die 10-Zyklus-EMA niedriger als die 30-Zyklus-EMA ist, und der höchste Preis der vorherigen K-Line niedriger als der aktuelle Schlusskurs ist.
Die vierte Einstiegsbedingung wird ausgelöst, wenn ein 10-Zyklus-EMA ein 30-Zyklus-EMA durchläuft und ein 5-Zyklus-EMA in den letzten 4 K-Linien ein 30-Zyklus-EMA durchläuft hat und die aktuellen Werte des 10-Zyklus-EMA und des 5-Zyklus-EMA beide höher sind als ihre vorherigen Werte.
Die Strategie hat spezifische Regeln für die Stop-Loss-Strategie für verschiedene Einstiegsbedingungen festgelegt:
Die Gewinnziele basieren auf Fibonacci-Spanne-Niveaus, die die Niveaus 0.618, 0.786, 1.0 und 1.618 umfassen. Wenn die Preise diese Niveaus erreichen, wird die Strategie nach bestimmten Regeln platziert.
Zusätzlich enthält die Strategie eine Gewinnschließbedingung: Wenn die beiden jüngsten K-Linien-Tiefstpreise über der 5-Zyklus-EMA liegen und die EMA eine Aufwärts-Reihe zeigt ((5 > 10 > 30), wird die Position platziert, um die Gewinne zu schließen.
Mehrfachbestätigung: Durch die Verwendung mehrerer EMAs und mehrerer Einstiegsbedingungen kann die Strategie den Beginn und die Dauer eines Trends genauer erkennen. Diese Mehrfachbestätigungsmechanismen können Falschsignale reduzieren und die Genauigkeit des Handels verbessern.
Anpassungsfähigkeit: Vier verschiedene Einstiegsbedingungen ermöglichen es der Strategie, sich an unterschiedliche Marktumgebungen anzupassen, um Handelschancen zu erfassen, egal ob es sich um schnelle Durchbrüche oder langsame Trendbildung handelt.
Risikomanagement: Die Strategie enthält spezifische Stop-Loss-Regeln, die dazu beitragen, das Risiko für jeden Handel zu kontrollieren. Verschiedene Einstiegsbedingungen entsprechen unterschiedlichen Stop-Loss-Strategien, was die Bedeutung der Strategie für das Risikomanagement anzeigt.
Gewinnziel klar: Die Verwendung der Fibonacci-Spanne als Gewinnziel bietet den Händlern einen klaren Ausstiegspunkt. Dies hilft, zu früh zu profitieren oder zu lange zu halten.
Gewinnschutz: Die Gewinnsperre hilft dabei, die erzielten Gewinne zu schützen, wenn ein Trend zurückgehen könnte, was ein wichtiger Aspekt ist, den viele Trend-Tracking-Strategien übersehen.
Technische Kennzahlen kombiniert: Die Strategie kombiniert EMA und Fibonacci-Tools und nutzt die Vorzüge beider beliebter Technikanalyse-Tools.
Übertrieben: Mehrere Einstiegsbedingungen können zu übertriebenen Transaktionen führen, insbesondere in einem sehr volatilen Markt. Dies kann die Transaktionskosten erhöhen und zu weiteren falschen Signalen führen.
Parameter-Sensitivität: Die Strategie verwendet mehrere festgelegte EMA-Zyklen und prozentualen Schwellenwerte. Diese Parameter müssen möglicherweise an unterschiedliche Märkte und Zeitrahmen angepasst werden, was zu einer schlechten Strategie führen kann.
Trend-Abhängigkeit: Als Trend-Following-Strategie kann es in schwankenden oder schwankenden Märkten schlechter laufen. In diesen Marktumgebungen kann es zu mehreren falschen Signalen und kleinen Verlusten kommen.
Nachlässigkeit: Die EMA ist im Wesentlichen ein nachlässiger Indikator. In einem schnell wechselnden Markt kann es sein, dass die Strategie nicht in der Lage ist, die Trendwende rechtzeitig zu erfassen.
Komplexität: Die Vielzahl von Bedingungen und Regeln einer Strategie erhöht ihre Komplexität, was es schwierig machen kann, die Strategie zu verstehen und zu pflegen, und erhöht das Risiko einer Überpassung.
Dynamische Parameteranpassung: Es kann in Erwägung gezogen werden, Anpassungsmechanismen einzuführen, um die EMA-Zyklen und andere Parameter an die dynamische Marktvolatilität anzupassen. Dies kann die Anpassungsfähigkeit der Strategie in verschiedenen Marktumgebungen verbessern.
Hinzufügen von Umsatzindikatoren: Die Kombination von Umsatzanalyse kann die Genauigkeit von Ein- und Ausstiegsentscheidungen verbessern. Zum Beispiel kann ein Anstieg des Umsatzes beim Eintritt verlangt werden, um die Stärke des Trends zu bestätigen.
Marktumfeldfilterung: Einführung von Mechanismen zur Identifizierung von Marktumgebungen, z. B. die Verwendung von ATR (Average True Range) oder Volatilitätsindikatoren, um den Handel in einem Marktumfeld, in dem keine Trends verfolgt werden können, auszusetzen.
Optimierte Stop-Loss-Mechanismen: Ein Tracking-Stop kann in Betracht gezogen werden, anstatt einen festen Stop-Loss zu verwenden. Dies kann dazu führen, dass die Gewinne weiter wachsen, während die Gewinne geschützt werden.
Zeit-Filter hinzugefügt: Der Einschränkung von Transaktionen auf bestimmte Zeiträume und der Vermeidung von Zeitabschnitten mit hoher oder geringer Volatilität kann die Stabilität der Strategie verbessern.
Einführung von maschinellem Lernen: Die Optimierung der Parameterwahl und der Eintrittsentscheidungen mit Hilfe von maschinellen Lernalgorithmen kann die Anpassungsfähigkeit und Leistungsfähigkeit der Strategien verbessern.
Multi-Zeitrahmen-Analyse: In Kombination mit Trendanalysen in längeren Zeitrahmen kann die Genauigkeit der Einstiegsentscheidungen verbessert werden, um eine Rückkehr der Hauptrends zu vermeiden.
Die Multiple EMA-Cross-Trend-Tracking-Strategie kombiniert mit Fibonacci-Spreidungen zeigt ein umfassendes Handelssystem, das mehrere technische Indikatoren und Handelsideen kombiniert. Durch die Verwendung mehrerer EMAs und Einstiegsbedingungen versucht die Strategie, ein Gleichgewicht zwischen der Erfassung von Trends und der Verringerung von Falschsignalen zu finden. Die Verwendung von Fibonacci-Spreidungsebenen bietet eine objektive Grundlage für die Setzung von Gewinnzielen, während die spezifischen Stop-Loss- und Profit-Lock-Regeln das Augenmerk auf Risikomanagement widerspiegeln.
Trotz der Vorteile der Mehrfachbestätigung und der Anpassungsfähigkeit der Strategie stellen ihre Komplexität und die Sensitivität der Parameterwahl eine Herausforderung dar. Um die Stabilität und Leistung der Strategie weiter zu verbessern, können Optimierungsrichtungen wie die Einführung von dynamischen Parameteranpassungen, Marktumfeldfilterungen und Mehrzeitrahmenanalysen in Betracht gezogen werden.
Insgesamt bietet diese Strategie einen interessanten Rahmen für die Trendverfolgung, aber der Händler benötigt eine ausreichende Rückmeldung und Parameteroptimierung bei der praktischen Anwendung und die entsprechenden Anpassungen für bestimmte Märkte und Handelsstile. Mit kontinuierlicher Überwachung und Optimierung hat diese Strategie das Potenzial, ein wirksames Trendverfolgungstool zu werden.
/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Combined Strategy with Specific Stop Loss", overlay=true)
// Define the EMAs
ema30 = ta.ema(close, 30)
ema10 = ta.ema(close, 10)
ema5 = ta.ema(close, 5)
// Define the conditions for opening an order
open_condition1 = low <= ema30 and close > ema30 and ema10 > ema5 and ema30 * 1.01 < ema5
open_condition2 = ta.crossover(ema5, ema30) and (ta.crossover(ema30[1], ema5[1]) or ta.crossover(ema30[2], ema5[2]) or ta.crossover(ema30[3], ema5[3]) or ta.crossover(ema30[4], ema5[4]) or ta.crossover(ema30[5], ema5[5]) or ta.crossover(ema30[6], ema5[6]) )
open_condition3 = high[2] < ema5[2] and high[1] < ema5[1] and ema5 < ema10 and ema10 < ema30 and high[1] < close
open_condition4 = ta.crossover(ema10, ema30) and (ta.crossover(ema5[0], ema30[0]) or ta.crossover(ema5[1], ema30[1]) or ta.crossover(ema10[2], ema30[2]) or ta.crossover(ema10[3], ema30[3])) and ema10[1] < ema10 and ema5[1] <ema5
// Calculate the lowest low of the previous two bars
lowest_low_prev_two_bars = ta.lowest(low, 3)
// Track the entry price and the lowest low of the previous two bars for open_condition3
var float entry_price = na
var float low_entry_price = na
var float entry_lowest_low1 = na
var float entry_lowest_low2 = na
var float entry_lowest_low3 = na
var float entry_lowest_low4 = na
var bool order1 = false
var bool order2 = false
var bool order3 = false
var bool order4 = false
// Fibonacci extension levels based on the last significant swing
var float fib_extension_level_0_618 = na
var float fib_extension_level_0_786 = na
var float fib_extension_level_1 = na
var float fib_extension_level_1_618 = na
// Calculate Fibonacci extension levels
var float swing_low = na
var float swing_high = na
// Here we assume the latest swing low and swing high, adjust based on your logic
swing_low := ta.lowest(low, 20)
swing_high := ta.highest(high, 20)
// Open a long order when any of the conditions are met
if open_condition1 and not order2 and not order1 and not order3 and not order4
strategy.entry("Long", strategy.long, comment="<ema30")
entry_lowest_low1 := lowest_low_prev_two_bars
low_entry_price := low
fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
entry_price := close
order1 := true
if open_condition2 and not order2 and not order1 and not order3 and not order4
strategy.entry("Long", strategy.long, comment="ema5xema30")
entry_lowest_low2 := lowest_low_prev_two_bars
low_entry_price := low
fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
entry_price := close
order2 := true
if open_condition3 and not order2 and not order1 and not order3 and not order4
strategy.entry("Long", strategy.long, comment="high<ema5")
entry_price := close
low_entry_price := low
entry_lowest_low3 := lowest_low_prev_two_bars
fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
order3 := true
if open_condition4 and not order2 and not order1 and not order3 and not order4
strategy.entry("Long", strategy.long, comment="high<ema5444")
entry_price := close
low_entry_price := low
entry_lowest_low4 := lowest_low_prev_two_bars
fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
order4 := true
// Set a stop loss only if the order was opened with the specified conditions
if (not na(entry_price))
if order1
if ta.crossover(ema30,ema10)
strategy.close("Long", comment="stop loss1" )
entry_price := na
order1 := false
low_entry_price := na
if order2
if close < entry_lowest_low2
strategy.close("Long", comment="stop loss2" )
entry_price := na
order2 := false
low_entry_price := na
if order3
if close < entry_lowest_low3
strategy.close("Long", comment="stop loss3" )
entry_price := na
order3 := false
low_entry_price := na
if order4
if close < entry_lowest_low4
strategy.close("Long", comment="stop loss4" )
entry_price := na
order4 := false
low_entry_price := na
if low[1] > ema5[1] and low > ema5 and ema5 > ema10 and ema10 > ema30
strategy.close("Long", comment="profit low > ema5")
entry_price := na
order1 := false
order2 := false
order3 := false
order4 := false
low_entry_price := na
// Take profit at Fibonacci extension levels
if high >= fib_extension_level_0_618 and close <= fib_extension_level_0_618
strategy.close("Long", comment="at 0.618 Fib")
entry_price := na
order1 := false
order2 := false
order3 := false
order4 := false
low_entry_price := na
if high >= fib_extension_level_0_786 and close < fib_extension_level_0_786
strategy.close("Long", comment="at 0.786 Fib")
entry_price := na
order1 := false
order2 := false
order3 := false
order4 := false
low_entry_price := na
if high >= fib_extension_level_1 and close < fib_extension_level_1
strategy.close("Long", comment="at 1 Fib")
entry_price := na
order1 := false
order2 := false
order3 := false
order4 := false
low_entry_price := na
if high >= fib_extension_level_1_618
strategy.close("Long", comment="at 1 Fib")
entry_price := na
order1 := false
order2 := false
order3 := false
order4 := false
low_entry_price := na
// Plot the EMAs for visual reference
plot(ema30, color=color.blue, title="EMA 30")
plot(ema10, color=color.orange, title="EMA 10")
plot(ema5, color=color.red, title="EMA 5")