Diese Strategie kombiniert zwei technische Indikatoren: Relative Strength Index (RSI) und Moving Average Convergence Divergence (MACD). Sie verwendet RSI, um überkaufte und überverkaufte Bedingungen zu bestimmen, und MACD, um die Trendrichtung zu identifizieren, um eine vollständige Long-Short-Strategie zu bilden. Wenn RSI überkauft ist, wird ein Verkaufssignal generiert und die Position geschlossen, wenn die MACD-Schnelllinie über die langsame Linie geht. Wenn RSI überverkauft ist, wird ein Kaufsignal generiert, und die Position wird geschlossen, wenn die MACD-Schnelllinie unter die langsame Linie geht. Der Stop-Loss-Punkt wird durch Berechnung der Hälfte der durchschnittlichen Preisänderung des Vermögenswerts festgelegt.
Durch die Verwendung des RSI zur Bestimmung von Überkauf- und Überverkaufszuständen tritt die Strategie zu Beginn einer Umkehrung ein. Durch die Verwendung des MACD zur Identifizierung der Trendrichtung schließt sie die Position zu Beginn eines Trends und erfasst den Trend effektiv. Die beiden Indikatoren ergänzen sich gegenseitig und bilden ein komplettes Handelssystem.
Diese Strategie verwendet RSI, um überkaufte und überverkaufte Bedingungen und MACD zu bestimmen, um die Trendrichtung zu identifizieren, um ein komplettes Long-Short-Handelssystem zu bilden. Die Strategielogik ist klar, und die Vorteile sind offensichtlich, während es auch bestimmte Risiken gibt. Durch Parameteroptimierung, Hinzufügen von Filterbedingungen, Positionsmanagement und Kombination mit anderen Strategien kann die Leistung dieser Strategie weiter verbessert werden, was sie zu einer robusten Handelsstrategie macht.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="RSI & MACD Strategy", shorttitle="RSI & MACD", overlay=true) // Définition des entrées rsi_length = 14 rsi_overbought = 70 rsi_oversold = 30 macd_fast_length = 12 macd_slow_length = 26 macd_signal_length = 9 // Fonction pour calculer le RSI calculate_rsi(source, length) => price_change = ta.change(source) up = ta.rma(price_change > 0 ? price_change : 0, length) down = ta.rma(price_change < 0 ? -price_change : 0, length) rs = up / down rsi = 100 - (100 / (1 + rs)) rsi // Fonction pour calculer le MACD calculate_macd(source, fast_length, slow_length, signal_length) => fast_ma = ta.ema(source, fast_length) slow_ma = ta.ema(source, slow_length) macd = fast_ma - slow_ma signal = ta.ema(macd, signal_length) hist = macd - signal [macd, signal, hist] // Calcul des indicateurs rsi_value = calculate_rsi(close, rsi_length) [macd_line, signal_line, _] = calculate_macd(close, macd_fast_length, macd_slow_length, macd_signal_length) // Conditions d'entrée et de sortie // Entrée en vente : RSI passe de >= 70 à < 70 sell_entry_condition = ta.crossunder(rsi_value, rsi_overbought) // Sortie en vente : MACD fast MA croise au-dessus de slow MA sell_exit_condition = ta.crossover(macd_line, signal_line) // Entrée en achat : RSI passe de <= 30 à > 30 buy_entry_condition = ta.crossover(rsi_value, rsi_oversold) // Sortie en achat : MACD fast MA croise en-dessous de slow MA buy_exit_condition = ta.crossunder(macd_line, signal_line) // Affichage des signaux sur le graphique plotshape(series=sell_entry_condition, title="Sell Entry", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small) plotshape(series=sell_exit_condition, title="Sell Exit", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small) plotshape(series=buy_entry_condition, title="Buy Entry", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=buy_exit_condition, title="Buy Exit", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small) // Entrées et sorties de la stratégie if (sell_entry_condition) strategy.entry("Short", strategy.short) if (sell_exit_condition) strategy.close("Short") if (buy_entry_condition) strategy.entry("Long", strategy.long) if (buy_exit_condition) strategy.close("Long")