
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:
Keuntungan dari strategi:
Risiko strategis:
Cara Mengoptimalkan:
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.
/*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")