株価チャートのインジケーターを自作すると、既存のRSIやMACDを見るだけでは分からない「値動きと出来高の関係」「買いの勢いが本当に強いのか」「急落が大量の売りを伴っているのか」といった情報を数値化できます。特に、価格・出来高・VWAPを組み合わせて標準化する発想は、インジケーター作りを学ぶうえで非常に良い題材になります。
ただし、自作インジケーターでは複雑な数式を作ることより、「何を測定したい指標なのか」を明確にすることのほうが重要です。似た情報を何度も加工すると、一見高度に見えても実際には価格変動を別の形で表示しているだけ、ということもあります。
この記事では、moomooなどでカスタムインジケーターを作り始めた人を想定し、出来高・VWAP・ATR・OBVなどを利用した実用的なアイデアと、インジケーターを標準化するときの注意点を具体的に解説します。なお、moomooのデスクトップ版ではカスタムインジケーターのスクリプト作成、パラメータ設定、テストなどが可能です。[参照]
- まず「価格変化÷出来高」の意味を考えてみる
- おすすめ① 下落率×相対出来高で「大量売り」を数値化する
- おすすめ② ATRで価格変動を標準化した「異常値動きスコア」
- おすすめ③ CLV×相対出来高で「高値で売られたか、安値で買われたか」を見る
- おすすめ④ VWAP乖離率は「Zスコア+継続時間」にすると使いやすい
- おすすめ⑤ VWAP乖離そのものより「VWAP乖離の加速度」を見る
- おすすめ⑥ OBVの「値」ではなく傾きとダイバージェンスを使う
- おすすめ⑦ 「出来高吸収」を検出するインジケーター
- 「仕手株の売り捌き」を1本の数値だけで判定するのは難しい
- 複数の指標を統合した「Distribution Score」を作る方法
- Zスコアによる標準化で注意したいポイント
- 標準化期間は20日固定ではなく用途で変える
- インジケーターを作る前に「順張り用か逆張り用か」を決める
- 良いインジケーターかどうかは「未来のリターン」で検証する
- バックテストで最も避けたい「未来のデータを使う」問題
- 複雑なインジケーターほど強いとは限らない
- 初心者が自作するならまず試したい7種類
- まとめ:自作インジケーターは「何を測るか」から逆算すると面白くなる
まず「価格変化÷出来高」の意味を考えてみる
自作インジケーターとして考えやすいのが、(終値-始値)÷出来高のように価格変化と出来高を組み合わせる方法です。発想としては、「どれだけの出来高で、どの程度価格を動かしたのか」を見る指標になります。
ただし、売り捌きや大量の売りを検出したい目的の場合には少し注意が必要です。出来高で割ると、出来高が非常に大きい日の値が小さくなるためです。
たとえば株価が100円から90円まで10円下落したケースを考えます。出来高10万株なら値は-0.0001ですが、出来高100万株なら-0.00001となります。つまり、大量出来高を伴った下落ほど絶対値が小さくなる構造です。
この数式は「売り圧力の大きさ」というより、むしろ一定の売買量に対して価格がどれほど動きやすかったかを見る指標に近くなります。金融研究で知られるAmihudの非流動性指標にも、「絶対リターン÷売買代金」という似た考え方があります。したがって、この指標を捨てる必要はありませんが、「売り捌き検出器」と「価格インパクト指標」は分けて設計したほうが分かりやすくなります。
おすすめ① 下落率×相対出来高で「大量売り」を数値化する
大量の売りを伴う下落を検出したいのであれば、価格変化を出来高で割るより、価格変化と相対出来高を掛け合わせるほうが目的に合いやすくなります。
たとえば相対出来高を「当日の出来高÷過去20日平均出来高」とします。通常の2倍の出来高なら2.0、半分なら0.5です。
そこへ日中リターンを組み合わせ、概念的に「(終値-始値)÷始値×相対出来高」とすれば、大幅下落かつ大出来高のときに大きなマイナス値が出ます。
たとえば株価が100円から95円へ5%下落し、相対出来高が3倍なら-15相当のスコアになります。一方、同じ5%下落でも出来高が平均の0.5倍なら-2.5です。これなら「価格だけ下げた日」と「大量の売買を伴って下げた日」を分けやすくなります。
仕手株や小型株を見る場合には、単純な出来高そのものより相対出来高を使うほうが銘柄ごとの普段の出来高水準を吸収しやすくなります。
おすすめ② ATRで価格変動を標準化した「異常値動きスコア」
価格変化を標準化する場合、平均と標準偏差によるZスコアだけでなく、ATRを使う方法も非常に実用的です。ATRはAverage True Rangeの略で、一定期間の値幅を利用してその銘柄のボラティリティを測る指標です。
Fidelityの解説では、ATRはギャップを含めたTrue Rangeの平均として計算され、一般的には14期間などが利用されます。またATRは方向を示す指標ではなく、値動きの大きさを測るための指標です。[参照]
そこで、たとえば(終値-始値)÷ATRを作ります。普段ATRが100円程度の株が300円上昇すれば+3、300円下落すれば-3程度となり、その日の動きが普段の値幅の何倍だったのかを直感的に確認できます。
さらにこれを相対出来高と組み合わせ、「(終値-始値)÷ATR×相対出来高」とすると、通常の値動きから見て異常に大きく、しかも出来高を伴った変動を強調できます。
値段が300円の株と3万円の株を同じインジケーターで比較するときにも、価格差そのものより各銘柄の通常ボラティリティを基準にしたほうが扱いやすい場合があります。
おすすめ③ CLV×相対出来高で「高値で売られたか、安値で買われたか」を見る
売り捌きらしい動きを見つけたい場合に面白いのが、ローソク足の終値が一日の値幅のどこにあるかを見る方法です。代表的な考え方としてClose Location Value、略してCLVがあります。
単純化すると、高値近くで引ければプラス、安値近くで引ければマイナスになるように数値化します。始値と終値だけを見る方法と違い、当日の高値・安値も利用できることが利点です。
たとえば一時110円まで上昇した株が、終値101円まで売られて安値100円近くで引けたとします。終値だけを前日と比較するとプラスかもしれませんが、日中の値動きを見ると「高値から強く売られた日」です。
ここに相対出来高を掛ければ、大出来高で安値引けした日を強くマイナス評価できます。逆に、大出来高を伴いながら安値から買われて高値付近で終わればプラス方向のスコアになります。
仕手株や急騰銘柄で「上昇したから強い」と単純判断するのではなく、上昇日の内部でどの位置まで売り戻されたかを見る用途にも使えます。
おすすめ④ VWAP乖離率は「Zスコア+継続時間」にすると使いやすい
VWAPと終値の乖離率を使うアイデアも有効ですが、単純に乖離率の上昇・下降だけを見るとノイズが多くなりやすい傾向があります。
まず改善案として考えられるのが、(価格-VWAP)÷ATR、あるいはVWAP乖離率自体を一定期間の標準偏差で割る方法です。これにより「VWAPから0.5%離れている」という絶対値ではなく、「その銘柄として異常なほどVWAPから離れているか」を判断できます。
さらに重要なのが乖離の継続時間です。一瞬だけVWAPを上回った場合と、30分以上VWAPより上に滞在している場合では意味が異なります。
たとえば「VWAP乖離Zスコアが+1以上、かつ直近10本中8本以上がVWAPより上」という条件を組み合わせれば、単発の上振れではなく継続的な買い優勢を検出しやすくなります。
逆に、「乖離Zスコアが+2以上まで上昇した後、VWAP方向へ急速に戻る」という変化を検出すれば、過熱から平均回帰へ移行するシグナルとして研究できます。moomooではカスタムVWAP指標を作成してアラートやストラテジー条件へ利用する方法も公式ヘルプで案内されています。[参照]
おすすめ⑤ VWAP乖離そのものより「VWAP乖離の加速度」を見る
自作インジケーターらしいものを作りたい場合、値そのものではなく変化率を見る方法があります。
まず現在のVWAP乖離率から1本前のVWAP乖離率を引けば、「VWAPから離れる速度」を測れます。さらにその値の変化を計算すれば、「離れる速度が加速しているか、減速しているか」を見ることができます。
たとえば価格がVWAPより上にあるものの、乖離率が+3%、+2.7%、+2.1%、+1.2%と縮小している場合、価格そのものはまだVWAPより上でも上昇圧力は弱くなっています。
反対に+0.2%、+0.5%、+1.1%、+2.0%と拡大していれば、VWAPから上方向へ急速に離れている状態です。この乖離の速度・加速度をZスコア化すると、単なるVWAPクロスとは違ったインジケーターを作れます。
おすすめ⑥ OBVの「値」ではなく傾きとダイバージェンスを使う
出来高を使った自作指標を研究するなら、OBVも一度理解しておく価値があります。OBVは、前日より終値が上なら出来高を加算し、下なら出来高を減算して累積する指標です。FidelityもOBVを買い圧力・売り圧力を見る累積型指標として解説しています。[参照]
OBVそのものを表示するだけなら既存インジケーターで十分ですが、自作するならOBVの傾きを加工すると面白くなります。
たとえば直近5本のOBV変化量を計算し、それを過去50本の平均・標準偏差でZスコア化します。すると「普段と比べて異常に強い出来高流入・流出」が数値になります。
さらに価格とのダイバージェンスも利用できます。株価が高値を更新しているのにOBVの高値が切り下がっているなら、価格上昇に出来高が十分ついてきていない状態です。Fidelityも、価格とOBVの方向が一致しない場合をトレンド失速のシグナルとして紹介しています。[参照]
おすすめ⑦ 「出来高吸収」を検出するインジケーター
出来高系で特に面白い自作テーマが大量に売買されているのに価格が動かない状態です。これは単純な出来高指標では見逃しやすい情報です。
たとえば普段の3倍の出来高があるのに、ローソク足の実体がATRの0.1倍しかないとします。大量の注文が入っているにもかかわらず価格変化が小さい状態です。
そこで「相対出来高÷(実体幅÷ATR+小さな定数)」のような指標を考えると、大量出来高なのに価格が進まない局面ほど高い値になります。
ただし、それだけで買い集めなのか売り捌きなのかは判断できません。高値圏で発生しているのか安値圏なのか、ローソク足が高値引けか安値引けか、VWAPの上下どちらにいるのかなどを追加して方向を判定します。
たとえば急騰後の高値圏で「相対出来高4倍なのに上昇できず、CLVが大幅マイナス、終値がVWAPを下回った」という条件が同時発生すれば、単なる「出来高増加」より売り圧力を疑う根拠が増えます。
「仕手株の売り捌き」を1本の数値だけで判定するのは難しい
ここで重要なのは、チャートから「これは大口が売り捌いた」と断定することは基本的に難しいという点です。OHLCVだけでは、その取引を誰が行ったのかまでは分からないからです。
大出来高の急落が発生しても、大口投資家の売却かもしれませんし、多数の個人投資家による損切りかもしれません。短期トレーダー同士が大量に売買した結果かもしれません。
そのため自作指標では、「売り捌きを判定する」のではなく、「売り捌きが疑われる価格・出来高の特徴を検出する」と定義したほうが合理的です。
たとえば「高値圏」「大出来高」「上ヒゲ」「安値引け」「VWAP割れ」「OBV悪化」という複数条件を別々に数値化し、最後に総合スコアへまとめる方法があります。
複数の指標を統合した「Distribution Score」を作る方法
実用性を高めたいなら、一つの特殊な数式を探すより、意味の異なる複数の情報をスコア化する方法があります。
たとえば売り圧力を評価するDistribution Scoreとして、①ATRで調整した下落率、②相対出来高、③CLV、④VWAP乖離、⑤OBVの傾きという5要素を組み合わせます。
| 要素 | 見たい現象 |
|---|---|
| 価格変化÷ATR | 普段より大きな下落か |
| Relative Volume | 普段より大量に取引されているか |
| CLV | 安値付近で引けたか |
| VWAP乖離 | 平均的な取得価格より下にいるか |
| OBV変化 | 出来高を伴う売り方向の動きが続いているか |
各要素を同じ期間でZスコア化してから合成すれば、単位の違うデータをまとめやすくなります。ただし、似た情報を二重三重に入れると特定の要因だけが過大評価されるので注意します。
たとえば「終値下落率」「ローソク足実体」「RSI低下」の3つはいずれも価格下落という共通情報を強く含みます。5種類の指標を入れたから5種類の情報を得られるとは限りません。
Zスコアによる標準化で注意したいポイント
インジケーターを標準化する場合によく利用されるのがZスコアです。現在値が過去平均から標準偏差何個分離れているかを示すため、銘柄や時期によって値のスケールが違うデータを比較しやすくなります。
たとえばZスコア+2なら平均よりかなり高い側、-2ならかなり低い側にあると理解できます。しかし、株価や出来高データはきれいな正規分布になるとは限らないため、Z=2だから必ず統計的に同じ意味になるとは限りません。
特に出来高は決算発表、材料、ストップ高・ストップ安などで極端な外れ値が生じます。巨大な外れ値が移動窓へ入ると、その後しばらく平均と標準偏差が歪むことがあります。
改善方法として、値を一定範囲へクリップするWinsorize、中央値とMADを利用するRobust Z-score、短期と長期の標準化を併用する方法などを試す価値があります。
標準化期間は20日固定ではなく用途で変える
Zスコアを作る際には、20本、50本、100本など計算期間によって性格が変わります。短い期間なら最近の相場環境へすぐ適応しますが、ノイズも増えます。
たとえば出来高20日Zスコアなら直近約1カ月と比較した異常出来高を検出できます。一方、120日程度にすれば半年近い通常状態と比較できます。
仕手株のように短期間で市場参加者や出来高水準が大きく変わる銘柄では、長期間の平均が現在の相場を表していないこともあります。
そのため、「20日が正解」と決めるのではなく、20・50・100など複数期間で結果が大きく変わらないかを確認したほうが、パラメータ依存の強過ぎるインジケーターを避けやすくなります。
インジケーターを作る前に「順張り用か逆張り用か」を決める
同じインジケーターでも使い方によって意味が正反対になることがあります。VWAPから大きく上方乖離している状態を例にすると分かりやすいでしょう。
順張りなら「買いの勢いが非常に強い」と判断して上昇継続を狙う可能性があります。逆張りなら「平均から離れ過ぎている」と判断してVWAPへの回帰を狙う可能性があります。
どちらも理屈として成立します。問題になるのは、チャートを見た後で都合よく解釈を変えることです。
そのため自作前に、シグナルが高くなったあと価格が続伸することを期待するのか、それとも反転することを期待するのかを明確にしておきます。これだけでもバックテストの設計がかなり分かりやすくなります。
良いインジケーターかどうかは「未来のリターン」で検証する
チャートにインジケーターを重ねて「底で反応している」「天井を当てている」と感じても、それだけでは有効性を判断できません。人間は後からチャートを見ると、成功したシグナルを強く認識する傾向があるためです。
たとえばDistribution Scoreが-2を下回った日の翌日、5日後、20日後のリターンをすべて集計します。そしてシグナルなしの日と比較します。
もし-2以下になった100回のうち、5日後の平均リターンが明確に悪く、別期間や別銘柄でも同様なら、その指標には研究する価値があります。一方、チャート上ではきれいに見えても平均リターンに差がなければ、売買シグナルとしての有効性は弱い可能性があります。
moomooではカスタムインジケーターを作成できるほか、インジケーター計算に関するAPIも公式ドキュメントで案内されています。より本格的に研究するなら、計算結果を取得して統計的に検証する方法も考えられます。[参照]
バックテストで最も避けたい「未来のデータを使う」問題
自作インジケーターで特に注意したいのがルックアヘッド・バイアスです。これは、本来その時点では分からなかった未来の情報を計算へ使ってしまう問題です。
たとえば当日終値を使った日足インジケーターは、その日の取引終了までは値が確定しません。それなのに同じ日の始値で売買できたものとしてバックテストすれば、未来を知った状態で取引していることになります。
また、標準化するときに全期間の平均と標準偏差を計算してしまうのも問題です。2019年のシグナル計算に2025年のデータまで使ってしまうからです。
実運用を想定するなら、その時点までに利用可能だったデータだけでインジケーターを計算する必要があります。
複雑なインジケーターほど強いとは限らない
自作を始めると、RSI、MACD、VWAP、ATR、出来高、移動平均などを大量に組み合わせたくなることがあります。しかし、パラメータが増えるほど過去データへ偶然フィットする過学習のリスクも高くなります。
たとえば「VWAP乖離Zが-1.73以下、RSIが31.4以下、出来高Zが2.12以上、20EMAから4.8%以上乖離」という条件が過去データでは驚くほど高勝率になったとしても、その細かな数字に経済的な意味がなければ偶然の可能性があります。
むしろ「異常出来高」「異常な値幅」「安値引け」という3つ程度の分かりやすい現象を組み合わせ、複数銘柄・複数期間で再現するか調べるほうが実用性を確認しやすくなります。
良いインジケーターとは複雑な数式ではなく、説明できる現象を安定して測定できる数式と考えると、自作の方向性が定まりやすくなります。
初心者が自作するならまず試したい7種類
これから自作インジケーターを増やすのであれば、価格だけを加工した指標を大量に作るより、異なる情報を一つずつ研究すると理解が深まります。
| 自作候補 | 主に測るもの | 用途 |
|---|---|---|
| ATR調整リターン | 通常値幅に対する価格変化 | 異常な急騰・急落 |
| Relative Volume | 通常比の出来高 | 異常出来高 |
| CLV×Relative Volume | ローソク足内の売買圧力 | 買い集め・売り圧力候補 |
| VWAP乖離Z | 平均取得価格からの距離 | トレンド・平均回帰 |
| VWAP乖離加速度 | 需給変化の速度 | 勢いの加速・失速 |
| OBV傾きZ | 出来高フロー | 価格とのダイバージェンス |
| Volume Absorption Score | 出来高に対する価格の進みにくさ | 高値・安値での攻防検出 |
この7種類はそれぞれ測っている情報が少しずつ違います。まず個別に検証し、有効性が確認できたものだけを最後に組み合わせる方法がおすすめです。
まとめ:自作インジケーターは「何を測るか」から逆算すると面白くなる
テクニカル分析のインジケーターを自作する場合、既存指標より複雑なものを作ること自体が目的ではありません。重要なのは、価格、ボラティリティ、出来高、VWAP、ローソク足の位置などから、どの市場現象を抽出したいのかを決めることです。
「(終値-始値)÷出来高」という指標は、売り圧力そのものより「一定の出来高に対して価格がどれほど動いたか」という価格インパクトや流動性に近い性格があります。大量の売りを検出したいのであれば、ATRで標準化した下落率に相対出来高を掛けたり、CLVやVWAP位置を追加したりする方法が目的に合いやすくなります。
VWAP乖離についても、単なる乖離率よりATR調整、Zスコア、継続時間、乖離の速度・加速度へ発展させると研究の幅が広がります。また、出来高系ならOBVの傾きや価格とのダイバージェンス、大出来高なのに価格が進まないVolume Absorptionなども面白いテーマです。
そして最も重要なのは、完成したチャートを見て良し悪しを判断するのではなく、シグナル発生後の1日・5日・20日リターンなどを集計し、別期間・別銘柄でも再現するか検証することです。インジケーターを自作する面白さは「未来を必ず当てる魔法の数式」を探すことではなく、曖昧だった値動きや需給の特徴を明確な仮説へ変え、データで検証できるようにすることにあります。
こんにちは!利益の管理人です。このブログは投資する人を増やしたいという思いから開設し運営しています。株式投資をメインに分散投資をしています。


コメント