RSI レンジブレイク戦略

作者: リン・ハーンチャオチャン開催日:2023年10月11日 15:54:11
タグ:

概要

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インジケーターは遅延効果があり,トレンド逆転点を逃す可能性があります.
    • インディケーターの感度を最適化するために,RSIパラメータを適切に調整する.
  • 過剰購入と過剰販売のゾーン設定が不適切で,利益範囲の難易度は高まる
    • 合理的な設定を確保するために,異なる市場に応じてパラメータを調整する
  • ストップ・ロスのポイントが近づいてすぎると,夜間変動によって簡単に停止されます.
    • 閉じ込まれるのを避けるために適切なストップ損失距離を拡大する
  • 利益設定を小さくし,トレンドランスを完全に把握できない
    • 市場変動に基づいて 利得率を柔軟に調整する

オプティマイゼーションの方向性

  • RSIの遅れの問題を避けるために,KDJ,MACDなど,エントリータイミングを決定するために他の指標と組み合わせます.
  • トレンドに反する取引を避けるために主要なトレンドの判断を加える
  • ストップ・ロスの最適化と 利益の引き上げの戦略,例えば トレイリング・ストップ,移動・利益の引き上げなど
  • 異なる製品のパラメータ設定を区別し,市場の特徴に基づいて合理的なパラメータを決定する
  • ポジション管理戦略を追加し,オーダーを追加することでポジションを調整します

概要

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)


もっと