Strategi stop loss dan take profit dinamis RSI


Tanggal Pembuatan: 2024-03-19 15:54:01 Akhirnya memodifikasi: 2024-03-19 15:54:01
menyalin: 1 Jumlah klik: 623
1
fokus pada
1617
Pengikut

Strategi stop loss dan take profit dinamis RSI

Strategi yang disusun: Strategi ini didasarkan pada hubungan antara indikator RSI dan harga, untuk mengoptimalkan kinerja perdagangan dengan mengadaptasi stop loss stop loss secara dinamis. Gagasan utama strategi ini adalah memanfaatkan karakteristik overbought dan oversold dari indikator RSI, menggabungkan perubahan harga dan volume transaksi, untuk menghentikan tepat waktu jika RSI menyimpang, sambil mengendalikan risiko melalui stop loss dinamis.

Prinsip-prinsip Strategi:

  1. Hitung nilai indikator RSI, dan berdasarkan parameter yang dimasukkan, tentukan batas overbought dan oversold.
  2. Dengan membandingkan nilai RSI saat ini dengan nilai RSI dari beberapa garis K sebelumnya, untuk menentukan apakah ada bentuk atas ((isPeak) atau bentuk bawah ((isBottom))
  3. Pada saat munculnya bentuk puncak, sinyal jual dihasilkan jika harga saat ini lebih tinggi dari puncak sebelumnya dan volume transaksi kurang dari volume transaksi puncak sebelumnya.
  4. Pada saat munculnya bentuk dasar, sinyal beli dihasilkan jika harga saat ini lebih rendah dari titik terendah sebelumnya dan volume transaksi lebih kecil dari volume transaksi di dasar sebelumnya.
  5. Setelah sinyal beli dipicu, stop ketika harga kembali ke titik terendah sebelumnya atau volume transaksi lebih kecil dari volume transaksi sebelumnya.
  6. Setelah sinyal jual dipicu, stop trading dilakukan ketika harga rebound ke puncak tertinggi sebelumnya atau volume transaksi lebih kecil dari volume transaksi puncak sebelumnya.
  7. Setelah membuka posisi, setel harga stop loss menjadi persentase tertentu dari harga membuka posisi (<= 2%), untuk mengendalikan risiko.

Keuntungan dari strategi:

  1. Dengan cara stop-loss dinamis, Anda dapat mengunci keuntungan tepat waktu pada awal pembalikan tren dan meningkatkan keuntungan strategi.
  2. Menggunakan perubahan volume lalu lintas sebagai kriteria penilaian tambahan, dapat secara efektif memfilter sinyal palsu dan meningkatkan akurasi sinyal.
  3. Pengaturan Stop Loss dapat secara efektif mengontrol risiko dari transaksi tunggal dan mengurangi strategi penarikan balik.
  4. Parameter dapat disesuaikan untuk lingkungan pasar dan varietas perdagangan yang berbeda.

Risiko strategis:

  1. Dalam pasar yang bergoyang, indikator RSI mungkin akan sering mengalami sinyal overbought dan oversold, yang menyebabkan strategi menghasilkan lebih banyak sinyal palsu.
  2. Pengaturan Stop Loss dapat menyebabkan strategi yang lebih besar untuk ditarik kembali dalam jangka pendek.
  3. Strategi ini mungkin kurang efektif dalam pasar yang sedang tren dibandingkan dengan strategi yang mengikuti tren.

Cara Mengoptimalkan:

  1. Indikator teknis lainnya, seperti MACD, Brinband, dan lain-lain, dapat dipertimbangkan untuk meningkatkan keandalan sinyal.
  2. Optimalkan nilai terendah dari stop loss, sesuai dengan karakteristik varietas dan dinamika lingkungan pasar.
  3. Tambahkan Modul Manajemen Posisi untuk menyesuaikan ukuran posisi berdasarkan volatilitas pasar dan kondisi risiko akun.
  4. Optimalisasi parameter untuk strategi, untuk menemukan kombinasi parameter yang optimal.

Kesimpulannya: Strategi stop loss dinamis RSI melalui hubungan RSI dengan harga, menggabungkan perubahan volume perdagangan, berhenti pada waktu yang tepat pada awal tren, sekaligus mengatur stop loss dinamis untuk mengendalikan risiko. Keuntungan dari strategi ini adalah dapat mengunci keuntungan pada awal pembalikan tren, mengurangi penarikan kembali strategi, dan memiliki beberapa fleksibilitas. Namun, di pasar yang bergolak, strategi ini mungkin akan muncul lebih banyak sinyal palsu, sehingga perlu untuk memperkenalkan indikator teknis lainnya dan mengoptimalkan stop loss untuk meningkatkan kinerja strategi. Selain itu, menambahkan manajemen posisi dan pengoptimalan parameter juga merupakan arah penting untuk meningkatkan stabilitas dan keuntungan strategi lebih lanjut.

Kode Sumber 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")