RSI Strategi Stop Loss dan Take Profit Dinamis

Penulis:ChaoZhangTanggal: 2024-03-19 15:54:01
Tag:

img

Ringkasan Strategi: Strategi ini didasarkan pada hubungan antara indikator RSI dan harga, mengoptimalkan kinerja perdagangan dengan menyesuaikan secara dinamis tingkat take profit dan stop loss.

Prinsip Strategi:

  1. Menghitung nilai indikator RSI dan menentukan ambang overbought dan oversold berdasarkan parameter input.
  2. Hukum apakah formasi puncak (isPeak) atau formasi dasar (isBottom) muncul dengan membandingkan nilai RSI saat ini dengan nilai RSI dari beberapa lilin sebelumnya.
  3. Ketika pembentukan puncak muncul, jika harga saat ini lebih tinggi dari puncak puncak sebelumnya dan volume perdagangan lebih kecil dari volume perdagangan puncak sebelumnya, sinyal jual dihasilkan.
  4. Ketika pembentukan dasar muncul, jika harga saat ini lebih rendah dari dasar dasar sebelumnya dan volume perdagangan lebih kecil dari volume perdagangan dasar sebelumnya, sinyal beli dihasilkan.
  5. Setelah sinyal beli dipicu, ambil keuntungan ketika harga kembali ke posisi terendah di bawah sebelumnya atau volume perdagangan lebih kecil dari volume perdagangan di bawah sebelumnya.
  6. Setelah sinyal jual dipicu, ambil keuntungan ketika harga bangkit ke puncak tertinggi sebelumnya atau volume perdagangan lebih kecil dari volume perdagangan puncak sebelumnya.
  7. Setelah membuka posisi, atur harga stop loss menjadi persentase tertentu (2%) dari harga pembukaan untuk mengendalikan risiko.

Keuntungan Strategi:

  1. Dengan mengambil keuntungan secara dinamis, keuntungan dapat dikunci secara tepat waktu pada awal pembalikan tren, meningkatkan hasil strategi.
  2. Menggunakan perubahan volume perdagangan sebagai kondisi penilaian tambahan dapat secara efektif menyaring sinyal palsu dan meningkatkan akurasi sinyal.
  3. Menetapkan stop loss dapat secara efektif mengontrol eksposur risiko dari satu transaksi dan mengurangi penarikan strategi.
  4. Parameter dapat disesuaikan dan berlaku untuk lingkungan pasar yang berbeda dan varietas perdagangan.

Risiko Strategi:

  1. Dalam pasar sisi, indikator RSI dapat menghasilkan sinyal overbought dan oversold yang sering, menyebabkan strategi menghasilkan lebih banyak sinyal palsu.
  2. Menetapkan stop loss dapat menyebabkan strategi mengalami drawdown besar dalam jangka pendek.
  3. Prestasi strategi di pasar tren mungkin tidak sebaik strategi yang mengikuti tren.

Arah Optimasi:

  1. Pertimbangkan untuk memperkenalkan indikator teknis lainnya, seperti MACD, Bollinger Bands, dll, untuk meningkatkan keandalan sinyal.
  2. Mengoptimalkan ambang untuk mengambil keuntungan dan stop loss, dan secara dinamis menyesuaikan mereka sesuai dengan karakteristik varietas yang berbeda dan lingkungan pasar.
  3. Tambahkan modul manajemen posisi untuk menyesuaikan ukuran posisi sesuai dengan volatilitas pasar dan status risiko akun.
  4. Melakukan optimasi parameter pada strategi untuk menemukan kombinasi parameter yang optimal.

Ringkasan: Strategi RSI Dynamic Stop Loss and Take Profit mengambil keuntungan secara tepat waktu pada awal tren dengan memanfaatkan hubungan divergensi antara indikator RSI dan harga, dikombinasikan dengan perubahan dalam volume perdagangan, sambil menetapkan stop loss dinamis untuk mengendalikan risiko. Keuntungan dari strategi ini adalah dapat mengunci keuntungan pada awal pembalikan tren, mengurangi penarikan strategi, dan memiliki kemampuan beradaptasi tertentu. Namun, di pasar sampingan, strategi dapat menghasilkan lebih banyak sinyal palsu, sehingga perlu untuk memperkenalkan indikator teknis lainnya dan mengoptimalkan ambang keuntungan dan stop loss untuk meningkatkan kinerja strategi. Selain itu, menambahkan manajemen posisi dan pengoptimalan parameter juga merupakan arah penting untuk meningkatkan stabilitas dan pengembalian strategi.


