Адаптивная система свинг-трейдинга на основе двух индикаторов RSI

RSI SL TP MM ATR RR
Дата создания: 2024-12-13 11:57:17 Последнее изменение: 2024-12-13 11:57:17
Копировать: 4 Количество просмотров: 448
1
Подписаться
1617
Подписчики

Адаптивная система свинг-трейдинга на основе двух индикаторов RSI

Обзор

Стратегия представляет собой адаптивную торговую систему, основанную на двойном RSI (относительно слабых индикаторах). Она объединяет RSI для разных временных периодов, чтобы идентифицировать рыночные тенденции и торговые возможности и оптимизировать торговую производительность с помощью механизмов управления капиталом и контроля риска.

Стратегический принцип

Стратегия использует 7-циклический RSI в качестве основного торгового сигнала, а в сочетании с RSI в качестве трендового фильтра. Когда короткий цикл RSI прорывается вверх ниже 40 и RSI вверх больше 55, система посылает несколько сигналов. Если цена упадет ниже цены первоначального размещения во время хранения позиции, система автоматически увеличит позицию, чтобы снизить среднюю стоимость.

Стратегические преимущества

  1. Многоциклический RSI повышает надежность сигнала
  2. Приспособность к адаптивным механизмам пополнения запасов позволяет эффективно снижать стоимость хранения
  3. Система управления капиталом, автоматически корректирующая позиции в зависимости от предпочтений в отношении риска
  4. Фиксированная защита от стоп-лосс, строгий контроль риска на каждой сделке
  5. С учётом стоимости сделки, более соответствующая реальному состоянию сделки

Стратегический риск

  1. RSI может подавать ложные сигналы в условиях резких колебаний рынка
  2. Гарантированные потери могут быть значительными в условиях продолжающегося падения
  3. Фиксированные процентные стоп-лоры могут быть слишком консервативными в периоды высокой волатильности
  4. Стоимость сделки может существенно повлиять на доход при частом совершении сделки
  5. Необходимо реализовать стратегию поддержки достаточной ликвидности

Направление оптимизации стратегии

  1. Введение показателя волатильности (например, ATR) для динамического регулирования стоп-позиции
  2. Увеличение фильтров интенсивности тренда, чтобы уменьшить ложные сигналы на колеблющихся рынках
  3. Оптимизация логики наращивания запасов, динамическая корректировка с учетом волатильности рынка
  4. Добавить RSI подтверждающий сигнал с более длительным периодом времени
  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