
Es handelt sich um eine Handelsstrategie, die auf der Kreuzung von 15- und 50-Zyklen-Indikatoren (EMA) basiert. Die Strategie ermöglicht eine optimale Kontrolle des Risiko-Gewinn-Verhältnisses durch eine intelligente Einstellung von Stop-Loss und Take-Profit. Die Strategie ist nicht nur in der Lage, Trendwende-Signale zu erfassen, sondern auch die Handelsparameter automatisch an die Marktfluktuation anzupassen, um die Stabilität und Profitabilität der Strategie zu verbessern.
Die Kernlogik der Strategie basiert auf einem Kreuzsignal aus schnellen EMA ((15-Zyklen) und langsamen EMA ((50-Zyklen)). Wenn die schnelle Linie eine langsame Linie durchläuft, erzeugt das System ein Mehrfachsignal; Wenn die schnelle Linie unter der langsamen Linie durchläuft, erzeugt das System ein Leerlaufsignal. Um die Risikomanagement zu optimieren, verwendet die Strategie eine dynamische Stop-Loss-Einstellmethode, d. h. der niedrigste Eröffnungspreis der vorherigen 2 K-Linien als Mehrfachstop-Loss und der höchste Eröffnungspreis als Leerlaufstop-Loss.
Es handelt sich um eine strukturierte, logisch eindeutige, einheitlich-lineare Crossover-Strategie. Durch die Kombination klassischer technischer Analysemethoden mit modernen Risikomanagementtechniken wird eine bessere Risiko-Gewinn-Eigenschaft der Strategie erreicht. Obwohl ein gewisser Optimierungsraum besteht, weist der Grundrahmen der Strategie eine gute Praxistauglichkeit und Erweiterbarkeit auf.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30)
// Input for EMAs
ema_short_length = input(15, title="Short EMA Length")
ema_long_length = input(50, title="Long EMA Length")
// Calculate EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
// Plot EMAs
plot(ema_short, color=color.blue, title="15 EMA")
plot(ema_long, color=color.red, title="50 EMA")
// Entry Conditions (Any EMA Cross)
cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long)
// Determine Trade Direction
is_long = ta.crossover(ema_short, ema_long)
is_short = ta.crossunder(ema_short, ema_long)
// Stop Loss and Take Profit
long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles
short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles
long_take_profit = close + 2 * (close - long_stop_loss)
short_take_profit = close - 2 * (short_stop_loss - close)
// Execute Trades
if (cross_condition)
if (is_long)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
else if (is_short)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// Plot Stop Loss and Take Profit Levels
plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2)
plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2)
plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2)
plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)