Strategi Pembalikan Tren RSI

RSI ATR
Tanggal Pembuatan: 2024-04-28 13:33:19 Akhirnya memodifikasi: 2024-04-28 13:33:19
menyalin: 1 Jumlah klik: 546
1
fokus pada
1617
Pengikut

Strategi Pembalikan Tren RSI

Ringkasan

Strategi RSI trend reversal adalah strategi perdagangan kuantitatif yang didasarkan pada indeks relatif kuat (RSI) dan rata-rata real wavelength (ATR). Strategi ini beradaptasi dengan pergerakan pasar yang cepat dengan menyesuaikan stop loss (TP / SL) secara dinamis, menangkap peluang untuk membalikkan tren. Strategi ini berpusat pada RSI, yang digabungkan dengan ATR untuk mengukur volatilitas, dan membangun dua band dinamika yang beradaptasi sebagai dasar untuk membuka posisi yang bersih. Strategi ini dapat digunakan secara mandiri atau sebagai modul stop loss untuk strategi lainnya.

Prinsip Strategi

Inti dari strategi reversal tren RSI adalah membangun stop loss band secara dinamis. Pertama, gunakan fungsi custom highest_custom dan lowest_custom untuk menemukan harga tertinggi dan terendah sejak persimpangan terakhir, membentuk dasar gelombang. Kemudian perhitungkan RSI dan ATR dengan panjang masing-masing, dan kemudian perhitungan sebagai berikut:

  1. Jalur bawah = harga tertinggi ×[1 - (ATR/harga + 1/(RSI turun x multiplier))
  2. Uptrend = harga terendah ×[1 + (ATR/harga + 1/(RSI naik ke rel × multiplier))

Di antaranya multiplier untuk pengguna yang disesuaikan dengan gelombang yang diperluas faktor. Jika harga ke atas menerobos uptrend, maka lebih banyak, dan ke bawah menembus downtrend, maka kosong. Selain itu, warna kedua pita ini juga berubah sesuai dengan posisi relatif dari gelombang harga, untuk memudahkan pengamatan.

Keunggulan Strategis

  1. Adaptif, Stop Loss Belt dapat menyesuaikan diri secara otomatis dengan fluktuasi harga, untuk menanggapi perubahan pasar.
  2. Parameter yang dapat disesuaikan, dengan menyesuaikan parameter seperti panjang, multiplier, dapat secara fleksibel mengontrol sensitivitas strategi.
  3. Logika yang jelas, struktur kode yang masuk akal, mudah dipahami dan dikembangkan kembali.
  4. Aplikasi yang luas, dapat digunakan secara mandiri untuk strategi, atau dapat menambahkan fungsi stop stop loss untuk strategi lainnya.
  5. Perhitungan yang efisien, dengan fungsi kustom seperti highestest_custom, menghindari banyak perhitungan berulang yang disebabkan oleh penggunaan tipe seri.

Risiko Strategis

  1. Pilihan parameter yang tidak tepat dapat membawa risiko tambahan, misalnya panjang yang terlalu kecil dapat menyebabkan perdagangan yang terlalu sering, multiplier yang terlalu besar dapat menyebabkan stop loss yang terlalu longgar.
  2. Kondisi pasar tertentu mungkin kurang efektif, seperti perombakan yang sering terjadi di pasar yang bergejolak dan false breakout yang mungkin menghasilkan lebih banyak perdagangan yang merugikan.
  3. Strategi ini tidak memiliki fungsi penilaian tren sendiri, dan memerlukan sinyal lain untuk digunakan.

Arah optimasi strategi

  1. Anda dapat mempertimbangkan untuk menambahkan indikator penentuan tren, seperti moving average, dan hanya berdagang di titik balik arah tren besar.
  2. Parameter dapat dioptimalkan untuk menemukan kombinasi parameter terbaik seperti length, multiplier, dll.
  3. Ini dapat dikombinasikan dengan indikator teknis lainnya atau indikator sentimen pasar untuk meningkatkan akurasi posisi terbuka.
  4. Dengan menambahkan manajemen posisi, Anda dapat secara ketat mengontrol risiko setiap transaksi.

Meringkaskan

Strategi RSI reversal menggunakan RSI dan ATR untuk membangun band adaptasi yang dapat secara dinamis menyesuaikan titik stop loss dan menanggapi perubahan pasar secara tepat waktu. Strategi ini memiliki logika yang jelas, aplikasi yang luas, dan dapat digunakan sebagai alat yang kuat untuk pedagang kuantitatif. Namun, dalam penggunaan praktis, perhatian harus tetap diberikan pada pilihan parameter dan kontrol risiko, dan disarankan untuk digunakan dalam kombinasi dengan sinyal indikator lainnya untuk meningkatkan kinerja keseluruhan.

Kode Sumber Strategi
/*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)