一目均衡表・RSI・ATRの三点構成 — 構造・位置・距離を分けて組み立てる
一目均衡表は線が5本あり、どこを見て何を判断すればよいのかが分かりにくい指標です。反対にRSIやATRは値を1つ返すだけなので、単独では「その値をどんな前提の中で読むのか」が決まりません。本記事では、一目均衡表で相場の骨格を取り、RSIでその骨格の内側の位置を測り、ATRで水準までの距離を換算する、という三点の組み立て方を整理します。特徴は、ATRを損切り幅の道具としてだけでなく、その水準が近いのか遠いのかを判定するための物差しとして先に使う点にあります。線の多さで手が止まっている方や、一目均衡表を条件式に落とし込む段階でつまずいた方に向けた内容です。
一目均衡表の役割 — 骨格を描く層
一目均衡表は、転換線・基準線・先行スパンA・先行スパンB・遅行スパンの5本で構成される指標です。どれも一定期間の高値と安値の中値、あるいはその平均を時間方向にずらして描いたもので、価格の勢いではなく意識されやすい水準と時間の位置を示す設計になっています。先行スパンAとBに挟まれた領域が雲と呼ばれ、価格が雲のどちら側にいるかで大まかな前提を分ける読み方が一般的です。
この三点構成で一目均衡表に任せるのは、シグナルそのものではなく骨格の提示です。雲の上下で前提を分け、基準線を「押しや戻りが一巡したかを測るための水平の目安」として置く。この2本に絞るだけでも、後続の判定に必要な足場は用意できます。
単独使用時の限界もはっきりしています。5本すべてを条件に使うと組み合わせが膨らみ、どの線が効いているのか追えなくなります。中値をもとにした計算のため、値動きが横ばいのときは線が寄り集まり、位置関係の意味が薄れます。そして雲は、過去の値から作った線を先の時間へ投影したものであって、将来の値動きを示すものではありません。骨格は描けても、いま入る位置かどうかまでは描けないと考えておくのが実務的です。
RSIの役割 — 骨格の内側での位置を測る層
RSIは、一定期間の値上がり幅と値下がり幅の比率を0〜100の範囲で表すオシレーター系の指標です。ここでは、一目均衡表が引いた骨格の内側で「いま押し込まれているのか、それとも伸び切っているのか」を測る係を担当します。
注目するのは水準そのものより、骨格との整合です。価格が雲の上にあり基準線も切り上がっている局面で、RSIだけが中央付近まで下げているなら、上向きの前提が保たれたまま調整が進んだ状態と読む材料になります。反対に骨格が上向きでRSIも高い水準に張り付いているなら、すでに伸びた後という解釈も成り立ちます。買われ過ぎ・売られ過ぎのゾーンだけを単独で見る使い方より、判断の一貫性が保ちやすくなります。
限界は、RSIが前提を持てないことです。流れが強い局面では高い水準・低い水準に長く留まり続けるため、水準だけを反転の合図として扱うと、流れに逆らう判断を繰り返すことになります。価格とRSIの向きが食い違うダイバージェンスも示唆にはなりますが、そこから何本後に効くのかまでは示しません。
ATRの役割 — 距離を測る物差し
ATR(Average True Range)は直近の値幅の平均を表す指標で、方向の情報は持ちません。損切り幅の設計に使われることが多い指標ですが、この構成ではその前に距離の換算へ使います。
一目均衡表は「雲の上限」「基準線」といった具体的な水準を返します。ところが、そこまで価格差でいくら離れているかという情報だけでは、近いのか遠いのかを判断できません。同じ価格差でも、よく動く時期なら数本のローソク足で届き、動かない時期なら何日たっても届かないことがあります。そこで距離をATRで割り、「基準線までATR何本分か」という単位を持たない尺度に置き換えます。こうしておくと、時間足や時期をまたいでも同じ物差しで条件を書けるようになります。
決済側の設計にも同じ値を使えます。1トレードあたりの許容損失額を先に決めておけば、そこからロットを逆算できます。考え方はATRベースの利確幅設計でも扱っています。ATR側の限界は、過去の値幅を平均している以上、変動の大きさが急に切り替わる場面では追随が遅れる点です。
なぜ構造・位置・距離に分けるのか
この構成の要点は、3つの指標が互いに重ならない問いを担当していることです。
- 一目均衡表: どこに骨格(意識されやすい水準)があるか
- RSI: その骨格の内側で、いまどのあたりにいるか
- ATR: その骨格まで、どれだけ離れているか
補完関係は二方向に働きます。RSIは前提を持てないという弱点を抱えていますが、雲と基準線が前提を与えることで、骨格と逆向きのRSIシグナルを最初から対象外にできます。一方、一目均衡表は水準を返すものの、その水準が手の届く範囲にあるかどうかを測る材料を持ちません。ここをATRが埋める形になります。
この「距離のふるい」が入ると、条件の性質が変わります。骨格もRSIも整っているのに、すでに基準線からATR数本分も離れている、という場面は珍しくありません。条件式としては成立していても、動いた後に飛びつく形になりやすい状況です。距離を条件に組み込んでおけば、こうした場面を機械的に外せます。ノイズフィルターとして機能することが期待できる部分です。
ただし、条件を3つ重ねればシグナルの発生頻度は下がります。一目均衡表は線もパラメータも多く、過去データに合わせ込む余地が大きい指標でもあります。この三点構成は機会の多さを狙うものではなく、判断の前提と尺度を固定して検証しやすくするための整理だと理解しておくと、期待とのずれを避けられます。なお、三層に分ける発想そのものは移動平均・RSI・ATRの三層構成でも扱っていますが、あちらは方向・タイミング・リスクの分業、本記事は水準・位置・距離の分業という違いがあります。
パラメータをどう考えるか
調整対象は、一目均衡表の3つの期間、RSIの期間と参照水準、ATRの期間と距離のしきい値です。数が多いので、良い値を探す前に「何を動かさないか」を決めるほうが実用的です。
一目均衡表の9・26・52という設定は、かつての週6日制の商習慣に由来すると言われます。相場の性質から導かれた数字ではないため、そのまま使っても時間足に合わせて見直しても構いません。ただし変えた瞬間、多くの参加者が見ている線とは別の線になります。値をいじるより、判定に使う線を2本程度まで絞るほうが挙動の見通しは良くなります。
RSIは期間を短くすると反応が増えて振れが大きくなり、長くすると滑らかになって反応が減ります。ATRは期間を短くすると直近の変動に敏感になり、長くすると平均的な水準へ寄ります。距離のしきい値は、緩めれば機会が増える代わりに伸び切った位置での判定も混じり、厳しくすれば機会が減ります。
どれも「反応を速くするのか、安定させるのか」という方向性の理解に留め、一度に複数を動かさないことが大切です。1つずつ固定してバックテストで挙動を確かめる進め方が現実的です。時間足を変えたときは、距離のしきい値も合わせて見直す前提で考えます。
cBot化する際の考慮点
cTraderのcBotとして実装する場合、一目均衡表を含むことで生じる論点がいくつかあります。
シフトの扱い: 先行スパンAとBは、計算した値を先の時間へずらして描画します。そのため、チャート上の現在位置に見えている雲は、過去のバーで計算された値です。遅行スパンはその逆で、過去方向へずらされます。配列のどの位置を参照しているのかを毎回明示しないと、意図と数本ずれた判定になります。遅行スパンを条件へ入れる場合、比較対象が過去のバーになるぶん、判定が確定するまでに時間がかかる点も設計に織り込みます。
参照タイミングの統一: 形成中のバーではRSIもATRも値が動き続けます。判定はすべて確定済みのバーで行い、3つの参照位置を揃えておきます。
起動直後のガード: 一目均衡表は長い期間の高値安値とシフトを併用するため、必要なバー数が3つのうち最も多くなります。最長の要件を基準に本数チェックを通してから判定を始めます。
ゼロ除算と下限: 距離をATRで割る設計のため、変動が極端に小さい場面ではATRが0付近まで下がり、換算値が跳ね上がる可能性があります。分母に下限を設けるか、ATRが一定以下なら判定自体を見送る分岐を用意しておくと安全です。ATRから算出した損切り幅がブローカーの最小ストップ距離を下回るケースにも、同じガードが効きます。
// 例: 構造 → 位置 → 距離 の順に評価する(参照はすべて確定済みのバー)
var ichimoku = Indicators.IchimokuKinkoHyo(TenkanPeriod, KijunPeriod, SenkouBPeriod);
var rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, RsiPeriod);
var atr = Indicators.AverageTrueRange(AtrPeriod, MovingAverageType.Exponential);
if (Bars.Count < SenkouBPeriod + KijunPeriod + 5) return; // 参照本数のガード
double close = Bars.ClosePrices.Last(1);
double kijun = ichimoku.KijunSen.Last(1);
double atrV = atr.Result.Last(1);
if (atrV < MinAtr) return; // 分母の下限ガード
// ① 構造: 骨格の前提を取る
bool structureUp = close > kijun;
if (!structureUp) return;
// ② 位置: 骨格の内側での位置を測る
bool pulledBack = rsi.Result.Last(1) < RsiUpper;
if (!pulledBack) return;
// ③ 距離: 水準までをATR換算し、行き過ぎを外す
double distanceInAtr = (close - kijun) / atrV; // しきい値は検証対象
3つとも計算量は小さく、OnBar単位の判定であれば負荷は気になりません。運用前に、各段の判定結果とATR換算値をバーごとにログへ出し、チャートと照合しておくと、しきい値の当たりが付けやすくなります。
実装の流れ
処理は、骨格を取る → 位置を測る → 距離でふるう、という一方向の流れに整理できます。
- 入力: 対象と時間足を決め、一目均衡表・RSI・ATRを確定済みのバーで更新します
- 構造: 雲と基準線の位置関係から、上向き・下向き・判断を保留する局面のいずれかに分類します
- 位置: 骨格と同じ向きの中で、RSIが押し込まれた位置にあるかを確認します
- 距離: 基準となる水準までの差をATRで割り、しきい値の範囲に収まっているかを判定します
- 発注・管理: 通過した場合だけ、同じATRから損切り幅とロットを決めて発注し、決済の管理へ引き継ぎます
3つを1つの複合条件へまとめず、段ごとに独立したフラグとして持たせるのがポイントです。どの段で弾かれたのかを後から集計でき、条件の入れ替えやしきい値の見直しに使える材料が残ります。
どう活用するか
自作派の方は、Claude Code でcBotを組むときの設計メモとして、この「構造・位置・距離」という分け方を流用してみてください。一目均衡表を他の水準系の指標へ差し替えても、枠組みはそのまま成立します。
委託派の方は、ai-programming.xyz で実装を相談するとき、「距離はATR換算で判定したい」という要件を最初に共有しておくと、仕様の詰めが早く進みます。教育派の方は、手元にある2指標のロジックへATR換算の距離条件を後から足す課題として扱うと、尺度をそろえる意味を手を動かしながら確認できます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。