Sumber dimuat naik... memuat...

Strategi Pembalikan Trend RSI

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

img

Ringkasan

RSI Trend Reversal Strategy adalah strategi perdagangan kuantitatif berdasarkan Indeks Kekuatan Relatif (RSI) dan Julat Benar Purata (ATR). Ia secara dinamik menyesuaikan tahap mengambil keuntungan dan menghentikan kerugian (TP / SL) untuk menyesuaikan diri dengan turun naik pasaran yang pesat dan menangkap peluang pembalikan trend. Strategi ini berpusat di sekitar RSI, digabungkan dengan ATR untuk mengukur turun naik, dan membina dua jalur dinamik adaptif sebagai asas untuk membuka dan menutup kedudukan. Strategi ini boleh digunakan secara bebas atau sebagai mengambil keuntungan dan modul menghentikan kerugian untuk strategi lain. Ia telah diuji dengan baik pada data 15 minit saham seperti Tesla (TSLA), Apple (AAPL), dan Nvidia (NDAV).

Prinsip Strategi

Inti RSI Trend Reversal Strategy terletak pada pembinaan jalur TP/SL dinamik. Pertama, ia menggunakan fungsi custom highest_custom dan lowest_custom untuk mencari harga tertinggi dan terendah sejak persilangan terakhir, membentuk asas jalur. Kemudian, ia mengira RSI dan ATR dengan panjang yang ditentukan oleh pengguna dan melakukan pengiraan berikut:

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

Di sini, pengganda adalah faktor pengembangan band yang ditakrifkan oleh pengguna. Jika harga memecahkan di atas band atas, ia pergi panjang; jika ia memecahkan di bawah band bawah, ia pergi pendek. Warna kedua-dua band ini juga berubah mengikut kedudukan harga berbanding dengan band, menjadikannya mudah untuk memerhatikan.

Kelebihan Strategi

  1. Kemudahan penyesuaian yang tinggi: Julat TP/SL boleh menyesuaikan diri secara automatik berdasarkan turun naik harga, dengan segera bertindak balas terhadap perubahan pasaran.
  2. Parameter yang boleh diselaraskan: Dengan menyesuaikan parameter seperti panjang dan pengganda, kepekaan strategi boleh dikawal secara fleksibel.
  3. Logik yang jelas: Struktur kod adalah munasabah dan mudah difahami dan dikembangkan lebih lanjut.
  4. Penggunaan luas: Ia boleh digunakan secara bebas sebagai strategi atau menambah fungsi TP / SL ke strategi lain.
  5. Kecekapan pengiraan: Dengan menggunakan fungsi tersuai seperti highest_custom, ia mengelakkan pengiraan berulang besar yang disebabkan oleh menggunakan jenis siri.

Risiko Strategi

  1. Pilihan parameter yang tidak betul boleh membawa risiko tambahan. Sebagai contoh, panjang yang kecil boleh membawa kepada perdagangan yang kerap, dan pengganda yang besar boleh membawa kepada kerugian berhenti yang terlalu longgar.
  2. Prestasi mungkin buruk dalam keadaan pasaran tertentu, seperti penyatuan yang kerap dan pecah palsu di pasaran yang tidak menentu, yang boleh mengakibatkan lebih banyak perdagangan yang rugi.
  3. Strategi itu sendiri tidak mempunyai fungsi penilaian trend dan perlu digunakan dalam kombinasi dengan isyarat lain.

Arahan Pengoptimuman Strategi

  1. Pertimbangkan untuk menambah penunjuk trend, seperti purata bergerak, untuk hanya berdagang pada titik pembalikan ke arah trend utama.
  2. Mengoptimumkan parameter untuk mencari kombinasi terbaik panjang, pengganda, dll.
  3. Gabungkan dengan penunjuk teknikal atau penunjuk sentimen pasaran yang lain untuk meningkatkan ketepatan titik masuk dan keluar.
  4. Tambah pengurusan kedudukan untuk mengawal ketat pendedahan risiko setiap perdagangan.

Ringkasan

RSI Trend Reversal Strategy menggunakan RSI dan ATR untuk membina band adaptif yang dapat menyesuaikan titik TP / SL secara dinamik dan segera bertindak balas terhadap perubahan pasaran. Strategi ini mempunyai logika yang jelas, penerapan yang luas, dan boleh menjadi alat yang kuat untuk peniaga kuantitatif. Walau bagaimanapun, dalam penggunaan praktikal, perhatian masih perlu diberikan kepada pemilihan parameter dan kawalan risiko, dan disyorkan untuk menggunakannya dalam kombinasi dengan isyarat penunjuk lain untuk meningkatkan prestasi keseluruhan. Strategi ini mempunyai ruang tambahan untuk pengoptimuman, seperti menambahkan penapis trend dan pengoptimuman parameter. Secara keseluruhan, RSI Trend Reversal Strategy menyediakan pendekatan yang mudah namun berkesan 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 lanjut