В процессе загрузки ресурсов... загрузка...

Система торговли адаптивным диапазоном на основе двойных индикаторов RSI

Автор:Чао Чжан, Дата: 2024-12-13 11:57:17
Тэги:РСИSLТПММATRRR

img

Обзор

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

Принципы стратегии

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

Преимущества стратегии

  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



Связанные

Больше