
Dual Moving Average Crossover mit RSI Stärke Filter Trading Strategy
Die Strategie verwendet den 5-Zyklus-Indikator Moving Average (EMA5) und den 10-Zyklus-Simple Moving Average (SMA10) als Haupttrendbeurteilungswerkzeug, während der 14-Zyklus-Relativ-Strength-Index (RSI14) als Handelssignalfilter eingeführt wird, um die Genauigkeit des Handels durch strenge Ein- und Ausstiegsbedingungen zu verbessern.
Die Kernlogik der Strategie basiert auf der Kombination zweier wichtiger technischer Indikatoren:
Signalbestätigungsmechanismen sind ausgebaut
Risikokontrollen wirken
Strategie ist klar
Risiko volatiler Märkte
Rückstandsrisiken
Parameterempfindlichkeit
Einführung von Trendstärkenfiltern
Optimierungsparameter passen sich an
Verbesserung des Risikomanagements
Die Strategie baut ein relativ gutes Handelssystem auf, indem sie ein Doppel-Equilibrium-Cross und einen RSI-Filter kombiniert. Die Hauptvorteile der Strategie liegen in ihren Signalbestätigungsmechanismen und Risikokontrollen, aber es gibt auch einige inhärente Einschränkungen. Durch die empfohlene Optimierungsrichtung wird die Strategie voraussichtlich besser im tatsächlichen Handel abschneiden.
/*backtest
start: 2024-06-20 00:00:00
end: 2024-12-01 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("EMA and SMA Crossover with RSI14 Filtering", overlay=true)
// Define parameters for EMA, SMA, and RSI
ema5_length = 5
sma10_length = 10
rsi14_length = 14
rsi60_level = 60
rsi50_level = 50
// Calculate EMAs, SMAs, and RSI
ema5 = ta.ema(close, ema5_length)
sma10 = ta.sma(close, sma10_length)
rsi14 = ta.rsi(close, rsi14_length)
// Define Crossover Conditions
positive_crossover = ta.crossover(ema5, sma10)
negative_crossover = ta.crossunder(ema5, sma10)
// Define RSI filter conditions
rsi_above_60 = rsi14 > rsi60_level
rsi_below_50 = rsi14 < rsi50_level
// Condition: price below 60 on RSI 14 and later crosses above for Buy
price_below_rsi60 = close < rsi14
price_above_rsi60 = close > rsi14
// Condition: price above 50 on RSI 14 and later crosses below for Sell
price_above_rsi50 = close > rsi14
price_below_rsi50 = close < rsi14
// Trading logic
var bool active_buy_trade = false
var bool active_sell_trade = false
// Buy Condition: EMA 5 crosses above SMA 10 and RSI 14 crosses above 60
if (positive_crossover and not active_buy_trade)
if (price_below_rsi60)
// Wait for price to cross above RSI 60
if (price_above_rsi60)
strategy.entry("Buy", strategy.long)
active_buy_trade := true
else
strategy.entry("Buy", strategy.long)
active_buy_trade := true
// Sell Condition: EMA 5 crosses below SMA 10 and RSI 14 crosses below 50
if (negative_crossover and not active_sell_trade)
if (price_above_rsi50)
// Wait for price to cross below RSI 50
if (price_below_rsi50)
strategy.entry("Sell", strategy.short)
active_sell_trade := true
else
strategy.entry("Sell", strategy.short)
active_sell_trade := true
// Exit Buy Condition: Reverse Signal (EMA crosses below SMA or RSI crosses below 50)
if (active_buy_trade and (negative_crossover or rsi14 < rsi50_level))
strategy.close("Buy")
active_buy_trade := false
// Exit Sell Condition: Reverse Signal (EMA crosses above SMA or RSI crosses above 60)
if (active_sell_trade and (positive_crossover or rsi14 > rsi60_level))
strategy.close("Sell")
active_sell_trade := false
// Plotting EMAs, SMAs, and RSI 14 on the chart
plot(ema5, color=color.blue, linewidth=2, title="EMA 5")
plot(sma10, color=color.red, linewidth=2, title="SMA 10")
hline(rsi60_level, "RSI 60", color=color.gray, linestyle=hline.style_dotted)
hline(rsi50_level, "RSI 50", color=color.gray, linestyle=hline.style_dotted)
plot(rsi14, color=color.green, linewidth=1, title="RSI 14")