Эта стратегия является адаптивной торговой системой, основанной на двойных индикаторах RSI (индекс относительной силы). Она сочетает в себе индикаторы RSI из разных временных рамок для выявления рыночных тенденций и торговых возможностей при оптимизации торговой эффективности с помощью механизмов управления деньгами и контроля рисков. Основная сила стратегии заключается в синергии между многопериодными RSI для повышения прибыльности при сохранении безопасности торговли.
Стратегия использует 7-периодный индикатор RSI в качестве основного торгового сигнала, в сочетании с ежедневным RSI в качестве трендового фильтра. Длинная позиция начинается, когда краткосрочный RSI превышает 40, а ежедневный RSI превышает 55. Если цена падает ниже первоначальной входной цены во время позиции, система автоматически добавляет в позицию, чтобы снизить среднюю стоимость. Позиции закрываются, когда RSI превышает 60. Для контроля риска реализуется стоп-лосс 5%. Стратегия также включает модуль управления деньгами, который автоматически рассчитывает размеры позиций на основе общего капитала и предварительно установленных коэффициентов риска.
Это полная торговая система, сочетающая в себе технический анализ и управление рисками. Она генерирует торговые сигналы через координацию RSI на несколько периодов, контролируя риск через управление деньгами и механизмы стоп-лосса. Стратегия подходит для трендовых рынков, но требует оптимизации параметров на основе реальных рыночных условий. Хорошая расширяемость системы оставляет место для дальнейшей оптимизации.
/*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