Strategi henti rugi dan ambil untung dinamik RSI


Tarikh penciptaan: 2024-03-19 15:54:01 Akhirnya diubah suai: 2024-03-19 15:54:01
Salin: 1 Bilangan klik: 623
1
fokus pada
1617
Pengikut

Strategi henti rugi dan ambil untung dinamik RSI

Gambaran Strategik: Strategi ini didasarkan pada hubungan antara indikator RSI dan harga, untuk mengoptimumkan prestasi perdagangan dengan secara dinamik menyesuaikan titik hentian dan hentian. Idea utama strategi ini adalah untuk menggunakan ciri-ciri RSI yang terlalu banyak, menggabungkan perubahan harga dan jumlah transaksi, berhenti tepat pada masanya apabila RSI berlaku, sambil mengawal risiko dengan hentian dinamik.

Prinsip-prinsip strategi:

  1. Hitung nilai RSI dan tentukan had overbought dan oversold berdasarkan parameter input.
  2. Dengan membandingkan nilai RSI semasa dengan nilai RSI beberapa baris K sebelumnya, anda dapat menentukan sama ada terdapat bentuk atas ((isPeak) atau bentuk bawah ((isBottom)
  3. Apabila muncul bentuk puncak, isyarat jual dihasilkan jika harga semasa lebih tinggi daripada puncak sebelumnya dan jumlah transaksi lebih kecil daripada jumlah transaksi puncak sebelumnya.
  4. Apabila terdapat bentuk terendah, isyarat beli dihasilkan jika harga semasa lebih rendah daripada titik terendah terendah sebelumnya, dan jumlah transaksi lebih kecil daripada jumlah transaksi terendah sebelumnya.
  5. Selepas isyarat beli dicetuskan, ia berhenti apabila harga kembali ke titik rendah sebelumnya atau apabila jumlah transaksi lebih kecil daripada jumlah transaksi sebelumnya.
  6. Selepas isyarat jual, ia berhenti apabila harga melambung ke paras tertinggi sebelumnya atau apabila jumlah dagangan kurang daripada paras tertinggi sebelumnya.
  7. Selepas membuka kedudukan, menetapkan harga hentian kerugian sebagai peratusan tertentu dari harga pembukaan kedudukan ((2%)), untuk mengawal risiko.

Kelebihan strategi:

  1. Dengan cara berhenti dinamik, anda boleh mengunci keuntungan tepat pada masanya pada awal perubahan trend, meningkatkan keuntungan strategi.
  2. Menggunakan perubahan jumlah lalu lintas sebagai kriteria penilaian tambahan, anda boleh menyaring isyarat palsu dengan berkesan dan meningkatkan ketepatan isyarat.
  3. Tetapan Hentikan Kerosakan (Stop Loss Setup) dapat mengawal pintu risiko perdagangan tunggal dengan berkesan, mengurangkan strategi penarikan balik.
  4. Parameter boleh disesuaikan untuk persekitaran pasaran dan jenis perdagangan yang berbeza.

Risiko strategik:

  1. Dalam pasaran yang bergolak, RSI mungkin sering menunjukkan isyarat overbought dan oversold yang menyebabkan lebih banyak isyarat palsu.
  2. Tetapan stop loss mungkin menyebabkan strategi ditarik balik dalam jangka masa pendek.
  3. Strategi ini mungkin kurang berkesan dalam pasaran yang sedang trend berbanding strategi trend-following.

Arah untuk dioptimumkan:

  1. Indikator teknikal lain seperti MACD, Brinband dan sebagainya boleh dipertimbangkan untuk meningkatkan kebolehpercayaan isyarat.
  2. Nilai terhad untuk hentian hentian yang dioptimumkan, disesuaikan dengan ciri-ciri pelbagai jenis dan keadaan pasaran yang dinamik.
  3. Tambah modul pengurusan kedudukan untuk menyesuaikan saiz kedudukan mengikut turun naik pasaran dan keadaan risiko akaun.
  4. Optimumkan parameter strategi untuk mencari kombinasi parameter yang optimum.

Kesimpulannya: Strategi hentian kerugian RSI melalui hubungan RSI dengan harga, menggabungkan perubahan kuantiti perdagangan, berhenti tepat pada masanya pada awal trend, sambil menetapkan hentian kerugian dinamik untuk mengawal risiko. Keuntungan strategi ini adalah dapat mengunci keuntungan pada awal pembalikan trend, mengurangkan pengunduran strategi, dan mempunyai kebolehpasangan tertentu. Tetapi dalam pasaran yang bergolak, strategi ini mungkin akan menunjukkan lebih banyak isyarat palsu, oleh itu perlu memperkenalkan petunjuk teknikal lain dan mengoptimumkan nilai hentian kerugian untuk meningkatkan prestasi strategi.

Kod 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")