📝 概要
今回は、TradingViewのPine Scriptで作成した Connors RSI(2) を紹介します。
この戦略は、短期RSIが極端に低下したところを買い、その後の反発を狙うシンプルな平均回帰型ストラテジーです。デフォルトでは RSI(2)が10未満 になったところでロングを検討します。
ただし、単純にRSIが低ければ何でも買うわけではありません。デフォルトでは 終値が200SMAより上にあること も条件にしています。
つまり、
- 長期的には上昇トレンド
- その中で短期的に急落
- RSI(2)が極端に低下
- そこからの反発を狙ってロング
という考え方です。
大きな流れには逆らわず、その中で起きた短期的な売られすぎだけを拾うイメージですね。
出口は2種類から選べます。RSIが一定水準まで回復したら決済する方法と、終値が短期SMAを上回ったら決済する方法です。デフォルトでは 5日SMAを上回ったところでクローズ します。
ロング専用で、固定利確や固定損切りはありません。かなりシンプルな平均回帰戦略なので、銘柄や時間足による特性を比較するベースとしても使いやすいコードです。
💻️ バックテスト
CHFJPY

GBPUSD

NZDUSD

S&P500(CFD)

NASDAQ(CFD)

RUSSELL2000(CFD)

🎯 作成の意図
RSIを使った逆張りでは、「RSIが30以下なら買う」というルールがよく使われます。
ただし、RSI期間を2まで短くすると、通常のRSIとはかなり性格が変わります。値動きへの反応が非常に速くなり、短期間の急落を敏感に拾えるようになります。
この戦略では、その特徴を利用して 短期的なオーバーシュートからの反発 を狙います。
ただ、下落トレンドの途中でRSIが低くなっただけなら、そのまま下げ続ける可能性があります。そこで200SMAによるトレンドフィルターを組み合わせています。
終値が200SMAより上にあるときだけ買うことで、
「長期上昇トレンドの中で起きた短期的な押し」
に対象を絞るわけです。
これは平均回帰戦略ではかなり重要な考え方です。
強い下落トレンドに逆らって底値を当てにいくのではなく、長期トレンドに沿った状態で一時的に売られすぎたところを狙う。純粋な逆張りというより、大きな流れには順張り、短期的な値動きには逆張り という組み合わせです。
また、出口をRSIまたは短期SMAから選べるようにしています。
RSIで出る場合は「売られすぎ状態が解消したら終了」。
SMAで出る場合は「価格が短期平均まで戻ったら終了」。
どちらも、大きなトレンドを最後まで取りにいくのではなく、短期的な反発部分だけを取る という戦略の性格に合っています。
📘 コード(戦略部分)の解説
ロング条件はこちらです。
longEntryCondition = time >= startDate and time <= endDate and strategy.position_size == 0 and trendFilterPassed and rsiValue < buyRsiThreshold
if longEntryCondition
strategy.entry("RSI2", strategy.long)
エントリーするには、
- 現在ポジションを持っていない
- トレンドフィルターを通過している
- RSIが設定した買い水準より低い
という条件を満たす必要があります。
デフォルトではトレンドフィルターが有効なので、終値が200SMAより上にあり、RSI(2)が10未満になったときにロング します。
200SMAより上という長期的には強い状態なのに、RSI(2)は極端に弱い。つまり、上昇基調の中で短期的に強く売られた場面を狙っています。
トレンドフィルターはオフにすることもできるので、その場合は200SMAの位置に関係なくRSI条件だけでエントリーします。
決済条件はこちらです。
longExitCondition = strategy.position_size > 0 and (exitMode == "RSI level" ? rsiValue > exitRsiLevel : close > ta.sma(close, exitSmaLength))
if longExitCondition
strategy.close("RSI2", comment="exit")
出口は2種類から選択できます。
RSI level を選んだ場合は、RSIが設定した水準まで回復すると決済します。デフォルトのRSI決済水準は75なので、強い反発が起きて短期RSIが高いところまで戻ったらポジションを閉じます。
5-day SMA を選んだ場合は、終値が指定した短期SMAを上回ったところで決済します。デフォルトでは5SMAです。
つまり、
200SMAより上の上昇基調でRSI(2)が急低下したら買い、RSIまたは短期SMAへの回帰を確認したら売る
というのが、この戦略の基本ロジックです。
ショートは行わず、ロングのみです。また、固定%の利食いや損切りもありません。あくまで「短期的に行き過ぎた下落が、通常の水準へ戻る」という平均回帰を狙います。
ロジックがかなり単純なので、どこから利益が生まれているのかを追いやすいのも良いところです。複雑な条件を大量に組み合わせるより、こうしたシンプルな戦略の方が市場ごとの平均回帰特性を確認するには向いていると思います。
🔏 コアメンバー向けソース
こちらからどうぞ。



コメント