전략 개요: 이 전략은 RSI 지표와 가격 사이의 관계를 기반으로 하며, 수익을 취하고 손실을 멈추는 수준을 동적으로 조정함으로써 거래 성능을 최적화합니다. 전략의 주요 아이디어는 RSI 지표의 과잉 구매 및 과잉 판매 특성을 가격 및 거래량 변화와 결합하여 RSI가 분리가 될 때 적시에 수익을 취하는 동시에 동적 스톱 손실을 통해 위험을 제어하는 것입니다.
전략 원칙:
전략적 장점:
전략 위험:
최적화 방향:
요약: RSI 동적 스톱 로스 앤드 테이크 프로프트 전략은 트렌드 시작 시 동적 스톱 로스 앤드 테이크 프로프트 관계를 활용하여 트렌드와 가격의 차이 관계를 결합하여 트레이딩 볼륨의 변화와 동시에 리스크를 제어하기 위해 동적 스톱 로스를 설정하여 트렌드 시작 시 적시에 수익을 취한다. 이 전략의 장점은 트렌드 역전 시 수익을 확보할 수 있고, 전략 드라우다운을 줄이고, 어느 정도 적응력을 가지고 있다는 것이다. 그러나 옆 시장에서 전략은 더 많은 잘못된 신호를 생성할 수 있으므로 다른 기술적 인 지표를 도입하고, 전략 성과를 향상시키기 위해 수익을 취하고, 손실을 멈추는 임계치를 최적화 할 필요가 있다. 또한, 포지션 관리와 매개 변수 최적화는 전략의 안정성과 수익을 더욱 향상시키는 중요한 방향이기도 하다.
/*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")