Сверхпроданная криптовалютная стратегия VWAP-RSI

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

img

Обзор

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

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

  1. Вычислить VWAP каждой свечи, чтобы получить кривую VWAP
  2. Применить индикатор RSI к кривой VWAP, длительностью 20 дней, уровнем перекупленности на 85 и уровнем перепроданности на 30
  3. Когда RSI пересекается вниз от зоны перекупленности (85) до зоны перепроданности (30), открыть короткую позицию
  4. Закрыть позицию после удержания 28 свечей или если RSI снова пересечет линию перепроданности (30)

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

  1. Использование VWAP вместо простой ценовой отметки для отражения фактической торговой цены
  2. Определить статус перекупленности/перепроданности с помощью RSI, чтобы избежать покупки высокой цены и продажи низкой
  3. Торговля в разные периоды времени, чтобы избежать ловушки
  4. Контролируемый риск с 28 стоп-лоссами

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

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

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

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

Резюме

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


/*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="")

Больше