Стратегия стохастического RSI для торговли криптовалютами

Автор:Чао Чжан, Дата: 2023-12-15 10:08:14
Тэги:

img

I. Обзор стратегии

Эта стратегия называется Stochastic RSI Strategy for Cryptocurrency Trading. Она сочетает в себе индекс относительной силы (RSI) и индикаторы Stochastic RSI для определения сигналов покупки и продажи криптовалют.

Основная идея стратегии заключается в следующем: сначала вычислить значение RSI, а затем построить стохастический индикатор RSI на основе RSI, а именно значения K и D. Когда значение K пересекает значение D, генерируется сигнал покупки. Когда значение K пересекает значение D, генерируется сигнал продажи. Чтобы отфильтровать ложные сигналы, стратегия также вводит индекс скорости изменения (RVI) и его скользящую среднюю линию для подтверждения.

II. Подробные принципы стратегии

  1. Вычислить 14-периодный RSI.

  2. Создать 14-периодный стохастический индикатор RSI, основанный на RSI, чтобы получить значения K и D (D - 3-периодный скользящий средний показатель K).

  3. Вычислить 5-периодическую РВИ и ее сигнальную линию (движущуюся среднюю РВИ).

  4. Когда K переходит выше D, если RVI > Сигнальная линия и последний период s RVI < Сигнальная линия, генерируется сигнал покупки. Когда K переходит ниже D, если RVI < Сигнальная линия и последний период s RVI > Сигнальная линия, генерируется сигнал продажи.

  5. Открывать длинные или короткие позиции на основе генерируемых сигналов.

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

  1. Сочетание стохастического RSI и двойного подтверждения от RVI может эффективно отфильтровать ложные сигналы.

  2. Показатель RVI может отражать краткосрочные условия перекупки/перепродажи и избегает открытия позиций в крайних точках.

  3. Индикатор Stochastic RSI определяет зоны перекупленности/перепроданности.

  4. Результаты обратных тестов показывают, что эта стратегия достигла хороших результатов на некоторых криптовалютных парах (таких как FCT/BTC).

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

  1. Неправильное размещение стоп-лосса аналогичных стратегий задержки может привести к преждевременному прекращению.

  2. Высокая частота сигнала может привести к чрезмерным комиссионным за торговлю, которые следует учитывать.

  3. Как индикаторы KDJ, так и RVI могут генерировать ложные сигналы, что приводит к ненужным потерям.

  4. Параметры стратегии должны быть оптимизированы для различных торговых пар.

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

  1. Добавьте движущуюся стоп-лосс, чтобы зафиксировать прибыль.

  2. Оптимизировать параметры RVI и параметры Stochastic RSI для более чистых сигналов.

  3. Добавьте контроль размера торговли, чтобы избежать чрезмерно больших единичных заказов.

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

  5. Проверить на разных криптовалютных парах, чтобы найти лучшее сочетание.

VI. Резюме стратегии

Эта стратегия сначала строит стохастический RSI на основе индикатора 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)


Больше