
Стратегия называется “Стратегия торговли криптовалютами на основе стохастического RSI”. Стратегия объединяет два показателя - относительно сильный индекс (RSI) и случайный индекс с гладкой движущейся средней (RSI) - для идентификации сигналов покупки и продажи криптовалют.
Основная идея стратегии заключается в следующем: сначала вычислить значения RSI, а затем на основе RSI построить Stochastic RSI, то есть значения K и D. При переходе через значение D выше значения K создается сигнал покупки, а при переходе через значение D ниже значения K - сигнал продажи. Для фильтрации ложных сигналов стратегия также вводит индекс скорости изменения (RVI) и его гладкую скользящую среднюю для подтверждения.
Расчетная длина RSI 14.
Стохастический индикатор RSI, построенный на основе RSI длиной 14, получает значения K и D ((D - 3-х периодное скользящее среднее K)).
Расчетная длина RVI 5 и ее сигнальные линии ((т. е. гладкая скользящая средняя RVI)) [2].
При прохождении K над D, если RVI > сигнальная линия и RVI < сигнальная линия, то создается сигнал покупки; при прохождении K ниже D, если RVI < сигнальная линия и RVI > сигнальная линия, то создается сигнал продажи.
В зависимости от полученного сигнала, совершаются операции по покупке или продаже открытых позиций.
В сочетании с двойным подтверждением Stochastic RSI и RVI, можно эффективно отфильтровывать ложные сигналы.
Индекс RVI может отражать перекуп и перепродажу в краткосрочной перспективе, избегая открытия позиций в крайних точках.
Индекс Stochastic RSI может идентифицировать зоны перекупа и перепродажи, используя форму золотого и крестообразного форка индикатора KDJ для определения точки покупки и продажи.
Результаты обратной связи показывают, что эта стратегия хорошо работает на некоторых криптовалютных торговых парах (например, FCT/BTC).
Аналогичная стратегия для отслеживания стоп-лосс, неправильно настроенная стоп-лосс может привести к тюремному заключению.
Частота создания сигнала может быть слишком высокой, и расходы на транзакцию должны быть учтены.
Как KDJ, так и RVI могут создавать ложные сигналы, что приводит к ненужным потерям.
Параметры стратегии должны быть оптимизированы для различных торговых пар.
Добавить мобильный стоп для блокировки прибыли, можно обратиться к ATR для установки стоп-лосса.
Оптимизация параметров RVI и Stochastic RSI, чтобы сделать сигнал более четким.
Повышение контроля за объемом сделок, чтобы избежать перегрузки отдельных заказов.
Добавление фильтрации, чтобы избежать открытия высоких позиций. Можно ввести индикатор волатильности, чтобы определить, находится ли он в состоянии шока.
Проверка различных криптовалютных пар для поиска наиболее подходящих.
Эта стратегия сначала использует RSI, чтобы построить Stochastic RSI, а затем в сочетании с RVI, чтобы подтвердить сигнал, чтобы обнаружить краткосрочные сверхпокупки и сверхпродажи, чтобы открыть позицию на обратном уровне. Преимущество заключается в том, что двойная подтверждение может отфильтровывать ложные сигналы.
/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Stochastic RSI", shorttitle="Stoch RSI", overlay = true)
Per = input(5, title="Length", minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
K = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
D = sma(K, smoothD)
rvi = sum(swma(close-open), Per)/sum(swma(high-low),Per)
sig = swma(rvi)
//plot(rvi, color=green, title="RVI")
//plot(sig, color=red, title="Signal")
//plot(K, title="K")
//plot(D, title="D")
Dn = K <= D and K > 70 and rvi <= sig and rvi[1] >= sig[1]
Up= K >= D and K < 30 and rvi >= sig and rvi[1] <= sig[1]
ARROW = Up - Dn
plotarrow(ARROW, title="Down Arrow", colordown=red, transp=0, maxheight=10, minheight=10)
plotarrow(ARROW, title="Up Arrow", colorup=lime, transp=0, maxheight=10, minheight=10)
long = crossover(Up, Dn)
short = crossunder(Up, Dn)
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
//plot(long_signal, "BUY", color=green)
//plot(short_signal, "SELL", color=red)
strategy.entry("BUY", strategy.long, when=long_signal)
strategy.entry("SELL", strategy.short, when=short_signal)