資源の読み込みに... 荷物...

RSI レンジ トレーディング戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月6日 16:12:23
タグ:

img

概要

RSIのレンジトレード戦略は,RSIが過買いまたは過売りレベルに達するときにトレンドに反して取引することで利益を得ます.これは,価格が永遠に1つの方向にトレンドではなく,範囲内で前後振動するという仮定に基づいています.この戦略は,RSIが極端に突入するときに引き下げを活用することを目指しています.

戦略の論理

この戦略は,価格が過剰購入または過剰販売レベルに達したかどうかを判断するために,RSI指標を計算する.具体的には,RSI期間が2バーに設定されている.過剰購入線は91であり,過剰販売線は11である.RSIが過剰購入レベルを超えるとショート信号が生成される.RSIが過剰販売レベルを下回るとロング信号が生成される.ポジションサイズは取引毎の最大リスクの5%に設定される.

リスクをコントロールするために,ストップ・ロスのメカニズムが実装される.ロングを開いた後にロングポジションに対して価格が0.5%移動した場合,ポジションは閉鎖されます.ショートポジションも同じです.これは価格が1方向に強く動いているときに過度の損失を回避します.

要約すると,基本論理は,RSIを過剰購入/過剰売却の監視,設定されたRSIレベルに基づいてトレンドに反する取引,ストップロスのリスク管理です.

利点分析

  • RSIは過買い/過売りレベルを特定するための実証された指標です.

  • 極端な価格に対して取引することは 一方向的なトレンドではなく 価格の振動という仮定に合致します

  • ストップ・ロスは,個々の取引の損失を制御する.

  • シンプルで明瞭なバックテストフレームワークで 分かりやすく修正できます

  • 柔軟なRSIパラメータとストップ・ロスのレベルが 変化する市場に適応できる

リスク分析

  • RSIはトレンドフォローインジケーターで,レンジ・バインド価格ではなく持続的なトレンド中に継続的な損失が発生する可能性があります.

  • 誤ったRSIパラメータはより多くの信号を生成しますが 勝率が低い可能性があります

  • ストップ・ロスは小規模な動きによって引き起こすか,正しく設定されていない場合,大きな損失を引き起こす可能性があります.

  • この戦略は レンジ・バインド・マーケットで よりうまく機能し 強いトレンドシナリオでは 劣悪なパフォーマンスを発揮する可能性があります

  • ポジションの大きさが大きすぎると 損失が大きくなってしまいます

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

  • RSIをMACDなどの他の指標と組み合わせることで 信号の精度が向上します

  • 適切な設定を見つけるために,異なるパラメータで統計的なRSI行動を研究します.

  • バックテストで動的位置サイズメカニズムを試験する.

  • ATR を使って 適応型ストップ損失レベルを設定する.

  • マシン学習を適用して 最適なパラメータの組み合わせを 発見します

  • 他の平均逆転戦略とRSIを組み合わせて 堅牢なシステムを構築することを検討する.

概要

RSIレンジトレーディング戦略は,RSIオーバーバイト/オーバーセールレベルに基づいて単純な逆転取引を行い,ストップロスの経由でリスクを管理する.それはレンジ限定の振動市場には機能するが,強いトレンドシナリオには限界がある.微調整パラメータ,ストップロスのルールの改善,他の指標と戦略との組み合わせは,その安定性と適応性を向上させる.全体的にこの戦略は,いくつかの貴重な洞察を提供するが,ライブトレーディングで慎重な適用と最適化が必要である.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple RSI Strategy", overlay=true)

var rsiLength = input(2, title = "rsi Length")
var float rsiBuyLevel = input(11, title = "What rsi level triggers a long")
var float rsiShortLevel = input(91, title = "What rsi level triggers a short")
var float maxRisk =  input(.05, title="Maximum risk/ trade")
var chartEntryStop = input(.005, title="Max Movment in the opposite direction / trade")
var float longEntryPrice = na
var float shortEntryPrice = na 
rsiValue = ta.rsi(close, rsiLength)

var float maxRiskValue = (strategy.equity * maxRisk) / chartEntryStop
var float maxRsi = 0

//Conditions


// Strategy Execution
if( close <= longEntryPrice-(longEntryPrice*chartEntryStop ))
    strategy.close("Long")

if( close >= shortEntryPrice+(shortEntryPrice*chartEntryStop ))
    strategy.close("Short")

if (rsiValue <= rsiBuyLevel and maxRsi == rsiShortLevel)
    maxRsi := rsiBuyLevel 
    strategy.close("Short")
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    
   
else if (rsiValue >= rsiShortLevel and maxRsi == rsiBuyLevel)
    maxRsi := rsiShortLevel
    strategy.close("Long")
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close

else if (rsiValue >= rsiShortLevel )
    maxRsi := rsiShortLevel
    strategy.close("Long")

else if (rsiValue <= rsiBuyLevel )
    maxRsi := rsiBuyLevel
    strategy.close("Short")

もっと