
La stratégie est un système de trading auto-adaptatif basé sur le double RSI (indice de relative faiblesse). Il combine des indicateurs RSI de différentes périodes de temps pour identifier les tendances du marché et les opportunités de négociation, et pour optimiser la performance des transactions grâce à des mécanismes de gestion des fonds et de contrôle des risques. Le cœur de la stratégie est d’améliorer la rentabilité tout en garantissant la sécurité des transactions grâce à une combinaison synchrone de RSI à plusieurs périodes.
La stratégie utilise l’indicateur RSI à 7 cycles comme signal de trading principal, en combinaison avec le RSI à jour comme filtre de tendance. Lorsque le RSI à court terme franchit le seuil de 40 et que le RSI à jour est supérieur à 55, le système émet plusieurs signaux. Si le cours du portefeuille est inférieur au prix de la position initiale, le système augmente automatiquement la position pour réduire le coût moyen.
Il s’agit d’un système de trading complet qui combine l’analyse technique et la gestion des risques. Il fournit des signaux de trading grâce à la synergie du RSI pluricyclique et contrôle les risques grâce à la gestion des fonds et au mécanisme de stop-loss. La stratégie est adaptée pour fonctionner dans des marchés où la tendance est évidente, mais nécessite une optimisation des paramètres en fonction de la situation réelle du marché.
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Dual RSI with Rebuy Logic + Capital, Commission, and Stop Loss", overlay=true)
// Parameter
rsi_length = input.int(7, title="RSI Length")
daily_rsi_length = input.int(7, title="Daily RSI Length")
capital = input.float(10000, title="Initial Capital", minval=0) // Kapital
risk_per_trade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=1.0) // Risikogröße in Prozent
commission = input.float(0.1, title="Commission (%)", minval=0, maxval=100) // Kommission in Prozent
stop_loss_pct = input.float(5, title="Stop Loss (%)", minval=0.1, maxval=100) // Stop-Loss in Prozent
// Ordergröße berechnen
risk_amount = capital * risk_per_trade
order_size = risk_amount / close // Größe der Order basierend auf Risikogröße und Preis
// Daily RSI
day_rsi = request.security(syminfo.tickerid, "D", ta.rsi(close, daily_rsi_length), lookahead=barmerge.lookahead_on)
// RSI auf aktuellem Timeframe
rsi = ta.rsi(close, rsi_length)
// Kauf- und Verkaufsbedingungen
buy_condition = rsi[1] < 40 and rsi > rsi[1] and day_rsi > 55
sell_condition = rsi[1] > 60 and rsi < rsi[1]
// Variablen, um den Preis des ersten Kaufs zu speichern
var float first_buy_price = na
var bool is_position_open = false
// Kauf-Logik
if buy_condition
if not is_position_open
// Initiales Kaufsignal
strategy.entry("Buy", strategy.long, qty=1)
first_buy_price := close
is_position_open := true
else if close < first_buy_price
// Rebuy-Signal, nur wenn Preis niedriger als erster Kaufpreis
strategy.entry("Rebuy", strategy.long, qty=1)
// Verkaufs-Logik
if sell_condition and is_position_open
strategy.close("Buy")
strategy.close("Rebuy")
first_buy_price := na // Zurücksetzen des Kaufpreises
is_position_open := false
// Stop-Loss-Bedingung
if is_position_open
// Stop-Loss-Preis berechnen (5% unter dem Einstiegspreis)
stop_loss_price = first_buy_price * (1 - stop_loss_pct / 100)
// Stop-Loss für "Buy" und "Rebuy" festlegen
strategy.exit("Stop Loss Buy", from_entry="Buy", stop=stop_loss_price)
strategy.exit("Stop Loss Rebuy", from_entry="Rebuy", stop=stop_loss_price)
// Performance-Metriken berechnen (mit Kommission)
gross_profit = strategy.netprofit / capital * 100
commission_cost = commission / 100 * strategy.closedtrades
net_profit = gross_profit - commission_cost
// Debug-Plots
plot(first_buy_price, title="First Buy Price", color=color.blue, linewidth=1)
plotchar(buy_condition, title="Buy Condition", char='B', location=location.abovebar, color=color.green)
plotchar(sell_condition, title="Sell Condition", char='S', location=location.belowbar, color=color.red)
// Debugging für Performance