戦略概要 この戦略は,RSIインジケーターと価格の関係に基づいており,Take ProfitとStop Lossのレベルを動的に調整することで取引パフォーマンスを最適化しています.戦略の主な考え方は,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")