Индекс относительной силы (RSI) и стратегия пересечения скользящей средней сочетает в себе индикатор RSI и скользящие средние для принятия количественных торговых решений.
RSI измеряет величину последних изменений цен, чтобы оценить, является ли актив перекуплен или перепродан.
Вычислить скользящую среднюю линию (MA) RSI, используя экспоненциальную скользящую среднюю (EMA) или простую скользящую среднюю (SMA).
Когда RSI пересекает линию MA, генерируется сигнал покупки с золотым крестом.
Когда RSI поднимается выше порога перекупления, актив считается перекупленным и может быть инициирована короткая позиция.
Сочетание перекрестных сигналов индикатора с уровнями перекупленности/перепроданности RSI повышает точность торговых решений.
Превышение порогов закупки и перепродажи определяет оптимальные входы и выходы.
Зафиксировать изменение тренда, действуя на сигналы перекрестного действия индикаторов.
RSI может генерировать неправильные сигналы во время неуравновешенных или боковых рынков.
Неправильное установление порога перекупки или перепродажи может привести к слишком свободным или слишком строгим сигналам.
Движущиеся средние чувствительны к краткосрочным аномалиям и пикам волатильности, что увеличивает вероятность преждевременного их прекращения.
Оптимизировать параметр RSI путем тестирования различных периодов длины.
Найти оптимальные периоды скользящей средней путем оценки различных длин MA.
Проверьте различные пороговые уровни перекупа и перепродажи для уточнения сигналов входа.
Включите дополнительные фильтры для проверки сигналов и избегания ложных сделок.
RSI и Moving Average Crossover Strategy объединяют уровни перекупленности/перепроданности RSI с сигналами перепроданности MA для выявления поворотных моментов рынка и улавливания обратных сдвигов.
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //dfurrer45 strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true) src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential") // === BACKTEST RANGE === FromMonth = input(defval = 10, title = "From Month", minval = 1) FromDay = input(defval = 3, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 1, title = "To Month", minval = 1) ToDay = input(defval = 1, title = "To Day", minval = 1) ToYear = input(defval = 9999, title = "To Year", minval = 2014) // === BACKTEST END === backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) rsioverbought = input(90, minval=1, title="RSI % start overbought") rsioversold = input(10, minval=1, title="RSI % start oversold") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen) rsimacrossup = cross(rsi,ma) and rsi > ma rsimacrossdown = cross(rsi,ma) and rsi < ma plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small) plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small) plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small) plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small) closetrade = rsimacrossup or rsimacrossdown strategy.close_all(closetrade) strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold)) strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange) strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange) strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange) strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)