Динамическая нейронная сеть RSI Trend Follow Trading Стратегия

SMA RSI
Дата создания: 2025-01-17 14:19:08 Последнее изменение: 2025-01-17 14:19:08
Копировать: 3 Количество просмотров: 462
1
Подписаться
1617
Подписчики

Динамическая нейронная сеть RSI Trend Follow Trading Стратегия

Обзор

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

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

Стратегия использует 200-дневную простую скользящую среднюю (SMA) в качестве базовой линии для оценки тренда и объединяет ее с индексом относительной силы (RSI) для генерации торговых сигналов. Конкретно:

  1. Используйте 200-дневную скользящую среднюю для определения общей тенденции и рассматривайте возможность открытия длинной позиции только тогда, когда цена превышает скользящую среднюю.
  2. Когда RSI падает ниже заданного порогового значения (по умолчанию 40), это считается сигналом перепроданности.
  3. Когда оба вышеуказанных условия выполнены и период ожидания (по умолчанию 10 дней) прошел с момента закрытия последней позиции, срабатывает длинный сигнал.
  4. Динамическая защита прибыли во время удержания позиции с помощью скользящего стоп-лосса (по умолчанию 5%)
  5. Когда цена опустится ниже цены скользящего стоп-лосса или опустится ниже 200-дневной скользящей средней, закройте позицию.

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

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

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

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

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

  1. Представляем адаптивный к волатильности процент трейлинг-стопа
  2. Добавить индикатор объема в качестве вспомогательного подтверждения
  3. Используйте экспоненциальную скользящую среднюю вместо простой скользящей средней для повышения чувствительности
  4. Добавьте индикаторы настроений рынка для оптимизации торговых возможностей
  5. Разработать механизм оптимизации динамических параметров
  6. Добавлен механизм подтверждения многопериодной стратегии

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

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

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

//@version=5
strategy("200 SMA Crossover Strategy", overlay=false)

// Define inputs
smaLength = input.int(200, title="SMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.float(40, title="RSI Threshold")
trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)")
waitingPeriod = input.int(10, title="Waiting Period (Days)")

// Calculate 200 SMA
sma200 = ta.sma(close, smaLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Plot the 200 SMA and RSI
plot(sma200, color=color.blue, linewidth=2, title="200 SMA")
plot(rsi, color=color.purple, title="RSI", display=display.none)

// Define buy and sell conditions
var isLong = false
var float lastExitTime = na
var float trailStopPrice = na

// Explicitly declare timeSinceExit as float
float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000)
canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod

buyCondition = close > sma200 and rsi < rsiThreshold and canEnter

if (buyCondition and not isLong)
    strategy.entry("Buy", strategy.long)
    trailStopPrice := na
    isLong := true

// Update trailing stop loss if long
if (isLong)
    trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100))

// Check for trailing stop loss or sell condition
if (isLong and (close < trailStopPrice or close < sma200))
    strategy.close("Buy")
    lastExitTime := time
    isLong := false

// Plot buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")