2012/2/1
練行足
練行足は非時系列系のチャートの一種で練り足とも呼びます。非時系列系とはチャート時間軸が等間隔ではないということです。
値幅を設定し、値動きがその値幅分動いたらその値幅分の陽線・陰線を描くのが基本になります。
上昇トレンドである場合は値幅分上に動いたら陽線を描き、下落トレンドの場合は値幅分下に動いたら陰線を描きます。
トレンド転換は値幅の2倍以上トレンドと逆に動いた場合となります。
値幅分動いたら陽線・陰線を描くので値幅以内で推移する場合はチャートは更新されず、
値幅の倍、3倍と動いた場合は陽線・陰線を2本、3本描くので陽線・陰線の本数と時系列が一致しないことに注意してください。
Excelで使用する関数
参照文字列に指定したセル参照の文字列が参照形式と合致していない場合、エラー値#REF!が返されます。
そうでない場合は照合の型で指定した動作に従った行数を返します。
照合の型には1,0,-1のいずれかを指定します。
1: 完全一致がない場合、検査値以下の最大値の行数を返します。データを昇順に並べ替えておく必要があります。
0: 完全一致がない場合、エラー値#N/Aが返されます。
-1: 完全一致がない場合、検査値以上の最小値の行数を返します。データを降順に並べ替えておく必要があります。
練行足は計算ルールは簡単だけどそれをExcelで計算するとなると面倒なチャートです。
F5セルは練行足の値幅を指定するセルとします。
I6セル〜L6セルに1を代入します。
M6セルに=F6*F5と入力します。この値は練行足の開始位置になります。
F列で当日位置(終値÷値幅の切り捨て)を計算します。簡単な計算式なので式の説明は省略します。
これを元に練行足の位置、トレンドなどを計算します。
G列で練行足の現在の基準位置を計算します。
練行足は値幅を1ユニットと考えた場合、前日の基準位置と当日位置の差の絶対値が2以上の場合は当日位置が基準位置、
それ以外の場合、前日のトレンドが上昇トレンドの場合前日基準位置と当日位置を比べて大きい方、
それ以外の場合は前日基準位置と当日位置を比べて小さいほうが基準位置となります。
これを式に直すと
H列で前日基準位置と当日位置の差を計算します。簡単な計算式なので式の説明は省略します。
I列でtrendを計算します。この値は基準位置の計算や練行足の値の計算に使います。
上昇トレンドを+1、下落トレンドを-1と定義します。
前日trendが+1でH列の値が-2以下の場合か前日trendが-1でH列の値が+2以上の場合、trendが変化します。
これを式に直すと
J列でcountを計算します。countは基準位置が変わると+1されます。簡単な計算式なので式の説明は省略します。
K列、L列でaddress、dcountをそれぞれ計算します。
練行足は基準位置が1移動するごとに、陽線・陰線を描き加えていきます。
そのため終値の値動きが少ない場合は何日も動かなかったり、1日で値幅の何倍も動いた場合は一度に数本の陽線・陰線を描く場合もあります。
それを実現するためにK列、L列を使います。
まず、K列のaddressですが、これはL列のdcountやM列の練行足の計算でJ列の参照をする時に使う数字です。
一つ上の行のL列のセルが1の場合はaddressを+1それ以外は前のセルの値を使います。
計算式は
これを式に直すと
L列でdcountの値を計算します。前のセルの値が1より大きい場合は前のセルの値を-1します。
それ以外の場合、つまりdcountは前のセルが1の場合はK列の同行の値からJ列で最初に一致する行数を計算し、
H列の該当行の数字の絶対値を計算します。
これを計算式にすると
K列、L列を合わせればJ列のcountが1進んだ時に、陽線・陰線が描かれる本数をK列、L列の進み具合で表すことができます。
M列で練行足を計算します。
計算式は
I列の該当行の数値を参照するという意味です。
I列の数字を参照するので1か-1になります。
それと値幅を掛けて前のセルに足せば練行足が計算できます。
こうすることによって常に値幅分だけ上下に動くようになります。
N列〜Q列はチャート描画用の数値を計算する部分です。練行足は新値足と同様に積み上げ縦棒グラフで描きます。
N列は練行足の陽線・陰線が描かれた日付を参照します。
計算式は
O列でbaseを計算します。
計算式は
P列で陽線の幅を計算します。
計算式は
Q列で陰線の幅を計算します。
計算式は
F6セルをコピーし、F7セルにペースト、
F7〜Q7セルをコピーし、F8以下のセルにペーストすれば練行足が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
練行足のチャート描画の方法は新値足のチャート描画と同じ方法なので、そちらを参照してください。
値幅を設定し、値動きがその値幅分動いたらその値幅分の陽線・陰線を描くのが基本になります。
上昇トレンドである場合は値幅分上に動いたら陽線を描き、下落トレンドの場合は値幅分下に動いたら陰線を描きます。
トレンド転換は値幅の2倍以上トレンドと逆に動いた場合となります。
値幅分動いたら陽線・陰線を描くので値幅以内で推移する場合はチャートは更新されず、
値幅の倍、3倍と動いた場合は陽線・陰線を2本、3本描くので陽線・陰線の本数と時系列が一致しないことに注意してください。
計算式
上昇トレンドの場合、N円上に動いたら陽線を1本描く
2×N円下に動いたらトレンド転換と判断し陰線を2本描く
下落トレンドの場合、N円下に動いたら陰線を1本描く
2×N円上に動いたらトレンド転換と判断し陽線を2本描く
Nは任意
(2×N円以上動いた場合はそれに相当する本数の陽線、陰線を描きます。2×N以上なら2本、3×N以上なら3本となります)
2×N円下に動いたらトレンド転換と判断し陰線を2本描く
下落トレンドの場合、N円下に動いたら陰線を1本描く
2×N円上に動いたらトレンド転換と判断し陽線を2本描く
Nは任意
(2×N円以上動いた場合はそれに相当する本数の陽線、陰線を描きます。2×N以上なら2本、3×N以上なら3本となります)
![]() |
日経平均・練行足の図(2010/1/4〜,200円刻み)
Excelで練行足を計算する
Excelを使って練行足を計算する手順を説明します。Excelで使用する関数
TRUNC(数値)
指定した数値の小数点以下を切り捨てます。IF(条件式,真の場合,偽の場合)
条件式を満たす場合は真の場合の値、満たさない場合は偽の場合の値を返します。ABS(数値)
指定した数値の絶対値を返します。MAX(数値1,数値2,…)
指定した数値や範囲内の数値から最大値を返します。MIN(数値1,数値2,…)
指定した数値や範囲内の数値から最小値を返します。AND(論理式1,論理式2,…)
すべての論理式が真の場合真を返す。そうでない場合は偽を返します。INDIRECT(文字列)
文字列で指定されるセル参照を返します。参照文字列に指定したセル参照の文字列が参照形式と合致していない場合、エラー値#REF!が返されます。
MATCH(検査値,検査範囲,照合の型)
検査値を検査範囲内から検索する文字列が見つかった場合は検索範囲の先頭からの行数を返します。そうでない場合は照合の型で指定した動作に従った行数を返します。
照合の型には1,0,-1のいずれかを指定します。
1: 完全一致がない場合、検査値以下の最大値の行数を返します。データを昇順に並べ替えておく必要があります。
0: 完全一致がない場合、エラー値#N/Aが返されます。
-1: 完全一致がない場合、検査値以上の最小値の行数を返します。データを降順に並べ替えておく必要があります。
![]() |
F5セルは練行足の値幅を指定するセルとします。
I6セル〜L6セルに1を代入します。
M6セルに=F6*F5と入力します。この値は練行足の開始位置になります。
F列で当日位置(終値÷値幅の切り捨て)を計算します。簡単な計算式なので式の説明は省略します。
これを元に練行足の位置、トレンドなどを計算します。
G列で練行足の現在の基準位置を計算します。
練行足は値幅を1ユニットと考えた場合、前日の基準位置と当日位置の差の絶対値が2以上の場合は当日位置が基準位置、
それ以外の場合、前日のトレンドが上昇トレンドの場合前日基準位置と当日位置を比べて大きい方、
それ以外の場合は前日基準位置と当日位置を比べて小さいほうが基準位置となります。
これを式に直すと
=IF(ABS(F7-G6)>=2,F7,IF(I6=1,MAX(G6,F7),MIN(G6,F7)))
となります。H列で前日基準位置と当日位置の差を計算します。簡単な計算式なので式の説明は省略します。
I列でtrendを計算します。この値は基準位置の計算や練行足の値の計算に使います。
上昇トレンドを+1、下落トレンドを-1と定義します。
前日trendが+1でH列の値が-2以下の場合か前日trendが-1でH列の値が+2以上の場合、trendが変化します。
これを式に直すと
=IF(AND(I6=1,H7<=-2),-1,IF(AND(I6=-1,H7>=2),1,I6))
となります。J列でcountを計算します。countは基準位置が変わると+1されます。簡単な計算式なので式の説明は省略します。
K列、L列でaddress、dcountをそれぞれ計算します。
練行足は基準位置が1移動するごとに、陽線・陰線を描き加えていきます。
そのため終値の値動きが少ない場合は何日も動かなかったり、1日で値幅の何倍も動いた場合は一度に数本の陽線・陰線を描く場合もあります。
それを実現するためにK列、L列を使います。
まず、K列のaddressですが、これはL列のdcountやM列の練行足の計算でJ列の参照をする時に使う数字です。
一つ上の行のL列のセルが1の場合はaddressを+1それ以外は前のセルの値を使います。
計算式は
これを式に直すと
=IF(L6=1,K6+1,K6)
となります。L列でdcountの値を計算します。前のセルの値が1より大きい場合は前のセルの値を-1します。
それ以外の場合、つまりdcountは前のセルが1の場合はK列の同行の値からJ列で最初に一致する行数を計算し、
H列の該当行の数字の絶対値を計算します。
これを計算式にすると
=IF(L6>1,L6-1,ABS(INDIRECT("H"&MATCH(K7,$J$1:$J$6000,0))))
となります。K列、L列を合わせればJ列のcountが1進んだ時に、陽線・陰線が描かれる本数をK列、L列の進み具合で表すことができます。
M列で練行足を計算します。
計算式は
=M6+INDIRECT("I"&MATCH(K7,$J$1:$J$6000,0))*$F$5
となります。
INDIRECT("I"&MATCH(K7,$J$1:$J$6000,0))はJ列からK列の数字と最初に一致する行数を計算し、I列の該当行の数値を参照するという意味です。
I列の数字を参照するので1か-1になります。
それと値幅を掛けて前のセルに足せば練行足が計算できます。
こうすることによって常に値幅分だけ上下に動くようになります。
N列〜Q列はチャート描画用の数値を計算する部分です。練行足は新値足と同様に積み上げ縦棒グラフで描きます。
N列は練行足の陽線・陰線が描かれた日付を参照します。
計算式は
=INDIRECT("A"&MATCH(K7,$J$1:$J$6000,0))
となります。O列でbaseを計算します。
計算式は
=IF(M7<M6,MIN(M6:M7)-$F$5,MIN(M6:M7)))
となります。P列で陽線の幅を計算します。
計算式は
=IF(M7>M6,$F$5,0)
となります。Q列で陰線の幅を計算します。
計算式は
=IF(P7=0,$F$5,0)
となります。F6セルをコピーし、F7セルにペースト、
F7〜Q7セルをコピーし、F8以下のセルにペーストすれば練行足が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
練行足のチャート描画の方法は新値足のチャート描画と同じ方法なので、そちらを参照してください。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↑ TOP PAGE