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:
Keuntungan Strategi:
Risiko Strategi:
Arah Optimasi:
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")