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).
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:
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.
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)