2012/2/1
新値足
新値足は非時系列系のチャートの一種です。非時系列系とはチャート時間軸が等間隔ではないということです。
上昇トレンドの場合は終値が直近の高値を超えたらその終値を直近高値として陽線を描きます。
終値がN個前の高値を下回ったらトレンド転換とみなし、陰線を描きます。
下落トレンドの場合は終値が直近安値を下回ったらその終値を直近安値として陰線を描きます。
終値がN個前の安値を上回ったらトレンド転換とみなし、陽線を描きます。
Excelで使用する関数
参照文字列に指定したセル参照の文字列が参照形式と合致していない場合、エラー値#REF!が返されます。
そうでない場合は照合の型で指定した動作に従った行数を返します。
照合の型には1,0,-1のいずれかを指定します。
1: 完全一致がない場合、検査値以下の最大値の行数を返します。データを昇順に並べ替えておく必要があります。
0: 完全一致がない場合、エラー値#N/Aが返されます。
-1: 完全一致がない場合、検査値以上の最小値の行数を返します。データを降順に並べ替えておく必要があります。
新値足は計算ルールは簡単だけどそれをExcelで計算するとなると面倒なチャートです。
I4セルは新値足の転換本数を指定するセルとします。
G5セルに0を代入します。
H5セルに0と代入します。
I5セルに=E5と代入します。
G列でcountを計算します。
countは直近N個の新値足と終値をチェックして、終値が新値足を更新するようならcountを1増やし、更新しない場合は前日countとします。
これを式に直すと
式が複雑なので順を追って解説します。
新値足が更新される場合というのは、直近終値がそれまでのN本の新値足の高値を更新するか、安値を更新する場合です。
新値3本足なら、直近3本分の高値、安値を更新するという意味です。
新値足はI列に格納されているのでこれを単純に式に直すと
-$I$4の部分を改良して
H列でaddressを計算します。単純な式なので式の説明は省略します。
I列で新値足を計算します。新値足はG列の数字が更新された日の終値になるので、それをH列の数字を使って参照します。
計算式は
INDIRECT関数は引数の文字列をExcelの数式で使える形にするというものです。
例えば、=INDIRECT("E10")と入力すればそのセルにはE10セルの値が反映されます。
上の式の場合、引数が"E"&MATCH(H6,$G$1:$G$3000,0)となっています。
MATCH関数は検査範囲内から検査値と初めに一致する行数を返す関数なので
この場合、$G$1:$G$3000の範囲内でH6セルの値1と一致する行数はG6つまり6行目になるので引数は"E"&6でE6となり(&は文字列を連結する演算子)
上記の式は=INDIRECT("E6")となりE6セルの値が反映されます。
=INDIRECT("E"&MATCH(H9,$G$1:$G$3000,0))ならばH9の値は4でそれに一致する最初のG列のセルはG10なので行数は10
=INDIRECT("E10")と評価されE10の値が反映されることになります。
検索範囲の$G$1:$G$3000は、このくらいあれば10年分の日足データから新値足を計算できるのでこの範囲にしました。
検索範囲が足りない場合は$G$1:$G$5000とか$G$1:$G$10000とか増やしてください。
J〜M列はチャートを描くための数値を計算する部分です。新値足は積み上げ縦棒グラフを使って描きます。
J列は新値足が更新された日を参照します。
計算式は、I列と同じような形になり、
K列でbaseを計算します。K5セルに=I5と代入します。
K6セルに=IF(I6>I5,I5,I6)と代入します。
K7セルの計算式は
L列で陽線の幅を計算します。
計算式は
M列で陰線の幅を計算します。
M6セルに=IF(I6<I5,I5-I6,0)と代入します。
M7セルの計算式は
G6〜J6セルをコピーし、G7セルにペースト、
G7〜M7セルをコピーし、G8以下のセルにペーストすれば新値足が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
まず、K列〜M列のチャートを描きたい範囲を選択し、グラフウィザードで積み上げ縦棒グラフを選択して積み上げ縦棒グラフを描きます。
こんな感じのチャートが出来上がります。
次にチャート内の系列1をダブルクリックし、データ系列の書式設定ウィンドウを出します。
そこで、パターンの輪郭を「無し」、領域を「無し」と選択しOKボタンを押すと系列1が消えて系列2(陽線)、系列3(陰線)のチャートになります。
あとは縦軸、棒グラフの幅などを調整すれば新値足のチャートが出来上がります。
上昇トレンドの場合は終値が直近の高値を超えたらその終値を直近高値として陽線を描きます。
終値がN個前の高値を下回ったらトレンド転換とみなし、陰線を描きます。
下落トレンドの場合は終値が直近安値を下回ったらその終値を直近安値として陰線を描きます。
終値がN個前の安値を上回ったらトレンド転換とみなし、陽線を描きます。
計算式
上昇トレンドの場合、終値が直近の高値を超えたらその終値を直近高値として陽線を描く
終値がN個前の高値を下回ったらトレンド転換とみなし、陰線を描く
下落トレンドの場合、終値が直近安値を下回ったらその終値を直近安値として陰線を描く
終値がN個前の安値を上回ったらトレンド転換とみなし、陽線を描く
Nは任意、通常は3が使われる
終値がN個前の高値を下回ったらトレンド転換とみなし、陰線を描く
下落トレンドの場合、終値が直近安値を下回ったらその終値を直近安値として陰線を描く
終値がN個前の安値を上回ったらトレンド転換とみなし、陽線を描く
Nは任意、通常は3が使われる
![]() |
日経平均・新値足の図(2010/1/4〜,3本)
Excelで新値足を計算する
Excelを使って新値足を計算する手順を説明します。Excelで使用する関数
IF(条件式,真の場合,偽の場合)
条件式を満たす場合は真の場合の値、満たさない場合は偽の場合の値を返します。MAX(数値1,数値2,…)
指定した数値や範囲内の数値から最大値を返します。MIN(数値1,数値2,…)
指定した数値や範囲内の数値から最小値を返します。OR(論理式1,論理式2,…)
論理式のどれか一つが真の場合真を返します。すべて偽の場合は偽を返します。OFFSET(基準セル,行数,列数,高さ,幅)
基準セルから指定した行数、列数だけ移動したセルを参照します。
または高さ、幅を設定して基準セルから指定した高さ、幅のセル範囲を指定します。INDIRECT(文字列)
文字列で指定されるセル参照を返します。参照文字列に指定したセル参照の文字列が参照形式と合致していない場合、エラー値#REF!が返されます。
MATCH(検査値,検査範囲,照合の型)
検査値を検査範囲内から検索する文字列が見つかった場合は検索範囲の先頭からの行数を返します。そうでない場合は照合の型で指定した動作に従った行数を返します。
照合の型には1,0,-1のいずれかを指定します。
1: 完全一致がない場合、検査値以下の最大値の行数を返します。データを昇順に並べ替えておく必要があります。
0: 完全一致がない場合、エラー値#N/Aが返されます。
-1: 完全一致がない場合、検査値以上の最小値の行数を返します。データを降順に並べ替えておく必要があります。
![]() |
I4セルは新値足の転換本数を指定するセルとします。
G5セルに0を代入します。
H5セルに0と代入します。
I5セルに=E5と代入します。
G列でcountを計算します。
countは直近N個の新値足と終値をチェックして、終値が新値足を更新するようならcountを1増やし、更新しない場合は前日countとします。
これを式に直すと
=IF(OR(E6>MAX(OFFSET($I$5,G5,0,-MIN($I$4,G5+1),1)),E6<MIN(OFFSET($I$5,G5,0,-MIN($I$4,G5+1),1))),G5+1,G5)
となります。式が複雑なので順を追って解説します。
新値足が更新される場合というのは、直近終値がそれまでのN本の新値足の高値を更新するか、安値を更新する場合です。
新値3本足なら、直近3本分の高値、安値を更新するという意味です。
新値足はI列に格納されているのでこれを単純に式に直すと
OR(E6>MAX(OFFSET($I$5,G5,0,-$I$4,1)),E6<MIN(OFFSET($I$5,G5,0,-$I$4,1)))
となります。ただ、これでは新値足の計算の最初の部分(新値足がN本揃っていない場合、新値3本足なら初めの3本まで)の処理ができないので-$I$4の部分を改良して
OR(E6>MAX(OFFSET($I$5,G5,0,-MIN($I$4,G5+1),1)),E6<MIN(OFFSET($I$5,G5,0,-MIN($I$4,G5+1),1)))
とします。H列でaddressを計算します。単純な式なので式の説明は省略します。
I列で新値足を計算します。新値足はG列の数字が更新された日の終値になるので、それをH列の数字を使って参照します。
計算式は
=INDIRECT("E"&MATCH(H6,$G$1:$G$3000,0))
となります。INDIRECT関数は引数の文字列をExcelの数式で使える形にするというものです。
例えば、=INDIRECT("E10")と入力すればそのセルにはE10セルの値が反映されます。
上の式の場合、引数が"E"&MATCH(H6,$G$1:$G$3000,0)となっています。
MATCH関数は検査範囲内から検査値と初めに一致する行数を返す関数なので
この場合、$G$1:$G$3000の範囲内でH6セルの値1と一致する行数はG6つまり6行目になるので引数は"E"&6でE6となり(&は文字列を連結する演算子)
上記の式は=INDIRECT("E6")となりE6セルの値が反映されます。
=INDIRECT("E"&MATCH(H9,$G$1:$G$3000,0))ならばH9の値は4でそれに一致する最初のG列のセルはG10なので行数は10
=INDIRECT("E10")と評価されE10の値が反映されることになります。
検索範囲の$G$1:$G$3000は、このくらいあれば10年分の日足データから新値足を計算できるのでこの範囲にしました。
検索範囲が足りない場合は$G$1:$G$5000とか$G$1:$G$10000とか増やしてください。
J〜M列はチャートを描くための数値を計算する部分です。新値足は積み上げ縦棒グラフを使って描きます。
J列は新値足が更新された日を参照します。
計算式は、I列と同じような形になり、
=INDIRECT("A"&MATCH(H6,$G$1:$G$3000,0))
となります。K列でbaseを計算します。K5セルに=I5と代入します。
K6セルに=IF(I6>I5,I5,I6)と代入します。
K7セルの計算式は
=IF(I7>I6,IF(L6=0,K5,I6),I7)
となります。L列で陽線の幅を計算します。
計算式は
=IF(I6>I5,I6-K6,0)
となります。M列で陰線の幅を計算します。
M6セルに=IF(I6<I5,I5-I6,0)と代入します。
M7セルの計算式は
=IF(I7<I6,IF(M6=0,K6-K7,I6-I7),0)
となります。G6〜J6セルをコピーし、G7セルにペースト、
G7〜M7セルをコピーし、G8以下のセルにペーストすれば新値足が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
新値足のチャート描画
新値足のチャートは積み上げ縦棒グラフを使って描きます。ここではその方法を解説します。まず、K列〜M列のチャートを描きたい範囲を選択し、グラフウィザードで積み上げ縦棒グラフを選択して積み上げ縦棒グラフを描きます。
![]() |
こんな感じのチャートが出来上がります。
![]() |
次にチャート内の系列1をダブルクリックし、データ系列の書式設定ウィンドウを出します。
![]() |
そこで、パターンの輪郭を「無し」、領域を「無し」と選択しOKボタンを押すと系列1が消えて系列2(陽線)、系列3(陰線)のチャートになります。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↑ TOP PAGE