Sumber daya yang dimuat... Pemuatan...

Strategi Pembalikan Tren RSI

Penulis:ChaoZhang, Tanggal: 2024-04-28 13:33:19
Tag:RSIATR

img

Gambaran umum

RSI Trend Reversal Strategy adalah strategi perdagangan kuantitatif berdasarkan Relative Strength Index (RSI) dan Average True Range (ATR). Strategi ini secara dinamis menyesuaikan tingkat take profit dan stop loss (TP/SL) untuk beradaptasi dengan fluktuasi pasar yang cepat dan menangkap peluang pembalikan tren. Strategi ini berpusat di sekitar RSI, dikombinasikan dengan ATR untuk mengukur volatilitas, dan membangun dua band dinamis adaptif sebagai dasar untuk membuka dan menutup posisi. Strategi ini dapat digunakan secara independen atau sebagai modul take profit dan stop loss untuk strategi lain.

Prinsip Strategi

Inti dari RSI Trend Reversal Strategy terletak pada konstruksi band TP/SL yang dinamis. Pertama, menggunakan fungsi custom highest_custom dan lowest_custom untuk menemukan harga tertinggi dan terendah sejak crossover terakhir, membentuk dasar band. Kemudian, RSI dan ATR dihitung dengan panjang yang ditentukan oleh pengguna dan melakukan perhitungan berikut:

  1. Band bawah = Harga tertinggi × [1 - (ATR/Price + 1/(RSI Band bawah × multiplier))]
  2. Band atas = Harga terendah × [1 + (ATR/Price + 1/(RSI Band atas × multiplier))]

Di sini, pengganda adalah faktor ekspansi band yang didefinisikan pengguna. Jika harga pecah di atas band atas, itu akan panjang; jika pecah di bawah band bawah, itu akan pendek. Warna dari kedua band ini juga berubah sesuai dengan posisi harga relatif terhadap band, sehingga mudah diamati.

Keuntungan Strategi

  1. Kemampuan beradaptasi yang tinggi: Band TP/SL dapat menyesuaikan diri secara otomatis berdasarkan volatilitas harga, dengan cepat merespons perubahan pasar.
  2. Parameter yang dapat disesuaikan: Dengan menyesuaikan parameter seperti panjang dan pengganda, sensitivitas strategi dapat dikontrol secara fleksibel.
  3. Logika yang jelas: Struktur kode masuk akal dan mudah dimengerti dan dikembangkan lebih lanjut.
  4. Penerapan luas: Dapat digunakan secara independen sebagai strategi atau menambahkan fungsionalitas TP/SL ke strategi lain.
  5. Efisiensi komputasi: Dengan menggunakan fungsi kustom seperti highest_custom, ini menghindari perhitungan berulang besar yang disebabkan oleh menggunakan jenis seri.

Risiko Strategi

  1. Pemilihan parameter yang tidak tepat dapat membawa risiko tambahan. Misalnya, panjang kecil dapat menyebabkan perdagangan yang sering, dan pengganda besar dapat menyebabkan stop loss yang terlalu longgar.
  2. Kinerja mungkin buruk dalam kondisi pasar tertentu, seperti konsolidasi yang sering dan breakout palsu di pasar yang tidak stabil, yang dapat mengakibatkan lebih banyak perdagangan yang rugi.
  3. Strategi itu sendiri tidak memiliki fungsi penilaian tren dan perlu digunakan dalam kombinasi dengan sinyal lain.

Arah Optimasi Strategi

  1. Pertimbangkan untuk menambahkan indikator tren, seperti rata-rata bergerak, untuk hanya berdagang pada titik pembalikan ke arah tren utama.
  2. Mengoptimalkan parameter untuk menemukan kombinasi terbaik panjang, pengganda, dll.
  3. Gabungkan dengan indikator teknis atau indikator sentimen pasar lainnya untuk meningkatkan akurasi titik masuk dan keluar.
  4. Tambahkan manajemen posisi untuk mengontrol eksposur risiko masing-masing perdagangan.

Ringkasan

RSI Trend Reversal Strategy menggunakan RSI dan ATR untuk membangun band adaptif yang dapat secara dinamis menyesuaikan titik TP / SL dan segera menanggapi perubahan pasar. Strategi ini memiliki logika yang jelas, penerapan yang luas, dan dapat menjadi alat yang kuat untuk pedagang kuantitatif. Namun, dalam penggunaan praktis, perhatian masih perlu dibayar untuk pemilihan parameter dan pengendalian risiko, dan disarankan untuk menggunakannya dalam kombinasi dengan sinyal indikator lain untuk meningkatkan kinerja secara keseluruhan. Strategi ini memiliki ruang lebih lanjut untuk optimasi, seperti menambahkan filter tren dan optimasi parameter. Secara keseluruhan, RSI Trend Reversal Strategy memberikan pendekatan sederhana namun efektif untuk perdagangan kuantitatif.


/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)

Berkaitan

Lebih banyak