Динамическая стратегия отслеживания тренда с несколькими многопериодными стоп-лоссами RSI

RSI EMA ATR
Дата создания: 2024-12-05 16:25:17 Последнее изменение: 2024-12-05 16:25:17
Копировать: 0 Количество просмотров: 432
1
Подписаться
1617
Подписчики

Динамическая стратегия отслеживания тренда с несколькими многопериодными стоп-лоссами RSI

Обзор

Это стратегия для отслеживания тенденций, основанная на комбинации технических аналитических показателей, в основном для торговли с помощью RSI, EMA и динамического стоп-лосса. Стратегия использует контроль риска на уровне 1,5% и в сочетании с леверингом для увеличения прибыли.

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

Стратегия использует три основных технических показателя: RSI (относительно сильный показатель), EMA (индексная скользящая средняя) и ATR (средняя реальная волновая amplitude). Входные сигналы перекрестно подтверждаются краткосрочной EMA (9 циклов) и долгосрочной EMA (21 циклов), при этом требуется, чтобы RSI находился в разумном диапазоне (многоголовый RSI <70, пустой RSI>).

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

  1. Строгое управление рисками: фиксированная пропорция управления рисками, ограничение риска на одну сделку на 1,5%
  2. Динамическая стоп-дизайн: динамическая стоп-дизайн на основе ATR лучше адаптируется к рыночным колебаниям
  3. Подтверждение многосигнала: EMA перекрестная совместимость с фильтрацией RSI, повышение надежности сигнала
  4. Оптимизация рисково-прибыльной соотношения: остановка в 4 раза выше, чем остановка, что позволяет получить лучшую ожидаемую прибыль
  5. Подходит для малого капитала: с учетом особенностей счета с небольшим капиталом, использование умеренного леверинга повышает потенциал прибыли
  6. Высокий уровень автоматизации: все параметры настраиваются для оптимизации в соответствии с рыночными условиями

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

  1. Риск рыночных колебаний: возможна частота возникновения убытков в условиях резкой волатильности рынка
  2. Риск использования леверинга: использование двойного леверинга увеличивает убытки
  3. Риск ложного проникновения: ложные сигналы могут появиться на перекрестке EMA
  4. Риск скольжения: в быстром рынке возможны большие скольжения
  5. Управление рисками: необходимость разумного контроля над размером позиций

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

  1. Добавление фильтра тренда: можно добавить более длинные циклы определения тренда
  2. Оптимизация времени входа: можно комбинировать показатели трафика для улучшения места входа
  3. Параметры динамической корректировки: автоматическая корректировка ATR в зависимости от волатильности
  4. Внедрение рыночных настроений: добавление настроений для фильтрации рискованных рыночных условий
  5. Совершенствование управления капиталом: увеличение механизма управления динамическими позициями

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Aggressive Scalper Strategy", overlay=true)

// Parameters
account_balance = input.float(28.37, title="Account Balance", tooltip="Update this with your balance")
risk_per_trade = input.float(0.015, title="Risk per Trade", tooltip="1.5% risk")
leverage = input.int(2, title="Leverage", minval=1)
stop_loss_percentage = input.float(0.015, title="Stop Loss Percentage", tooltip="1.5% stop loss")
take_profit_multiplier = input.float(4, title="Take Profit Multiplier", tooltip="Take Profit is 4x Stop Loss")
stop_loss_multiplier = input.float(2, title="Stop Loss Multiplier", tooltip="Dynamic Stop Loss Multiplier")

// Trade Size Calculation
position_size = account_balance * risk_per_trade / (stop_loss_percentage / leverage)
trade_qty = position_size / close // This gives you the qty in terms of contracts

// Indicators
rsiLength = input.int(14, title="RSI Length")
emaShort = input.int(9, title="Short-term EMA Length")
emaLong = input.int(21, title="Long-term EMA Length")
rsi = ta.rsi(close, rsiLength)
emaShortLine = ta.ema(close, emaShort)
emaLongLine = ta.ema(close, emaLong)

// Entry Conditions
longCondition = ta.crossover(emaShortLine, emaLongLine) and rsi < 70
shortCondition = ta.crossunder(emaShortLine, emaLongLine) and rsi > 30

// ATR for dynamic stop loss and take profit levels
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atr = ta.atr(atrLength)

// Dynamic Take Profit and Stop Loss Levels
longTakeProfitLevel = close + (atr * take_profit_multiplier)
longStopLossLevel = close - (atr * stop_loss_multiplier)
shortTakeProfitLevel = close - (atr * take_profit_multiplier)
shortStopLossLevel = close + (atr * stop_loss_multiplier)

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfitLevel, stop=longStopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel)

// Alert Conditions
alertcondition(longCondition, title="Buy Signal", message="Long position entry signal detected.")
alertcondition(shortCondition, title="Sell Signal", message="Short position entry signal detected.")

// Display Information on Chart
var table_info = table.new(position.top_right, 2, 2, frame_color=color.blue, frame_width=1)
if (bar_index == na)
    table.cell(table_info, 0, 0, text="Aggressive Scalper", bgcolor=color.blue)
    table.cell(table_info, 1, 0, text="Account Balance: $" + str.tostring(account_balance), text_color=color.white)
    table.cell(table_info, 1, 1, text="Risk per Trade: " + str.tostring(risk_per_trade * 100) + "%", text_color=color.white)
    table.cell(table_info, 0, 1, text="Leverage: " + str.tostring(leverage) + "x", text_color=color.white)