Стратегия перекрестного использования скользящего среднего показателя RSI

Автор:Чао Чжан, Дата: 2023-11-07 15:35:58
Тэги:

img

Обзор

Стратегия пересечения скользящих средних показателей RSI - это стратегия, которая в основном используется для торговли криптовалютами. Она применяет скользящую среднюю к индикатору RSI и торгует на основе пересечений между RSI и его скользящей средней.

Логика стратегии

Стратегия сначала рассчитывает индикатор RSI. Индикатор RSI отражает силу цены на основе движений вверх и вниз за определенный период времени. RSI выше 70 считается перекупленным, а ниже 30 перепроданным.

После этого стратегия применяет скользящую среднюю к индикатору RSI. Кользящая средняя может отфильтровывать случайные колебания и определять направление тренда. Здесь устанавливается 10-периодная скользящая средняя RSI.

Когда RSI пересекается выше своей скользящей средней, он считается сигналом покупки. Когда RSI пересекается ниже своей скользящей средней, он считается сигналом продажи. Торговля проводится в соответствии с этими двумя сигналами.

В коде сначала рассчитывается индикатор RSI с длиной периода. Затем рассчитывается 10-периодная скользящая средняя ma RSI. Когда ma пересекает rsi, он будет покупать. Когда ma пересекает rsi, он будет продавать.

Кроме того, код наносит график линий для rsi и ma, а также графика столбцов для rsi-ma. Разделяющие линии для rsi=70 и rsi=30 также наносится. Соответствующие стрелки сигнала отмечены на графике при покупке или продаже.

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

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

  • Кроссовер скользящего среднего показателя RSI - это относительно зрелая стратегия торговли, которая может отфильтровать некоторые ложные сигналы.

  • Код стратегии прост и понятен, легко понять.

  • Эта стратегия хорошо работает для криптовалют с относительно очевидными тенденциями.

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

  • Неправильные параметры RSI и скользящих средних периодов могут генерировать слишком много неправильных сигналов.

  • Опираясь исключительно на перекрестные показатели, нельзя полностью избежать ловушки.

  • Торговые издержки могут оказать некоторое влияние на прибыль.

  • Высокая волатильность крипто рынка.

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

Руководство по оптимизации

  • Исследуйте оптимальное сочетание RSI и скользящей средней при различных параметрах периода.

  • Увеличить размер позиции, когда тенденция сильна, и уменьшить, когда тенденция неясна.

  • Установите динамическую стоп-лосс, чтобы следовать за трендом.

  • Исследуйте комбинацию RSI с другими индикаторами для формирования новых торговых сигналов.

  • Исследуйте модели машинного обучения, основанные на этой стратегии для улучшения показателя победы.

Резюме

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


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, minval=1, title="Length")
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))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////













Больше