Эта стратегия является улучшенной версией индикатора RSI, разработанного Джоном Элерсом.
Вычислить среднюю цену xValue с помощью 6 бар.
Расчет суммы CU23 вверх и CD23 вниз на основе xValue.
Вычислить нормализованное значение RES nRes как CU23/(CU23 + CD23).
Создание длинных/коротких сигналов путем сравнения nRes с порогами.
Возможность обратного подачи сигналов.
Введите длинный/короткий на основе сигналов.
Стратегия эффективно сглаживает кривую RSI, улучшая ее расчет, в некоторой степени уменьшая ложные сигналы. Дальнейшая фильтрация и оптимизация параметров могут улучшить производительность. Но некоторое отставание сохраняется как система импульса. В целом, простая и надежная система прорыва стоит дальнейших исследований и оптимизации.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-19 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/11/2017 // This is new version of RSI oscillator indicator, developed by John Ehlers. // The main advantage of his way of enhancing the RSI indicator is smoothing // with minimum of lag penalty. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Smoothed RSI Backtest ver.2") Length = input(10, minval=1) TopBand = input(0.8, step=0.01) LowBand = input(0.2, step=0.01) reverse = input(false, title="Trade reverse") hline(TopBand, color=red, linestyle=line) hline(LowBand, color=green, linestyle=line) xValue = (close + 2 * close[1] + 2 * close[2] + close[3] ) / 6 CU23 = sum(iff(xValue > xValue[1], xValue - xValue[1], 0), Length) CD23 = sum(iff(xValue < xValue[1], xValue[1] - xValue, 0), Length) nRes = iff(CU23 + CD23 != 0, CU23/(CU23 + CD23), 0) pos = iff(nRes > TopBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="Smoothed RSI")