Система количественной стратегии тренда импульса с двумя индикаторами

RSI MA ATR TP/SL
Дата создания: 2025-01-17 16:40:55 Последнее изменение: 2025-01-17 16:41:17
Копировать: 0 Количество просмотров: 545
1
Подписаться
1617
Подписчики

Система количественной стратегии тренда импульса с двумя индикаторами

Обзор

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

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

Стратегия использует двухуровневый механизм подтверждения сигнала:

  1. Уровень подтверждения тренда: используйте пересечение быстрой скользящей средней (FastMA) и медленной скользящей средней (SlowMA) для определения рыночного тренда. Когда быстрая линия прорывает медленную линию снизу вверх, считается, что установился восходящий тренд; когда быстрая линия опускается ниже медленной линии сверху вниз, считается, что установился нисходящий тренд.
  2. Уровень подтверждения импульса: используйте индикатор RSI в качестве инструмента подтверждения импульса. При восходящем тренде RSI должен быть ниже 50, что указывает на то, что рынку еще есть куда расти; при нисходящем тренде RSI должен быть выше 50, что указывает на то, что рынку еще есть куда падать.
  3. Торговый фильтр: отфильтровывает торговые сигналы с недостаточной ликвидностью или волатильностью, устанавливая минимальные пороговые значения для объема и волатильности ATR.

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

  1. Многомерное подтверждение сигнала: объединение индикаторов тренда и импульса снижает вероятность ложных сигналов.
  2. Идеальное управление рисками: интегрированные функции стоп-лосса и тейк-профита, возможность установки точек контроля риска в процентном соотношении.
  3. Гибкий механизм фильтрации: фильтры объема и волатильности можно гибко включать и выключать в зависимости от рыночных условий.
  4. Механизм автоматического закрытия: Автоматически закрывает позиции при появлении сигнала разворота, чтобы избежать чрезмерного удержания.

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

  1. Риск волатильности рынка: на боковом и волатильном рынке могут часто появляться ложные сигналы прорыва.
  2. Риск проскальзывания: когда рынок сильно колеблется, фактическая цена транзакции может значительно отклоняться от цены срабатывания сигнала.
  3. Чувствительность параметров: эффективность стратегии во многом зависит от настроек параметров, и разные рыночные условия могут потребовать разных комбинаций параметров.

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

  1. Динамическая настройка параметров: можно внедрить механизм адаптивных параметров для динамической настройки периода скользящей средней и порогового значения RSI в соответствии с колебаниями рынка.
  2. Система оценки силы сигнала: создайте систему оценки силы сигнала и назначайте различные веса в зависимости от эффективности различных показателей.
  3. Классификация рыночной среды: добавьте модуль идентификации рыночной среды и используйте различные торговые стратегии в различных рыночных условиях.
  4. Улучшенный контроль рисков: внедрение динамического механизма стоп-лосса для автоматической корректировки позиции стоп-лосса в соответствии с волатильностью рынка.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

// © Boba2601
//@version=5
strategy("RSI-MA Synergy", overlay=true, margin_long=100, margin_short=100)

// === Налаштування індикаторів ===
length_rsi = input.int(14, title="RSI Period", group="Індикатори")
fastMALength = input.int(9, title="Fast MA Length", group="Індикатори")
slowMALength = input.int(21, title="Slow MA Length", group="Індикатори")

// === Налаштування стоп-лосу і тейк-профіту ===
useStopLossTakeProfit = input.bool(true, title="Використовувати стоп-лос і тейк-профіт", group="Стоп-лос і Тейк-профіт")
stopLossPercent = input.float(2.0, title="Стоп-лос (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")
takeProfitPercent = input.float(4.0, title="Тейк-профіт (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")

// === Налаштування об'єму та волатильності ===
useVolumeFilter = input.bool(false, title="Використовувати фільтр об'єму", group="Об'єм та Волатильність")
volumeThreshold = input.int(50000, title="Мінімальний об'єм", group="Об'єм та Волатильність")
useVolatilityFilter = input.bool(false, title="Використовувати фільтр волатильності", group="Об'єм та Волатильність")
atrLength = input.int(14, title="Період ATR для волатильності", group="Об'єм та Волатильність")
volatilityThreshold = input.float(1.5, title="Мінімальна волатильність (ATR)", step=0.1, group="Об'єм та Волатильність")


// === Розрахунок індикаторів ===
rsiValue = ta.rsi(close, length_rsi)
fastMA = ta.sma(close, fastMALength)
slowMA = ta.sma(close, slowMALength)

// === Розрахунок об'єму та волатильності ===
averageVolume = ta.sma(volume, 20)
atrValue = ta.atr(atrLength)

// === Умови входу в позицію ===
longCondition = ta.crossover(fastMA, slowMA) and rsiValue < 50
if useVolumeFilter
    longCondition := longCondition and volume > volumeThreshold
if useVolatilityFilter
    longCondition := longCondition and atrValue > volatilityThreshold

shortCondition = ta.crossunder(fastMA, slowMA) and rsiValue > 50
if useVolumeFilter
    shortCondition := shortCondition and volume > volumeThreshold
if useVolatilityFilter
    shortCondition := shortCondition and atrValue > volatilityThreshold

// === Логіка входу та виходу з позиції ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    if (useStopLossTakeProfit)
        stopLossPrice = close * (1 - stopLossPercent / 100)
        takeProfitPrice = close * (1 + takeProfitPercent / 100)
        strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    if (useStopLossTakeProfit)
        stopLossPrice = close * (1 + stopLossPercent / 100)
        takeProfitPrice = close * (1 - takeProfitPercent / 100)
        strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// === Закриття позицій за зворотнім сигналом ===
if (strategy.position_size > 0 and (ta.crossunder(fastMA, slowMA) or rsiValue > 50))
    strategy.close("Long", comment="Закрито по сигналу")

if (strategy.position_size < 0 and (ta.crossover(fastMA, slowMA) or rsiValue < 50))
    strategy.close("Short", comment="Закрито по сигналу")