
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:
Kelebihan strategi:
Risiko strategik:
Arah untuk dioptimumkan:
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.
/*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")