/*backtest
start: 2024-03-11 00:00:00
end: 2024-03-15 09:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RMM_byMR", overlay=true)

// RSI uzunluğu girişi
rsiLength = input(14, title="RSI Uzunluğu")

// Tepe ve dip seviyeleri için girişler
overboughtLevel = input(70, title="Aşırı Alım Seviyesi")
oversoldLevel = input(30, title="Aşırı Satım Seviyesi")

// RSI hesaplama
rsiValue = rsi(close, rsiLength)

// Son tepe noktalarını tespit etme // Son dip noktalarını tespit etme
isPeak = rsiValue[2] > overboughtLevel and rsiValue[2] > rsiValue[1] and rsiValue[2] > rsiValue[3] and (rsiValue[1] > rsiValue or rsiValue[3] > rsiValue[4])
isBottom = rsiValue[2] < oversoldLevel and rsiValue[2] < rsiValue[1] and rsiValue[2] < rsiValue[3] and (rsiValue[1] < rsiValue or rsiValue[3] < rsiValue[4])

// Önceki tepe noktalarını tespit etme
prevPeak = valuewhen(isPeak, rsiValue[2], 1)
prevPeakHighPrice = valuewhen(isPeak, high[2], 1)
volumePeak = valuewhen(isPeak, volume[1]+volume[2]+volume[3], 1)
prevPeakBarIndex = valuewhen(isPeak, bar_index, 1)

// Önceki dip noktalarını tespit etme
prevBottom = valuewhen(isBottom, rsiValue[2], 1)
prevBottomLowPrice = valuewhen(isBottom, low[2], 1)
volumeBottom = valuewhen(isBottom, volume[1]+volume[2]+volume[3], 1)
prevBottomBarIndex = valuewhen(isBottom, bar_index, 1)

// Tepe noktasında satış sinyali
isSellSignal = prevPeakBarIndex > prevBottomBarIndex and isPeak and rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice and (volume[1]+volume[2]+volume[3]) < volumePeak
isBuyTakeProfit = isPeak and ((rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice) or (rsiValue[2] < prevPeak and (volume[1]+volume[2]+volume[3]) < volumePeak))

// Dip noktasında alış sinyali
isBuySignal = prevBottomBarIndex > prevPeakBarIndex and isBottom and rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice and (volume[1]+volume[2]+volume[3]) < volumeBottom
isSellTakeProfit = isBottom and ((rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice) or (rsiValue[2] > prevBottom and (volume[1]+volume[2]+volume[3]) < volumeBottom))

sellTakeProfit = valuewhen(isSellTakeProfit, low, 1)
buyTakeProfit = valuewhen(isBuyTakeProfit, high, 1)

// isSellTakeProfit koşulu için işaretlemeyi yap
plotshape(isSellTakeProfit, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small, title="Sell Take Profit", offset=-2) 

// isBuyTakeProfit koşulu için işaretlemeyi yap
plotshape(isBuyTakeProfit, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, title="Buy Take Profit", offset=-2)

buyComment = "Buy \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n Low:" + tostring(round(low[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2))
sellComment = "Sell \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n High:" + tostring(round(high[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2)) 

// Alış sinyali durumunda uzun pozisyon aç
if (isBuySignal)
    strategy.entry("Buy", strategy.long, comment = buyComment )
    strategy.exit("SL", "Buy", stop=close * 0.98)

// Satış sinyali durumunda kısa pozisyon aç
if (isSellSignal)
    strategy.entry("Sell", strategy.short, comment = sellComment )
    strategy.exit("SL","Sell", stop=close * 1.02)
// Limit değerini sonradan belirleme


// Alış sinyali durumunda uzun pozisyon kapat
if (isBuyTakeProfit)
    strategy.close("Buy", comment="TP")

// Satış sinyali durumunda kısa pozisyon kapat
if (isSellTakeProfit)
    strategy.close("Sell", comment="TP")

Lebih banyak