Triple BB Bands Breakout dengan Strategi RSI

Penulis:ChaoZhang, Tanggal: 2024-02-29 14:57:49
Tag:

img

Gambaran umum

Strategi ini menggabungkan Bollinger Bands dan indikator RSI untuk menghasilkan sinyal perdagangan. Ini memantau apakah harga penutupan tiga candlestick menerobos band atas atau bawah pada saat yang sama, dan menggabungkan indikator Vortex dan indikator RSI untuk mengkonfirmasi sinyal perdagangan.

Prinsip Strategi

Strategi ini didasarkan pada prinsip-prinsip berikut:

  1. Menggunakan 20-periode Bollinger Bands, mempertimbangkan penerbitan sinyal perdagangan ketika harga memecahkan band atas atau bawah pada penutupan
  2. Membutuhkan tiga candlesticks untuk menerobos pada saat yang sama untuk menghindari breakouts palsu
  3. Menggabungkan indikator Vortex, ketika sangat overbought VIP>1.25, ketika sangat oversold VIM>1.25, menyaring sinyal
  4. Gabungkan indikator RSI untuk menentukan overbought dan oversold, pertimbangkan untuk short ketika RSI melewati 70, dan pertimbangkan untuk long ketika RSI melewati 30
  5. Ketika kondisi di atas terpenuhi, sinyal panjang dan pendek dihasilkan

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Triple BB band menyaring keluar breakout palsu dan memastikan keandalan dari breakout
  2. Indikator Vortex menilai kekuatan pasar dan menghindari perdagangan yang tidak menguntungkan di pasar
  3. Indikator RSI menilai area overbought dan oversold, dikombinasikan dengan indikator Bollinger Bands untuk masuk
  4. Kombinasi dari beberapa indikator secara komprehensif menilai situasi pasar, dan keandalan sinyal relatif tinggi

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Indikator Bollinger Bands sangat sensitif terhadap parameter, panjang dan StdDev multiplier perlu dioptimalkan
  2. Indikator Vortex juga cukup sensitif terhadap parameter siklus, yang perlu disesuaikan untuk pasar yang berbeda
  3. Indikator RSI rentan terhadap divergensi dan juga mungkin tidak melihat tren
  4. Jika ada ketidaksepakatan dalam penilaian tiga indikator, tidak mungkin untuk masuk, kehilangan beberapa kesempatan

Langkah-langkah pengendalian risiko meliputi:

  1. Mengoptimalkan parameter dan menggunakan parameter dengan tingkat kemenangan tertinggi dalam backtesting
  2. Menggabungkan indikator lain, seperti penyaringan volume perdagangan
  3. Meredakan logika penilaian indikator dengan tepat untuk mencegah kehilangan peluang yang baik

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan panjang dan StdDev pengganda Bollinger Bands untuk menemukan parameter optimal
  2. Mengoptimalkan siklus indikator Vortex untuk membuatnya lebih cocok untuk pasar yang berbeda
  3. Meningkatkan penilaian indikator lain, seperti volume perdagangan, MACD, dll, untuk memperkaya sinyal yang beragam
  4. Sesuaikan logika penilaian indikator untuk mencegah ketidakmampuan masuk karena divergensi indikator
  5. Meningkatkan strategi stop loss untuk mengendalikan kerugian maksimum per perdagangan

Ringkasan

Strategi ini menggabungkan beberapa indikator untuk penilaian. Sementara memastikan keandalan sinyal, ia juga memiliki beberapa masalah. Melalui optimasi parameter, sumber sinyal yang diperkaya, logika penilaian yang disesuaikan dan stop loss, dll, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut. Ini memberikan ide yang baik untuk perdagangan kuantitatif.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm

//@version=5
strategy(title='RSI + BB  over 3 bar+--- vortex0.71.3  ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true)

length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)

upperBand = basis + dev
lowerBand = basis - dev

isClosedBar = ta.change(time("15"))

var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false


// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)

VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR

//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")

sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)

shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel




if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])

    if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
        strategy.entry("Short", strategy.short)
        closeAboveUpperBand := false  // Reset the condition when entering a new Short position
    if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
        strategy.entry("Long", strategy.long)
        closeBelowLowerBand := false  // Reset the condition when entering a new Long position



if strategy.position_size > 0  // Check if there is an open Long position
    closeAboveUpperBand := close > upperBand  // Update the condition based on close price
    if closeAboveUpperBand
        strategy.close("Long",disable_alert=true)  // Close the Long position if close price is above upper band

if strategy.position_size < 0  // Check if there is an open Short position
    closeBelowLowerBand := close < lowerBand  // Update the condition based on close price
    if closeBelowLowerBand
        strategy.close("Short",disable_alert=true)  // Close the Short position if close price is below lower band

// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

Lebih banyak