この戦略は,過買い値と過売値を決定するために,RSIインジケーターを使用した取引システムを構築し,ダイナミックなトライリングストップ損失と利益目標出口とともに,RSIが過買い値を超えるとショートになり,RSIが過売り値を下回るとロングになります.トライリングストップ損失と利益目標出口はポジションを閉じるのに使用されます.
この戦略は,市場の技術的パターンを判断するために14期RSIインジケーターを使用します.RSIは,市場が過買いまたは過売れているかどうかを判断するために,一定の期間中の上昇と減少力の比率を反映します.RSIの長さは14です.RSIが70を超えると,市場は過買いとみなされ,ショートになります.RSIが30を下回ると,市場は過売りとみなされ,私たちはロングします.
この戦略は,ダイナミック・トレイル・ストップ・ロスのメカニズムを使用している.ロングポジションを保持するときは,トレイル・ストップ価格が閉店価格の97%に設定されている.ショートポジションを保持する場合は,トレイル・ストップ価格が閉店価格の103%である.これは,市場の騒音によって停止されない間,ほとんどの利益をロックする.
最後に,この戦略は利益目標の出口を使用します. ポジション利益が20%に達すると,それは閉鎖されます. これは一部の利益をロックし,利益のリターセスを回避します.
この戦略の利点は以下の通りです.
この戦略のリスクは以下の通りです.
これらのリスクに対処するには RSI パラメータを最適化し ストップ損失パーセントを調整し 利益目標要件を合理的に緩和することが役立ちます
戦略を最適化するためのいくつかの方向性:
この戦略は,ダイナミックなストップと利益を取ることにより,過剰購入/過剰売却市場を決定するためにRSIを使用する明確な論理を持っています.その利点は,理解し実行しやすく,リスク管理が良好で,拡張性が高いことです.次のステップは,信号品質を改善し,戦略をよりスマートにするための自動調節パラメータなどです.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Modified RSI-Based Trading Strategy", overlay=true) // RSI settings rsiLength = input(14, title="RSI Length") overboughtLevel = 70 oversoldLevel = 30 // User-defined parameters trailingStopPercentage = input(3, title="Trailing Stop Percentage (%)") profitTargetPercentage = input(20, title="Profit Target Percentage (%)") rsiValue = ta.rsi(close, rsiLength) var float trailingStopLevel = na var float profitTargetLevel = na // Entry criteria enterLong = ta.crossover(rsiValue, oversoldLevel) enterShort = ta.crossunder(rsiValue, overboughtLevel) // Exit criteria exitLong = ta.crossover(rsiValue, overboughtLevel) exitShort = ta.crossunder(rsiValue, oversoldLevel) // Trailing stop calculation if (strategy.position_size > 0) trailingStopLevel := close * (1 - trailingStopPercentage / 100) if (strategy.position_size < 0) trailingStopLevel := close * (1 + trailingStopPercentage / 100) // Execute the strategy if (enterLong) strategy.entry("Buy", strategy.long) if (exitLong or ta.crossover(close, trailingStopLevel) or ta.change(close) > profitTargetPercentage / 100) strategy.close("Buy") if (enterShort) strategy.entry("Sell", strategy.short) if (exitShort or ta.crossunder(close, trailingStopLevel) or ta.change(close) < -profitTargetPercentage / 100) strategy.close("Sell") // Plot RSI and overbought/oversold levels plot(rsiValue, title="RSI", color=color.blue) hline(overboughtLevel, "Overbought", color=color.red, linestyle=hline.style_dashed) hline(oversoldLevel, "Oversold", color=color.green, linestyle=hline.style_dashed)