Количественная торговая стратегия на основе линейной регрессии RSI


Дата создания: 2024-01-24 11:35:19 Последнее изменение: 2024-01-24 11:35:19
Копировать: 0 Количество просмотров: 449
1
Подписаться
1166
Подписчики

Количественная торговая стратегия на основе линейной регрессии RSI

Обзор

Стратегия основана на дизайне индикатора RSI с линейным возвратом. Стратегия генерирует сигналы покупки и продажи, рассчитывая пересечение RSI с линейным возвратом и EMA. Стратегия одновременно предоставляет два варианта логики покупки, которые могут быть выбраны в зависимости от необходимости.

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

Сначала стратегия рассчитывает линейный регресс длиной 200 циклов, а затем на основе результатов линейного регресса рассчитывает RSI длиной 21 цикла. Затем рассчитывает EMA длиной 50 циклов. Когда RSI превышает EMA, это дает сигнал о покупке, а когда RSI превышает EMA, это дает сигнал о продаже.

Эта стратегия предлагает две логики покупки:

  1. RSI покупает по EMA
  2. RSI выше EMA и покупают, когда они выше линии покупки

В зависимости от ситуации на рынке можно выбрать логику покупки.

Анализ преимуществ

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

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

Эта стратегия предлагает два варианта логики покупки, которые можно более гибко корректировать в зависимости от стадии рынка. Например, первая логика может быть выбрана при явных тенденциях, а вторая - при колебаниях.

Анализ рисков

Эта стратегия основное зависит от отношений между RSI и EMA, и изменение отношений между ними может привести к ошибкам в торговых сигналах. Это является основным риском.

Кроме того, RSI и EMA, как сами показатели, могут отставать, что может привести к определенной задержке покупок и продаж и неспособности идеально захватить переломные моменты. Это также несет определенный уровень реального риска.

Чтобы снизить риск, можно соответствующим образом скорректировать параметры длины RSI и EMA, оптимизируя сочетание между ними. Эта валюта также должна уместно контролировать, чтобы избежать чрезмерных потерь.

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

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. Оптимизируйте параметры длины линейной регрессии RSI и EMA, чтобы найти оптимальную комбинацию параметров
  2. Добавление фильтров для других показателей, таких как MACD, Brinband и т. д., для улучшения качества сигнала
  3. Позиционное управление в сочетании с показателями волатильности
  4. Автоматическая оптимизация параметров с использованием методов машинного обучения

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

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

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

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)