Многопериодная RSI Momentum и тройная EMA, следующая за трендом, композитная стратегия

RSI EMA
Дата создания: 2024-11-12 15:07:54 Последнее изменение: 2024-11-12 15:07:54
Копировать: 0 Количество просмотров: 130
1
Подписаться
1166
Подписчики

Многопериодная RSI Momentum и тройная EMA, следующая за трендом, композитная стратегия

Обзор

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

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

Стратегия использует треугольную ЭМА 21/50/200 в качестве ориентира для определения тенденции, а также в сочетании с улучшенной версией RSI (считывается с использованием метода Чебышева) для определения состояния перепродажи на рынке. На 1-минутном цикле, когда RSI преодолевает 94, открывается убыток, наступает 4-часовое равновесие, и устанавливается гарантийный стоп, когда RSI возвращается на 50. На 5-минутном цикле, когда цена переходит 200-дневную ЭМА и открывается перебор, наступает равновесие, когда RSI перекупает или падает.

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

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

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

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

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

  1. Введение фильтра частоты колебаний для корректировки параметров во время высоких колебаний
  2. Увеличение механизма подтверждения объема транзакций
  3. Оптимизация RSI, возможное изменение динамики
  4. Добавление дополнительных технических показателей для перекрестной проверки
  5. Внедрение механизма адаптивных параметров
  6. Разработка более тонких механизмов устранения потерь

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

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

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

//@version=5
strategy("Combined RSI Primed and 3 EMA Strategy", overlay=true)

// Input for EMA lengths
emaLength1 = input(21, title="EMA Length 1")
emaLength2 = input(50, title="EMA Length 2")
emaLength3 = input(200, title="EMA Length 3")

// Input for RSI settings
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(94, title="RSI Overbought Level")
rsiNeutral = input(50, title="RSI Neutral Level")
rsiOversold = input(4, title="RSI Oversold Level")

// Calculate EMAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
ema3 = ta.ema(close, emaLength3)

// Calculate RSI using Chebyshev method from RSI Primed
rsi(source) =>
    up = math.max(ta.change(source), 0)
    down = -math.min(ta.change(source), 0)
    rs = up / down
    rsiValue = down == 0 ? 100 : 100 - (100 / (1 + rs))
    rsiValue

rsiValue = rsi(close)

// Plot EMAs
plot(ema1, color=color.red, title="EMA 21")
plot(ema2, color=color.white, title="EMA 50")
plot(ema3, color=color.blue, title="EMA 200")

// Plot RSI for visual reference
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiNeutral, "Neutral", color=color.gray)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsiValue, color=color.blue, title="RSI")

// Trading logic with position management
var bool inPositionShort = false
var bool inPositionLong = false

// Trading logic for 1-minute timeframe
if (rsiValue > rsiOverbought and not inPositionShort)
    strategy.entry("Sell", strategy.short)
    inPositionShort := true

if (rsiValue < rsiOversold and inPositionShort)
    strategy.close("Sell")
    inPositionShort := false

if (ta.crossover(rsiValue, rsiNeutral) and inPositionShort)
    strategy.exit("Break Even", "Sell", stop=close)

// Trading logic for 5-minute timeframe
var float lastBearishClose = na

if (close < ema3 and close[1] >= ema3) // Check if the current close is below EMA200
    lastBearishClose := close

if (not na(lastBearishClose) and close > lastBearishClose and not inPositionLong)
    strategy.entry("Buy", strategy.long)
    inPositionLong := true

if (rsiValue > rsiOverbought and inPositionLong)
    strategy.close("Buy")
    inPositionLong := false

if (ta.crossunder(rsiValue, rsiNeutral) and inPositionLong)
    strategy.exit("Break Even", "Buy", stop=close)

lastBearishClose := na // Reset after trade execution