RSIの解説とバックテスト(Pine Script)RSIに従った時1万ドルは3年でどうなるのか?

投資の基本:RSI指標とは何か

RSI(Relative Strength Index)は、価格の変動強度を測定するためのテクニカル分析ツールです。

この指標は、市場が過買いまたは過売りの状態にあるかを示すために使用されます。

それではここからRSIの計算方法と、それが投資判断にどのように役立つかについて説明していきましょう。

RSI指標の定義と計算方法

まず前提として昨今ではRSIの計算は言うまでもなく人間が自力で行う必要はありません。

コンピューターが自動算出しますので、この計算方法をあなたがマスターする必要はありません。

RSIの数学的基礎

RSI、または相対力指数は、一定期間内の価格変動の強さとスピードを評価するために設計されたテクニカル指標です。

この指標は、J. Welles Wilder Jr.によって1978年に紹介され、以来、トレーダーに広く利用されています。

RSIの計算は、一定期間内の価格上昇と下降の平均値を比較することに基づいています。

一般的に、RSIは14日間の期間を用いて計算されます。

計算するためには、まず選ばれた期間内の各日における価格変動(上昇または下降)を記録します。

次に、この期間内の全ての上昇日の価格変動の平均値(平均利益)と、すべての下降日の価格変動の平均値(平均損失)を計算します。

平均利益と平均損失が得られたら、次のステップは「相対強度」(RS)の計算です。

これは平均利益を平均損失で割った値です。最後に、RSIは以下の公式によって計算されます。

この公式は、RSIが0から100の範囲内で動くように設計されています。

RSIの値が70以上の場合、市場は一般的に「過買い」(overbought)状態と見なされ、価格が下落する可能性が高いことを示唆しています。

逆に、RSIが30以下の場合は「過売り」(oversold)状態とされ、価格が上昇する可能性があると考えられています。

RSIの計算において重要なのは、この指標が「相対的」であるということです。

つまり、計算されるRSIの値は、選択された期間内の価格変動に完全に依存しています。

このため、異なる期間でRSIを計算すると、結果が大きく異なることがあります。

そのため、トレーダーは自分の取引スタイルや市場の状況に合わせて、RSIの計算期間を調整することが重要です。

以上のように、RSIの数学的基礎は、シンプルながらも、市場分析において極めて有効な洞察を提供します。

トレーダーはこの指標を利用して、市場の過熱状態を把握し、適切な取引戦略を立てることができます。

RSIを活用した投資戦略

RSIを用いたエントリーとエグジット戦略

相対力指数(RSI)は、市場の過熱を識別し、適切なエントリーとエグジット(市場への参入と退出)のタイミングを決定するのに有効なツールです。

RSIが特定の閾値を超えた場合、それは売買のシグナルとして解釈できます。

以下では、RSIを基にした取引戦略について詳しく探ります。

過買いと過売りの識別

RSIが70を超えると、市場は過買いと見なされ、価格の下落が予想されます。

この場合、売りのポジションを取るか、既存の買いポジションを閉じることが一般的な戦略です。

逆に、RSIが30以下になると、市場は過売りと判断され、価格の反転上昇が期待されるため、買いのポジションを検討するのが理にかなっています。

トレンドフォロー戦略

RSIはトレンドフォロー戦略にも有効に活用できます。

例えば、強い上昇トレンドの中でRSIが70を超えた場合、一時的な過熱と見なし、トレンドの継続に賭ける戦略が取られることもあります。

この場合、RSIが高い水準を維持しつつも、価格がさらに上昇する可能性を見越して、ポジションを保持することが考えられます。

RSIと他のテクニカル指標の組み合わせ

RSIは他のテクニカル指標と組み合わせることで、より効果的な取引戦略を構築できます。

たとえば、移動平均線やボリンジャーバンドと組み合わせることで、RSIのシグナルの確度を高めることができます。

RSIの長所と短所

相対力指数(RSI)は、投資家にとって非常に有益なツールですが、その使用には長所と短所があります。

