
Dies ist eine Trend-Tracking-Strategie, die ein Gleichgewichtskreuz und einen relativ starken Indikator (RSI) kombiniert. Die Strategie bestimmt die Richtung des Markttrends durch die Kreuzung von kurz- und langfristigen Moving Averages und verwendet den RSI als Momentumfilter, um die Stärke des Trends zu bestätigen und so die Zuverlässigkeit der Handelssignale zu erhöhen. Die Strategie enthält auch prozentuale Stopps und Stopps für das Risikomanagement.
Die Strategie verwendet den einfachen Moving Average (SMA) mit 9 und 21 Perioden als Haupttrendindikator. Wenn der kurzfristige Mittelwert den langfristigen Mittelwert aufwärts durchbricht und der RSI größer als 50 ist, erzeugt das System ein Mehrsignal. Wenn der kurzfristige Mittelwert den langfristigen Mittelwert nach unten durchbricht und der RSI kleiner als 50 ist, erzeugt das System ein Nullsignal.
Dies ist eine strukturierte, logisch klare Trend-Tracking-Strategie. Die Basis-Trend-Richtung wird durch Gleichgewichtskreuzung bereitgestellt, der RSI bietet eine Dynamikbestätigung, die dann mit einem Risikomanagement-Mechanismus kombiniert wird, um ein vollständiges Handelssystem zu bilden. Obwohl es einige inhärente Einschränkungen gibt, wird die Strategie durch kontinuierliche Optimierung und Anpassung eine stabile Leistung in verschiedenen Marktumgebungen aufweisen.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy")
// --- Input Parameters ---
shortMA = input.int(9, title="Short MA Period", minval=1)
longMA = input.int(21, title="Long MA Period", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100
takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100
// --- Calculate Moving Averages ---
shortMA_value = ta.sma(close, shortMA)
longMA_value = ta.sma(close, longMA)
// --- Calculate RSI ---
rsi_value = ta.rsi(close, rsiLength)
// --- Buy and Sell Conditions ---
longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50
shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50
// --- Plot Moving Averages ---
plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA")
plot(longMA_value, color=color.red, linewidth=2, title="Long MA")
// --- Plot RSI (Optional) ---
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi_value, color=color.purple, title="RSI")
// --- Strategy Execution ---
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// --- Risk Management (Stop Loss and Take Profit) ---
longStopLoss = close * (1 - stopLossPercent)
longTakeProfit = close * (1 + takeProfitPercent)
shortStopLoss = close * (1 + stopLossPercent)
shortTakeProfit = close * (1 - takeProfitPercent)
// Set the stop loss and take profit for long and short positions
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)