ピボットポイントと移動平均を組み合わせる考え方 — 節目の水準とトレンド方向で判定を二層化する設計
サポートやレジスタンスといった水平線の節目だけを頼りにロジックを組むと、同じ「節目への接近」という現象が、反発の入口にもブレイクの前触れにもなり得て、判断の軸が定まりにくくなります。本記事では、前日の高値・安値・終値から機械的に水準を算出する ピボットポイント と、相場の方向をならして示す 移動平均 を組み合わせ、節目での攻防を「反発を待つ場面」と「見送る場面」に振り分けるための判定材料を整理します。あくまで設計の考え方の共有であり、特定の手法が成果を保証するという話ではありません。
ピボットポイントの役割
ピボットポイント(Pivot Point)は、前日の高値・安値・終値の3つの値から、当日の基準となる水準を機械的に算出するレベル系の指標です。基本の考え方はピボットポイントとは何かで解説しています。
- 中心となるピボット(P): (高値 + 安値 + 終値) ÷ 3
- 上側にレジスタンス候補のR1〜R3、下側にサポート候補のS1〜S3
- 計算式が固定なので、誰が計算しても同じ水準が引かれる
計算が機械的で共通という性質は、実装面でも意味を持ちます。裁量的な線引きと違って再現性があり、多くの参加者が同じ水準を目にしている可能性が高いため、当日の値動きの目安として意識されやすいと考えられます。日替わりで自動更新される点も、cBotに組み込みやすい理由の一つです。
一方で、ピボットポイント単独には明確な限界があります。示してくれるのは「どこに節目があるか」だけで、「相場がどちらへ向かっているか」は一切語りません。方向の出た日にはR1、R2と水準を次々に超えていくことも珍しくなく、節目に到達したという情報だけでは、反発を観察すべき局面なのか、ブレイクに巻き込まれる局面なのかを区別できません。
移動平均の役割
移動平均(Moving Average)は、一定期間の終値を平均してつないだ、トレンド系の代表的な指標です。基礎は移動平均線とは何かを参照してください。
- 線の傾きが、相場の大まかな方向の目安になる
- 価格が線の上にあるか下にあるかが、強弱の側を読む材料になる
- 期間を長くするほど滑らかに、短くするほど敏感になる
移動平均が捉えるのは「値動きの平均的な流れ」であり、ノイズをならした方向感を1本の線で示してくれます。
ただし移動平均にも単独使用時の弱点があります。平均である以上、値動きに対して常に遅れて反応します。レンジ相場では価格が線を挟んで何度も往復し、方向のダマシが増えます。そしてこの組み合わせの文脈で重要なのは、移動平均には「水準感」がないことです。方向は示しても、「どこまで引きつけて判断するか」という具体的な位置の目安までは与えてくれません。
なぜこの組み合わせか
ピボットポイントと移動平均は、担当する情報がきれいに分かれています。前者は 「どこに節目があるか」という場所の情報 を、後者は 「どちら側を向いているか」という方向の情報 を受け持ちます。場所と方向は独立性の高い軸なので、重ねることで「節目への接近」という同じ現象を、文脈付きで読み分ける材料になります。
読み分けの例をいくつか並べます。
- 移動平均が上向きで、価格も線の上 → PやS1への押しは「流れと同じ側での節目タッチ」として、反発の観察対象にする材料
- 移動平均が下向きなのに、価格がR1へ接近 → 戻りの上限になりやすい水準として、追いかけずに様子を見る材料
- 移動平均が横ばいで、価格がPを挟んで行き来 → 明確な方向のないレンジ局面と読む材料
この組み合わせには、実装上の利点もあります。ピボットの水準は日替わりの時点で確定するため、「今日はこの水準に近づいたら判定する」という待ち伏せ型の設計が可能です。あらかじめ分かっている水準に対して、移動平均という方向フィルターを通すことで、流れと逆側の節目タッチを機械的に見送る仕組みを作れます。これは、節目タッチをすべて拾ってしまう単純なロジックに対する、ノイズフィルターとして機能することが期待できます。
もっとも、これは設計上の見立てにすぎません。フィルターがどの程度働くかは対象や時間軸によって変わるため、採用する前に検証工程を挟むことが前提になります。
パラメータをどう考えるか
両者の設定は、それぞれ性質が異なります。
- ピボットの算出方式: クラシック式のほか、フィボナッチ式・カマリラ式などの変種があります。まずは最も広く使われるクラシック式から始めると整理しやすくなります。
- 日の区切り: 前日の高値・安値・終値は「どの時点で日を区切るか」に依存します。サーバー時間の日付変更と、意識したい市場の区切りがずれる場合があります。
- 移動平均の期間: 20・50・200などが定番です。判定に使う時間足との釣り合いで決めます。
- 時間足の釣り合い: ピボットが日次の水準なので、判定足は分足〜1時間足程度の日中の時間軸と組み合わせるのが自然です。
どの設定にも唯一の正解はありません。「短期の反応を拾いたいのか」「日中の大きな流れに乗りたいのか」という目的を先に決め、複数の設定をバックテストで見比べて、対象に無理のない範囲を探る手順が要になります。
cBot化する際の考慮点
cTraderのcBotへ落とし込む際に注意したいポイントを整理します。
- 再計算のタイミング: ピボット群は毎バー計算する必要はなく、日付が変わった最初のバーで一度だけ再計算します。日中は固定値として扱うことで、計算負荷と挙動のブレを抑えられます。
- 日足データの取得: 判定を分足で行う場合でも、前日の高値・安値・終値は日足の系列から取得します。
MarketData.GetBars(TimeFrame.Daily)で別時間足の系列を参照できます。 - 日の区切りの確認: サーバー時間の日付変更がどの市場時間に当たるかを把握しておきます。週明けの「前日」が金曜になる点も、想定通りかを確認しておきたいところです。
- 接近判定の許容幅: 価格が水準に「ちょうど」触れることは稀なので、水準の周囲に許容幅を持たせて接近を判定します。許容幅は固定値にせず、対象の値動きの大きさに応じて調整できる形にしておくと使い回せます。
- 確定値での判定: 移動平均との位置関係は、確定した一つ前のバー(shift=1)で評価すると、バー内の行き来による判定のブレを避けられます。
- 本数の下限: 移動平均の期間分のバーと、前日分の日足が揃っているかを最初に確認します。
判定部分の骨組みを疑似コードで示します。
// 日付が変わったバーで一度だけ再計算
var daily = MarketData.GetBars(TimeFrame.Daily);
double h = daily.HighPrices.Last(1);
double l = daily.LowPrices.Last(1);
double c = daily.ClosePrices.Last(1);
double pivot = (h + l + c) / 3.0;
double r1 = 2.0 * pivot - l;
double s1 = 2.0 * pivot - h;
// 環境フィルター: 確定バーと移動平均の位置関係
double ma = Indicators.SimpleMovingAverage(Close, maPeriod).Result.Last(1);
bool upSide = Close.Last(1) > ma;
// 例: 上向き環境で、S1近辺への接近を検出
double tolerance = Symbol.TickSize * toleranceTicks;
if (upSide && Math.Abs(Close.Last(1) - s1) <= tolerance)
{
// リスク幅と発注管理の確認を経て、判断材料の一つとする
}
ここに書いたのは骨組みだけで、実運用ではシンボルごとの呼び値・スプレッド・ロット設計に合わせて細部を詰める必要があります。
実装の流れ
処理の流れを上流から並べると、次のようになります。
- 日替わりで水準を再計算: 日付の変わり目を検出し、前日の高値・安値・終値からP・R1・S1などを求めて保持します。
- 環境認識: 移動平均の傾きと、価格が線のどちら側にいるかで、その日の判定の向きを決めます。
- 節目接近の検出: 保持している水準と現在値の距離が許容幅に入ったかを監視します。
- 整合の判定: 接近した節目が環境の向きと同じ側なら観察対象に、逆側なら見送りとして扱います。
- リスク幅と記録: 発注に進む場合の損切り・利益確定の幅をルール化し、判定時の水準と移動平均の状態をログに残します。
最後の記録は、方向フィルターがどの局面で働き、どこで空振りしたかを後から検証するための一次データになります。
どう活用するか
この組み合わせの本質は、「事前に確定する水準」と「方向フィルター」の役割分担にあります。この構造は、ピボットを前日高値・安値のラインに、移動平均を平均足のような別の方向指標に置き換えても崩れないため、cBot設計のひな型として持っておくと応用が利きます。
自分で組んでみたい方は、Claude Codeを併走させた開発の下敷きとして、この記事の構成を設計メモ代わりに使ってみてください。作るより相談したいという方は、ai-programming.xyzで個別の開発相談を受け付けています。設計の骨子を持ち込んでいただけると、要件の擦り合わせが早く進みます。体系的に学びたい方には、スクールで実装手順を一段ずつたどれるコースも用意しています。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。