フィボナッチとRSIの組み合わせ — 押し目候補の水準と勢いを二段で確認する
フィボナッチ・リトレースメントと RSI(相対力指数)は、どちらも押し目・戻りの局面でよく参照されますが、見ているものはまったく別です。フィボナッチは「直近の値動きに対して、どの価格水準まで戻ってきたか」という位置の情報を、RSI は「直近の値動きが上下どちらにどれくらい偏っているか」という勢いの情報を扱います。
本記事では、この 2 つを別レイヤーとして組み合わせたときに何が整理できるのか、そして cBot として実装する際にどこが論点になるのかをまとめます。あくまで設計の参考としての位置づけで、特定の水準や設定が成果を保証するものではありません。
フィボナッチ・リトレースメントの役割
フィボナッチ・リトレースメントは、ある値動きの起点(安値)と終点(高値)を結び、その値幅に対して 23.6%・38.2%・50%・61.8% といった比率の水平線を引く手法です。上昇後にどこまで押したか、下落後にどこまで戻したかを、値幅に対する割合として相対化して見られる点が特徴です。
この「相対化」が効いてくるのは、銘柄や時間足が変わっても同じ物差しで押し目の深さを語れるからです。値幅が大きい局面でも小さい局面でも、38.2% は 38.2% として扱えます。
単独利用時の限界としては、まず起点と終点をどこに取るかで線の位置がすべて変わるという主観性があります。同じチャートを見ても、直近スイングを取るか、より大きな波を取るかで水準は変わります。さらに、フィボナッチの水平線はあくまで「候補となる価格水準」を示すだけで、そこで実際に反応が起きているのかどうかは、この手法だけでは判断できません。価格が水準に到達したという事実と、そこで押し目が終わりかけているかどうかは、別の情報です。
RSI の役割
RSI は、一定期間内の上昇幅と下降幅の比率から、値動きの偏りを 0〜100 のレンジで表現する指標です。一般的には 70 超で買われすぎ、30 未満で売られすぎという目安が使われますが、より実務的には「50 を境にどちら側にいるか」「直近の偏りが緩んできているか」という読み方をする場面も多い指標です。
RSI が扱っているのは勢いの偏りであって、価格の絶対水準ではありません。したがって「今どのくらい深く押しているか」という情報は RSI には含まれていません。
単独利用時の限界は、トレンド相場では買われすぎ・売られすぎの領域に張り付いたまま推移することがある点です。数値だけを反転の合図として読むと、トレンドの継続中に何度も逆方向のシグナルを拾ってしまう構造になります。また、どこで反転するかという価格の目安が出てこないため、損切り位置や判定の基準を RSI 単体から設計するのは難しいという性質もあります。
なぜこの組み合わせか
フィボナッチと RSI は、担当している次元がきれいに分かれています。フィボナッチは「価格が値幅のどのあたりに位置しているか」、RSI は「その位置に来るまでの値動きがどちら側に偏っているか」を表現しており、片方は位置、もう片方は勢いを見ているイメージです。
この役割分担を使うと、押し目局面を二段階に分けて整理できます。第一段は「価格がフィボナッチ水準の帯に入ったか」という位置の条件、第二段は「そこで勢いの偏りが緩んでいるか」という状態の条件です。位置だけを満たしていて勢いはまだ売り側に強く偏っている局面と、位置と勢いの両方が揃っている局面は、同じ「38.2% 到達」でも意味合いが異なると考えられます。
フィボナッチ側の弱点である「線を引いただけでは反応の有無が分からない」という点を RSI の状態が補い、RSI 側の弱点である「価格の目安が出てこない」という点をフィボナッチの水準が補う、相互補完の関係になります。ダマシを完全に消すものではありませんが、位置と勢いのどちらか片方しか満たさない局面を切り分けて扱うためのノイズフィルターとして機能することが期待できます。
パラメータをどう考えるか
フィボナッチ側の実質的なパラメータは、比率そのものよりも「起点と終点をどう自動決定するか」です。直近 N 本の高値安値を使う、ZigZag 的なスイング検出を使う、上位足のスイングを使う、といった選択肢があり、どれを選ぶかで押し目の粒度が変わります。短期向けなら参照期間を短く、長期向けなら長く取るという方向性で当たりをつけるのが出発点になります。
RSI の期間は、短くするほど反応が早くなる一方でノイズも増え、長くするほど鈍くなる代わりにブレは減る傾向があります。14 期間が広く使われる基準値ですが、時間足や対象によって挙動は変わるため、バックテストで確認したうえで扱うのが安全です。
判定に使う RSI の閾値も、30/70 のような両端だけでなく、40〜50 帯を使う設計も考えられます。「これが正解」という組み合わせは存在しないため、目的(浅い押しを拾いたいのか、深い押しだけに絞りたいのか)から逆算して候補を絞り、検証で詰めていく流れになります。
cBot化する際の考慮点
実装で最初に決めるべきは、フィボナッチの基準スイングをいつ再計算するかです。毎バー再計算すると、新高値・新安値が出るたびに水平線が動き、直前まで有効だった判定が消えることがあります。スイングが確定したときだけ更新する、あるいは一定期間は基準を固定する、といったルールを明示的に持たせておく必要があります。
計算順序としては、スイング検出 → フィボナッチ水準の算出 → 価格が水準帯に入っているかの判定 → RSI の状態判定、という依存関係になります。RSI は独立に計算できるため、順序を絡ませないほうが保守しやすくなります。
// 例: 水準判定と RSI 判定を分離した骨組み
double rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14).Result.LastValue;
double swingHigh = /* スイング検出の結果 */;
double swingLow = /* スイング検出の結果 */;
double range = swingHigh - swingLow;
double level382 = swingHigh - range * 0.382;
double level618 = swingHigh - range * 0.618;
double price = Bars.ClosePrices.LastValue;
bool inRetraceZone = price <= level382 && price >= level618;
bool momentumEasing = rsi > 40 && rsi < 55;
if (inRetraceZone && momentumEasing)
{
// 位置と勢いの条件がともに成立した状態として扱う
}
エッジケースは多めです。スイングが検出できずレンジ幅がゼロに近い状態、ヒストリーが不足していて RSI が安定しない期間、値幅が極端に小さく水準線同士が重なってしまう場面などが該当します。これらは判定を保留する分岐を明示的に置いておきます。計算負荷の面では、スイング検出を毎ティック回すと重くなりやすいため、確定足ベースで更新する設計が扱いやすい構造です。
実装の流れ
全体は、スイング検出 → 水準算出 → 位置判定と勢い判定の並列評価 → 整合フラグ出力、という流れに整理できます。
入力ステップでは価格バーと参照期間を取り込み、スイング検出で基準となる高値・安値を決めます。水準算出ではその値幅から各比率の価格を求め、更新条件(いつ引き直すか)をここで一元管理します。判定ステップでは、位置条件と勢い条件を別関数として独立に評価し、最後に両者を突き合わせて「両方成立」「位置のみ」「勢いのみ」「非該当」といったラベルを返します。
このレイヤーはエントリー指示ではなく前提条件のフラグを返す設計にしておくと、上位の戦略モジュールから差し替えやすくなります。実際の発注・ロットサイズ・損切り・トレーリングは別モジュールに分離し、結合度を下げておくと保守性が上がります。
どう活用するか
自作派の方は、Claude Code を使った cBot 開発のたたき台として本記事の構造をそのまま流用していただけます。特に「スイング検出をいつ更新するか」は他の水平線系ロジック(ピボット、レンジブレイク)にも横展開できる論点です。
委託派の方で「フィボナッチと RSI を組み合わせた判定を作りたい」という相談がある場合は、ai-programming.xyz の個別実装相談からご相談いただけます。本記事の論点(スイングの取り方・更新条件・閾値・エッジケース)が、そのまま要件整理シートとして使える構造になっています。
教育目的では、「位置を見る指標」と「勢いを見る指標」をどう分担させるかを学ぶ題材として、スクール教材の参考にしていただけます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。