RSIの利点

RSIの主な利点は、市場の過熱状態を簡単に識別できることです。

RSIが特定のレベル(通常は70以上または30以下)に達すると、市場が過買いまたは過売りの状態にあることを示唆します。

これは、価格の転換点を予測するのに役立ちます。

また、RSIは市場の感情を可視化し、投資家が感情に流されずに客観的な判断を下すのを助けます。

RSIの制限

しかし、RSIにはいくつかの制限があります。

最も重要なのは、RSIが誤ったシグナルを発することがある点です。

例えば、強いトレンドの状況下では、RSIが極端に高いまたは低い値を示し続けることがあります。これにより、市場の転換点を誤って判断するリスクがあります。

また、RSIは価格の変動に対して遅れて反応することがあり、特に短期トレードではこの遅延が問題となることがあります。

RSIの誤った解釈を避けるためのヒント

RSIの値を正しく解釈するためには、市場状況の全体像を考慮することが重要です。

例えば、長期的なトレンド、ニュースイベント、その他のテクニカル指標と組み合わせることで、RSIのシグナルの精度を高めることができます。

また、RSIの設定期間を市場のボラティリティや自分の取引スタイルに合わせて調整することも、誤解を避ける上で効果的です。

RSIでのバックテスト

それでは実際にRSIの感覚を掴むためにPine Scriptでバックテストをしてみたいと思います。

こちらもChat GPTに書いてもらいました。

プロンプトはこちら。

RSIのバックテストをPineスクリプトを使って行いたいです。
次の条件下での勝率を表示するコードを書いてくださいませ。

・Apple
・2020年から2023年現在時点
・RSIが30になったときに買い、8%の利益で利確
・RSIが70になったときに売り、8%の利益で利確
このときの勝率などのデータを表示、または可視化したい。
お願いします。
//@version=4
strategy("Apple RSI Backtest", overlay=true)

// 設定パラメータ
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")
profitTarget = input(8, title="Profit Target (%)") / 100

// RSIの計算
rsi = rsi(close, rsiLength)

// 買いまたは売りシグナルの判定
longCondition = crossover(rsi, rsiOversold)
shortCondition = crossunder(rsi, rsiOverbought)

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// 利益確定の設定
strategy.exit("Take Profit Long", "Long", profit=profitTarget)
strategy.exit("Take Profit Short", "Short", profit=profitTarget)

// チャートにRSIを表示
plot(rsi, title="RSI", color=color.blue)
hline(rsiOverbought, title="Overbought Level", color=color.red)
hline(rsiOversold, title="Oversold Level", color=color.green)

手数料や、許容ドローダウンなどの設定は何もしていませんので、参考程度にしかなりませんが、勝率自体は96.72%となっています。

これではよくわかりませんから、プロンプトを変更して1万ドルでのシュミレーションを書いてもらいます。

元手1万ドルでの3年間の収益シュミレーション

//@version=4
strategy("Apple RSI Strategy", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000)

// RSIの設定
rsiPeriod = 14
rsiOversold = 30
rsiOverbought = 70

// 利確の目標利益率
profitPct = 8

// RSIの計算
rsiValue = rsi(close, rsiPeriod)

// 買い条件:RSIが30以下
longCondition = rsiValue <= rsiOversold
if (longCondition)
    strategy.entry("Long", strategy.long)

// 売り条件:RSIが70以上
shortCondition = rsiValue >= rsiOverbought
if (shortCondition)
    strategy.entry("Short", strategy.short)

// 利確条件の設定
strategy.exit("Take Profit", from_entry="Long", profit=profitPct, limit=close * (1 + profitPct/100))
strategy.exit("Take Profit", from_entry="Short", profit=profitPct, limit=close * (1 - profitPct/100))

// チャートにRSIを表示
plot(rsiValue, "RSI", color=color.blue)
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)

こちらのコードだとこのように出力されます。

最大ドローダウンが4804ドルとなっていますから、心理的にはかなりきついドローダウンをくらっていることになりますね。

上部へスクロール