
Die Strategie kombiniert zwei technische Indikatoren, den relativ starken Index (RSI) und den Moving Average Convergence Index (MACD), um eine vollständige Multi-Band-Strategie zu bilden, in der der RSI überkauft und der MACD die Richtung der Tendenz bestimmt. Wenn der RSI überkauft, gibt es ein Verkaufssignal, der MACD schnellen Linie kreuzt nach oben und ebnet die Position; Wenn der RSI überkauft, gibt es ein Kaufsignal, der MACD schnellen Linie kreuzt nach unten und ebnet die Position. Die Stop-Loss-Einstellung wird durch Berechnung der Hälfte des durchschnittlichen Anstiegs der Sorte bestimmt.
Überkauf und Überverkauf durch den RSI, Intervention in der Anfangsphase der Marktumkehr; Verwendung des MACD, um die Richtung des Trends zu bestimmen und die Tendenz zu Beginn des Trends zu erfassen. Die beiden Indikatoren ergänzen sich und bilden ein vollständiges Handelssystem.
Die Strategie bildet ein vollständiges Multi-Stock-Trading-System, das über den RSI überkauft und überverkauft wird, und die MACD über die Trendrichtung. Die Strategie hat eine klare Logik, die Vorteile sind klar, aber auch ein gewisses Risiko besteht. Durch die Optimierung der Parameter, das Hinzufügen von Filterbedingungen, Positionsmanagement und die Kombination mit anderen Strategien kann die Performance der Strategie weiter verbessert werden, um sie zu einer soliden Handelsstrategie zu machen.
/*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")