ピボットポイントと平均足の組み合わせ — 節目での反応を「足の色」で確かめる設計
価格がピボットポイントの水準に触れたとき、そこで値動きが向きを変えたのか、単に通過しただけなのかは、触れた瞬間には分かりません。本記事では、この「触れた後」の判定役として平均足(Heikin Ashi、ローソク足を平均化して描く手法)を組み合わせる設計を整理します。ピボットが「どこを見るか」を決め、平均足が「その場所で向きが変わったか」を確かめる、という分担です。
ポイントになるのは、平均足の値が実際の取引価格ではないという点です。そのため本記事では、接触の判定は実際の高値・安値で行い、平均足は確認にだけ使うという線引きを軸に話を進めます。節目を条件に使う cBot を作ろうとしている方向けの内容で、特定の設定が成果につながることを示すものではありません。
ピボットポイントの役割
まず、場所を決める側であるピボットポイントの性質を確認します。
ピボットポイントは、前日の高値・安値・終値から中心値 P を求め、そこから上下の水準(R1・S1 など)を導く手法です。計算式や基本的な読み方はピボットポイントとはにまとめています。当日が始まる前に全水準が確定し、誰が計算しても同じ値になるため、プログラムで扱いやすい部類に入ります。
単独で使う場合の限界は、水準が「反応が起こりうる候補地」でしかないことです。価格が S1 に触れても、そのまま下へ抜けていく日は珍しくありません。触れたという事実だけを条件にすると、反転を前提にしたロジックは抜けていく局面でも同じように反応してしまいます。節目そのものの考え方はサポートとレジスタンスの基礎もあわせて参照してください。
平均足の役割
次に、確認役を担う平均足の性質を見ていきます。
平均足は、終値を4本値の平均に、始値を前の足の平均足始値と終値の中間に置き換えて描く足です。細かな上下が均されるため、同じ色の足が続いているか、色が切り替わったかで、値動きの向きを読み取りやすくなります。
限界は2つあります。1つ目は遅れです。平均化している以上、向きの変化が足の色に表れるのは、実際の値動きより後になります。2つ目は、描かれている値が実際の価格ではないことです。平均足の終値や高値・安値は計算上の値であり、その値段で約定できるわけではありません。平均足だけで判断すると、「どこで」向きが変わったのかという位置の情報も欠けてしまいます。
なぜこの組み合わせか
2つの指標は、互いに欠けている情報を持ち合っています。
ピボットは場所を持っていても、そこで何が起きたかは教えてくれません。平均足は向きの変化を示しても、それが意味のある場所で起きたかは教えてくれません。そこで、次の2段階で場面を分類します。
- 接触: 実際の安値(または高値)が、ピボット水準から一定の許容幅以内に入ったかを判定します。
- 確認: 接触後の一定本数以内に、平均足の色が切り替わったかを判定します。
この結果、場面は「接触後に色が切り替わった」「接触したが色が変わらないまま」「水準を明確に割り込んだ」の3つに分けられます。1つ目は節目で向きが変わった可能性を考慮する場面、2つ目は判断を保留する場面、3つ目は節目が機能しなかった場面、というラベル付けです。平均足の遅れは、ピボットで見る場所を絞ることで「どこでも色の切り替わりを拾う」状態を避ける形で扱いやすくなります。一般論として、ノイズフィルターとして機能することが期待できます。
ただし留保もあります。平均足の色が切り替わるころには、価格は水準からある程度離れていることが多く、確認を待つほど入口は不利な位置に移ります。確認の確かさと入口の位置は引き換えの関係にある、と理解しておくことが前提です。
パラメータをどう考えるか
調整対象は、ピボットの種類、接触の許容幅、確認を待つ本数の3点です。
ピボットは日足のクラシック型が出発点として扱いやすく、数日単位の動きを対象にするなら週足を参照する選択肢もあります。許容幅を固定の価格差で決めると、荒い日と静かな日で意味が変わるため、ピボットとATRの組み合わせで扱ったように変動幅に対する割合で持たせる方法が考えられます。
確認を待つ本数は、短くすると取りこぼしが増え、長くすると無関係な色の切り替わりまで拾いやすくなります。実行足が短いほど平均足の色は頻繁に切り替わるため、短期向けの足では本数を絞り、長期向けの足ではやや広げる、という程度の方向性に留めます。いずれの値もバックテストで検証し、調整に使った期間とは別の期間でも挙動が大きく崩れないかを確かめる手順が欠かせません。
cBot化する際の考慮点
実装上の論点を、設計メモとして順に挙げます。
データの取り方: ピボットは日足のバー、平均足と接触判定は実行足のバーから作ります。形成中の足では平均足の色が入れ替わるため、OnBar で確定足だけを評価する構成が出発点です。
平均足は自前で計算する: チャートを平均足表示にしても、cBot が受け取る Bars は通常の足です。平均足は通常の4本値から計算する前提で組みます。
計算順序: 日付が変わったらピボットを再計算し、確定足ごとに平均足を更新してから、接触判定、確認判定の順に評価します。
エッジケース: 平均足の始値は前の足に依存するため、計算を始めた位置によって初期の数本の値が変わります。起動直後は一定本数を慣らし期間として判定対象から外します。週明けや祝日をまたぐ際の「前日」の定義も仕様として決めておきます。
ポジション管理との連携: 発注価格と損切り位置は、平均足ではなく実際の価格から決めます。平均足の安値を損切りの基準にすると、実際の安値とずれた位置に置かれる場合があります。
// 抜粋: 通常の足から平均足を計算し、S1 接触後の色の切り替わりを確認する
private double _haOpen, _haClose;
private int _barsSinceTouch = -1;
protected override void OnBar()
{
double o = Bars.OpenPrices.Last(1), h = Bars.HighPrices.Last(1);
double l = Bars.LowPrices.Last(1), c = Bars.ClosePrices.Last(1);
bool prevBullish = _haClose > _haOpen;
double newOpen = double.IsNaN(_haOpen) ? (o + c) / 2.0 : (_haOpen + _haClose) / 2.0;
_haClose = (o + h + l + c) / 4.0;
_haOpen = newOpen;
bool bullish = _haClose > _haOpen;
if (l <= _s1 + _tolerance) _barsSinceTouch = 0; // 接触は実際の安値で判定
else if (_barsSinceTouch >= 0) _barsSinceTouch++;
if (_barsSinceTouch >= 0 && _barsSinceTouch <= ConfirmBars && !prevBullish && bullish && c > _s1)
{
// 「接触後に色が切り替わった」ラベル。発注・損切りは実際の価格から算出する
}
}
_haOpen は OnStart で double.NaN に初期化しておきます。計算負荷は軽く、複数銘柄への展開でも問題になりにくい構成です。
実装の流れ
全体は、入力から出力まで一方向に流れる5段階で整理できます。
- 入力: 日足と実行足の確定足を取得します。
- 場所の算出: 日付変更時にピボット水準と許容幅を計算します。
- 接触判定: 実際の高値・安値が許容幅に入った足を記録し、経過本数を数え始めます。
- 確認判定: 平均足を更新し、待機本数以内の色の切り替わりと、水準を割り込んでいないかを確かめます。
- 出力: 3種類のラベルをログと通知に書き出します。
最初は発注まで自動化せず、ラベルの記録だけで一定期間動かし、それぞれのラベルの後に価格がどう推移したかを見比べる段階を挟むと、分類が自分の対象銘柄で意味を持つかを落ち着いて確認できます。
どう活用するか
自分で cBot を作る方は、「場所を決める指標」と「その場所での変化を確かめる指標」を分ける型を、Claude Code への指示の骨格として使ってみてください。ピボットをフィボナッチや前日高安に差し替えても、同じ構造で組めます。
開発を委託したい方は、ai-programming.xyz への相談時に、許容幅の決め方と確認を待つ本数、平均足を確認専用にするという前提を先に共有しておくと、要件の整理が進めやすくなります。
体系的に学びたい方には、スクールで指標の組み合わせ方から検証の進め方までを、実際の開発手順に沿って学ぶ道もあります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。