VWAP-RSI Oversold Crossunder BTC Pendek Strategi

Penulis:ChaoZhang, Tarikh: 2023-12-29 14:12:54
Tag:

img

Ringkasan

Ini adalah strategi pendek BTC merentasi jangka masa berdasarkan penunjuk RSI VWAP. Ia mengira Harga Purata Bertimbang Volume (VWAP) setiap candlestick untuk mendapatkan kurva VWAP, dan kemudian menggunakan penunjuk RSI ke kurva. Apabila penunjuk RSI melintasi ke bawah dari zon beli berlebihan, ia menjadi pendek pada BTC.

Logika Strategi

  1. Mengira VWAP setiap candlestick untuk mendapatkan lengkung VWAP
  2. Menggunakan penunjuk RSI kepada lengkung VWAP, dengan tempoh 20 hari, tahap overbought pada 85 dan tahap oversold pada 30
  3. Apabila RSI melintasi dari zon overbought (85) ke zon oversold (30), buka kedudukan pendek
  4. Tutup kedudukan selepas memegang 28 candlestick, atau jika RSI melintasi garis oversold (30) sekali lagi

Analisis Kelebihan

  1. Gunakan VWAP bukannya harga penutupan mudah untuk mencerminkan harga dagangan sebenar
  2. Mengenali status overbought/oversold dengan RSI untuk mengelakkan membeli tinggi dan menjual rendah
  3. Perdagangan merentasi jangka masa untuk mengelakkan terperangkap
  4. Risiko yang boleh dikawal dengan 28 stop loss candlestick

Risiko & Penyelesaian

  1. Harga melonjak dengan cepat kerana peristiwa black swan, tidak dapat menghentikan kerugian
    • Mengamalkan perdagangan merentasi jangka masa untuk mengurangkan risiko terperangkap
  2. Tetapan parameter yang tidak sesuai, mudah terlepas peluang
    • Uji dan optimumkan parameter RSI dan tahap overbought/oversold
  3. RSI tidak dapat melintasi zon oversold
    • Gabungkan dengan penunjuk lain untuk menentukan trend, menyesuaikan parameter dengan fleksibel

Arahan pengoptimuman

  1. Uji lebih banyak kombinasi parameter untuk mencari optimum
  2. Gabungkan dengan MACD, KD dan lain-lain untuk menilai status overbought/oversold
  3. Tetapan parameter ujian secara berasingan untuk aset yang berbeza
  4. Mengoptimumkan mekanisme stop loss, menetapkan julat stop loss berdasarkan turun naik

Ringkasan

Strategi ini mengenal pasti status overbought / oversold BTC dengan kombinasi VWAP dan RSI. Dengan berdagang di seluruh bingkai masa, ia dapat mengawal risiko dengan berkesan. Logik strategi jelas dan mudah difahami, bernilai ujian lanjut dan pengoptimuman untuk perdagangan langsung.


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

Lebih lanjut