Стратегия кросс-таймфрейма на основе индикатора RSI


Дата создания: 2023-12-29 14:12:54 Последнее изменение: 2023-12-29 14:12:54
Копировать: 0 Количество просмотров: 647
1
Подписаться
1623
Подписчики

Стратегия кросс-таймфрейма на основе индикатора RSI

Обзор

Эта стратегия представляет собой стратегию дефолта BTC на основе RSI на протяжении всего периода времени. Эта стратегия получает кривую VWAP, рассчитывая средневзвешенную стоимость сделки на каждую K-линию (VWAP), а затем применяет RSI к этой кривой.

Стратегический принцип

  1. Вычислите ВВАП на каждую K-линию и получите кривую VWAP
  2. Применение RSI к кривой VWAP с параметрами 20 дней, линией сверхпокупа 85 и линией сверхпродажи 30
  3. Открытие позиции на “после” в момент, когда RSI пересекает “после” в сторону “после” от “после” в сторону “после” от “после”
  4. После удержания позиции на 28 K-линии, если RSI снова пройдет через линию сверхпродажи (<30), то она будет закрыта

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

  1. Используйте VWAP, чтобы отразить реальную цену сделки, а не просто закрытие сделки
  2. Используйте RSI, чтобы определить, насколько вы перекупили и перепродали, чтобы избежать перестрелки
  3. Поскольку это не так, я не могу сказать, что это не так, но это не так.
  4. Риск контролируется, 28 K-линий не повреждены

Риски и решения

  1. Внезапные события привели к резкому росту цен, которые не могли остановиться.
    • Использование временных рамок для снижения риска попадания в ловушку
  2. Неправильно настроенные параметры, легко упустить возможность
    • Тестирование и оптимизация параметров RSI и линий перекупа и перепродажи
  3. К-линия не проходит через супермаркет
    • Гибкость в корректировке параметров в сочетании с другими показателями

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

  1. Проверьте больше комбинаций параметров, чтобы найти оптимальный параметр
  2. В сочетании с другими показателями, такими как MACD, KD и т. Д., можно определить, попал ли человек в зону перекупа или перепродажи.
  3. Настройка параметров тестирования в зависимости от разных сортов
  4. Оптимизация механизма остановки убытков с установкой величины остановки убытков в зависимости от волатильности

Подвести итог

Эта стратегия в сочетании с VWAP и RSI идентифицирует состояние перекупа и перепродажи BTC, действует в режиме временных рамок и позволяет эффективно контролировать риск. Идея стратегии ясна и понятна, заслуживает дальнейшего тестирования и оптимизации, применяется к реальным сделкам.

Исходный код стратегии
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - SHORT SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows the Short and close shoret positions --------------- //

timebull = stratbull and time > stratstart
timebear = stratbear and time > stratstart


strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="")
strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")