Быстрый анализ стратегии RSI


Дата создания: 2023-12-04 14:40:02 Последнее изменение: 2023-12-04 14:40:02
Копировать: 0 Количество просмотров: 605
1
Подписаться
1619
Подписчики

Быстрый анализ стратегии RSI

Название стратегии

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

Обзор

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

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

Стратегия использует улучшенный RSI, чтобы определить состояние перекупа и перепродажи цены, в сочетании с фильтрацией шума на объектах K-линии. Когда RSI находится в зоне перекупа или перепродажи, а объем объекта K-линии больше, чем 13 от среднего объема, делайте излишки или делайте пустоту.

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

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

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

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

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

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

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

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

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

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.1", shorttitle = "Fast RSI str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Source")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and fastrsi < dnlimit and body > emabody
dn = bar == 1 and fastrsi > uplimit and body > emabody
exit = ((strategy.position_size > 0 and fastrsi > dnlimit) or (strategy.position_size < 0 and fastrsi < uplimit)) and body > emabody

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()