Indikator Momentum RSI Reversal Trading Strategy

Penulis:ChaoZhang, Tanggal: 2024-01-03 12:09:48
Tag:

img

Gambaran umum

Strategi ini pertama-tama menghitung ADX dan SMA pada kerangka waktu yang lebih tinggi untuk mengidentifikasi arah tren dan perubahan. Kemudian RSI dihitung pada kerangka waktu yang lebih rendah untuk mengidentifikasi kondisi overbought dan oversold untuk menghasilkan sinyal perdagangan.

Logika Strategi

  1. ADX pada jangka waktu yang lebih tinggi menilai kekuatan tren.

  2. SMA pada jangka waktu yang lebih tinggi menilai arah tren. SMA yang naik mewakili harga yang naik, SMA yang turun mewakili harga yang turun.

  3. RSI pada kerangka waktu yang lebih rendah menilai kondisi overbought dan oversold.

  4. Ketika ADX naik, SMA naik, dan RSI overbought pada kerangka waktu yang lebih rendah, dianggap bahwa tren naik menguat, pergi pendek di sini.

  5. Ketika ADX naik, SMA turun, dan RSI oversold pada kerangka waktu yang lebih rendah, dianggap bahwa tren penurunan menguat, pergi panjang di sini.

Analisis Keuntungan

  1. Menggabungkan penilaian tren dan perdagangan pembalikan, dapat menangkap peluang pembalikan dalam tren utama.

  2. Menggunakan indikator di seluruh kerangka waktu, meningkatkan keandalan sinyal.

  3. Strategi RSI mudah dipahami dan diterapkan.

Analisis Risiko

  1. Potensi untuk sinyal RSI palsu, menyebabkan kehilangan perdagangan dapat mengoptimalkan parameter untuk mengurangi sinyal palsu.

  2. Penghakiman tren siklus utama dapat salah, membuat strategi tidak cocok untuk kondisi pasar.

  3. Frekuensi perdagangan yang berpotensi tinggi, mempengaruhi profitabilitas karena biaya transaksi.

Arahan Optimasi

  1. Uji lebih banyak kombinasi parameter untuk menemukan pencocokan optimal antara RSI dan ADX, parameter SMA.

  2. Tambahkan mekanisme stop loss untuk mengendalikan kerugian perdagangan tunggal.

  3. Pertimbangkan indikator volatilitas untuk mengurangi ukuran posisi ketika volatilitas rendah.

  4. Mengoptimalkan harga masuk dan keluar tertentu, seperti masuk pendek setelah memecahkan bar tinggi sebelumnya.

Kesimpulan

Strategi ini menggabungkan penilaian tren dan sinyal pembalikan untuk menemukan pembalikan lokal dalam tren utama. Dibandingkan dengan hanya menggunakan RSI, ini lebih dapat diandalkan dan menghindari terjebak. Secara keseluruhan strategi yang relatif konservatif cocok untuk investor yang ingin mengurangi sinyal palsu. pengujian parameter lebih lanjut dan pengoptimalan mekanisme dapat meningkatkan kinerja strategi.


/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RSI scalping", overlay=true)

CustSession 	= input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0	= input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )

RSI = rsi(close, 7)

res		=	CustSession ? SessionTF0 : period

o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)

 // ADX higher time frame
dirmov(len) =>
	up = change(h)
	down = -change(l)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truer = request.security(syminfo.tickerid, res, tr)
	truerange = rma(truer, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len

ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2]  > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising 

if (longCondition)
    strategy.entry("Long entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

Lebih banyak