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