RSIのレンジブレイクストラテジーは,典型的なトレンドフォロー戦略である.RSIが過買いまたは過売りレベルにあるとき,トレンドをフォローする目的で,ブレイクアウト機会を探すために,相対強度指数 (RSI) を主な技術指標として使用する.
この戦略は,主にRSI指標に依存し,市場における過剰購入および過剰販売レベルを決定する.RSI計算式は:RSI = (平均上値 / (平均上値 +平均下値)) x 100.平均上値は,過去N日間の近距離振幅の単純な移動平均値である.平均下値は,過去N日間の近距離振幅の単純な移動平均値である.
RSIが過買いライン (デフォルト80) より高いとき,市場は過買い状態にあることを示します.RSIが過売りゾーン (デフォルト35) より低いとき,市場は過売り状態にあることを示します.RSIが過買いラインを壊したときのショートチャンスと,RSIが過売りゾーンを壊したときのロングチャンスを探します.
戦略は,RSIインジケーターのトレンドを決定するために2つのSMAラインを使用します.より速いSMAラインがより遅いSMAラインを壊し,RSIが過剰販売ゾーンを破ると,ロングします.より速いSMAラインがより遅いSMAラインを壊し,RSIが過剰購入ラインを破ると,ショートします.戦略はまた,リスクを制御するためにストップ損失と利益ラインを設定します.
RSIのレンジブレイクストラテジーは,全体的にトレンドフォローする戦略の一種である.RSIインジケーターを通じてトレード信号を決定し,ダブルSMAラインでシグナルをフィルタリングし,リスクを制御するためにストップ・ロストとテイク・プロフィートを設定する.しかし,RSIインジケーターには遅れの問題があり,不適切なパラメータ設定も戦略パフォーマンスに影響を与える.トレンドフォローする能力は,さらなる最適化によって完全に実現することができます.
/*backtest start: 2023-09-10 00:00:00 end: 2023-10-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy("Strategy RSI | Fadior", shorttitle="Strategy RSI", pyramiding=10, calc_on_order_fills=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false) len = input(3, minval=1, title="RSI Length") threshLow = input(title="Treshold Low", defval=35) threshHigh = input(title="Treshold High", defval=80) rsiLength1 = input(title="RSI Smoothing 1", defval=3) rsiLength2 = input(title="RSI Smoothing 2", defval=5) SL = input(title="Stop loss %", type=float, defval=.026, step=.001) TP = input( defval=300) // 3 40 70 2 // 14 40 70 2 16 0.05 50 src = close up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(sma(rsi,rsiLength2), color=orange) plot(sma(rsi,rsiLength1), color=green) band1 = hline(threshHigh) band0 = hline(threshLow) fill(band1, band0, color=purple, transp=90) strategy = input(type=bool, title="Long only ?", defval=true) strategy.risk.allow_entry_in(strategy ? strategy.direction.long : strategy.direction.all) longCondition = sma(rsi,rsiLength1) < threshLow and sma(rsi,rsiLength2) > sma(rsi,rsiLength2)[1] if (longCondition) strategy.entry("Long", strategy.long) //, qty=10) strategy.exit("Close Long", "Long", stop=src-close*SL, profit=TP) shortCondition = sma(rsi,rsiLength1) > threshHigh and sma(rsi,rsiLength2) < sma(rsi,rsiLength2)[1] if (shortCondition) strategy.entry("Short", strategy.short) //, qty=10) strategy.exit("Close Short", "Short") //, stop=src-close*SL, profit=TP)