2011/1/28
フラクタル適応型移動平均(Fractal Adaptive Moving Average)
フラクタル適応型移動平均は指数移動平均の一種です。John Ehlersが開発しました。
指定期間のフラクタル次元から平滑化定数をその都度計算するのが特徴です。
平滑化定数が計算日毎に変化するのはVIDYAやカウフマンの適応型移動平均と同じです。
フラクタル次元は直線に近いほど1に近くなり、乱雑になると値が大きくなります。
フラクタル次元から計算される平滑化定数はフラクタル次元が1に近いほど大きな値が出るので
直線的な動きをしているときは株価に漸近し、乱雑な動きの場合は移動平均の動きが小さくなるのが特徴です。
使用する関数
フラクタル適応型移動平均は中値(高値と安値の平均)を元に、
前日のフラクタル適応型移動平均と指定期間のフラクタル次元を使って計算します。
ここでは任意のパラメータのフラクタル適応型移動平均が計算できるようにOFFSET関数を使います。
フラクタル適応型移動平均の計算にフラクタル次元の値が必要になるのでまずそれを計算してからフラクタル適応型移動平均を計算します。
フラクタル次元は中値(高値と安値の平均)を使って計算します。
F列〜J列がフラクタル次元を計算する部分です。
K列で平滑化定数を計算し
L列でフラクタル適応型移動平均を計算します。
L4セルはフラクタル適応型移動平均の平滑化定数の計算に使う数字を指定するセルとします。
F列で中値を計算します。計算式の説明は中値を参照してください。
G列で計算式のN1(MF期間のMidの最大値-MF期間のMidの最小値)÷MFを計算します。
計算式は
この列では期間前半部分の計算をするので指定する区間は1〜M/2となります。
この部分をOFFSET関数で指定しているのですが少々複雑なので指定の仕方はOFFSET関数の説明を参照してください。
H列では計算式のN2を計算します。
計算式の形はG列と同じですが、OFFSET関数内の引数が少々違っています。
計算式は
I列は計算式のN3を計算します。
計算式は
J列でフラクタル次元を計算します。
フラクタル次元の計算式は(Log(N1+N2)-Log(N3))÷Log(2)なので
セルに入力する計算式は
K列ではJ列で計算したフラクタル次元を使って平滑化定数を計算します。
計算式はExp(-4.6*(D-1))と定義されているので
セルに入力する計算式は
IF文を組み込んだ計算式は
L列でフラクタル適応型移動平均を計算します。
フラクタル適応型移動平均は1〜M-1日までは中値の値、それ以降がフラクタル適応型移動平均となるので、
計算式は
F5〜L5セルをコピーしF6以下のセルにペーストすればフラクタル適応型移動平均が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
指定期間のフラクタル次元から平滑化定数をその都度計算するのが特徴です。
平滑化定数が計算日毎に変化するのはVIDYAやカウフマンの適応型移動平均と同じです。
フラクタル次元は直線に近いほど1に近くなり、乱雑になると値が大きくなります。
フラクタル次元から計算される平滑化定数はフラクタル次元が1に近いほど大きな値が出るので
直線的な動きをしているときは株価に漸近し、乱雑な動きの場合は移動平均の動きが小さくなるのが特徴です。
計算式
Mid = (高値 + 安値) ÷ 2
MF = 指定期間の前半(1〜M/2)
MB = 指定期間の後半(M/2+1〜M)
N1 = (MF期間のMidの最大値 - MF期間のMidの最小値) ÷ MF
N2 = (MB期間のMidの最大値 - MB期間のMidの最小値) ÷ MB
N3 = (M期間のMidの最大値 - M期間のMidの最小値) ÷ M
D=(Log(N1+N2)-Log(N3))÷Log(2)
A=Exp(-4.6*(D-1))
フラクタル適応型移動平均 = 前日のフラクタル適応型移動平均 + (当日終値 - 前日のフラクタル適応型移動平均) × A
Mは偶数を指定する
注1:1日目〜M-1日まではフラクタル適応型移動平均=Midの値とする
注2:Aが1以上になった場合はA=1とする
MF = 指定期間の前半(1〜M/2)
MB = 指定期間の後半(M/2+1〜M)
N1 = (MF期間のMidの最大値 - MF期間のMidの最小値) ÷ MF
N2 = (MB期間のMidの最大値 - MB期間のMidの最小値) ÷ MB
N3 = (M期間のMidの最大値 - M期間のMidの最小値) ÷ M
D=(Log(N1+N2)-Log(N3))÷Log(2)
A=Exp(-4.6*(D-1))
フラクタル適応型移動平均 = 前日のフラクタル適応型移動平均 + (当日終値 - 前日のフラクタル適応型移動平均) × A
Mは偶数を指定する
注1:1日目〜M-1日まではフラクタル適応型移動平均=Midの値とする
注2:Aが1以上になった場合はA=1とする
![]() |
日経平均終値とフラクタル適応型移動平均の図
Excelを使ってフラクタル適応型移動平均を計算する
Excelを使ってフラクタル適応型移動平均を計算する手順を説明します。使用する関数
MAX(数値1,数値2,…)
指定した数値や範囲内の数値から最大値を返します。MIN(数値1,数値2,…)
指定した数値や範囲内の数値から最小値を返します。LOG(数値,底)
指定した底の数値の対数を返します。底を省略した場合は底に10を指定したとみなされます。EXP(数値)
eを底とする数値の冪乗を返します。OFFSET(基準セル,行数,列数,高さ,幅)
基準セルから指定した行数、列数だけ移動したセルを参照します。または高さ、幅を設定して基準セルから指定した高さ、幅のセル範囲を指定します。IF(条件式,真の場合,偽の場合)
条件式を満たす場合は真の場合の値、満たさない場合は偽の場合の値を返します。ROW(セル)
セルの行番号を返します。何も指定しない場合はROWが書かれたセルの行番号を返します。![]() |
前日のフラクタル適応型移動平均と指定期間のフラクタル次元を使って計算します。
ここでは任意のパラメータのフラクタル適応型移動平均が計算できるようにOFFSET関数を使います。
フラクタル適応型移動平均の計算にフラクタル次元の値が必要になるのでまずそれを計算してからフラクタル適応型移動平均を計算します。
フラクタル次元は中値(高値と安値の平均)を使って計算します。
F列〜J列がフラクタル次元を計算する部分です。
K列で平滑化定数を計算し
L列でフラクタル適応型移動平均を計算します。
L4セルはフラクタル適応型移動平均の平滑化定数の計算に使う数字を指定するセルとします。
F列で中値を計算します。計算式の説明は中値を参照してください。
G列で計算式のN1(MF期間のMidの最大値-MF期間のMidの最小値)÷MFを計算します。
計算式は
(MAX(OFFSET(C5,-$L$4/2,0,-$L$4/2,1))-MIN(OFFSET(D5,-$L$4/2,0,-$L$4/2,1)))/($L$4/2)
です。この列では期間前半部分の計算をするので指定する区間は1〜M/2となります。
この部分をOFFSET関数で指定しているのですが少々複雑なので指定の仕方はOFFSET関数の説明を参照してください。
H列では計算式のN2を計算します。
計算式の形はG列と同じですが、OFFSET関数内の引数が少々違っています。
計算式は
(MAX(OFFSET(C5,0,0,-$L$4/2,1))-MIN(OFFSET(D5,0,0,-$L$4/2,1)))/($L$4/2)
です。I列は計算式のN3を計算します。
計算式は
(MAX(OFFSET(C5,0,0,-$L$4,1))-MIN(OFFSET(D5,0,0,-$L$4,1)))/$L$4
です。J列でフラクタル次元を計算します。
フラクタル次元の計算式は(Log(N1+N2)-Log(N3))÷Log(2)なので
セルに入力する計算式は
=(LOG(G5+H5)-LOG(I5))/LOG(2)
となります。K列ではJ列で計算したフラクタル次元を使って平滑化定数を計算します。
計算式はExp(-4.6*(D-1))と定義されているので
セルに入力する計算式は
EXP(-4.6*(J5-1))
となるのですが、この値が1以上の場合は1を指定しなければいけないのでIF文を使って場合分けを行います。IF文を組み込んだ計算式は
IF(EXP(-4.6*(J5-1))>1,1,EXP(-4.6*(J5-1)))
となります。L列でフラクタル適応型移動平均を計算します。
フラクタル適応型移動平均は1〜M-1日までは中値の値、それ以降がフラクタル適応型移動平均となるので、
計算式は
=IF(ROW()-ROW($L$4)<$L$4,F5,L4+(F5-L4)*K5)
となります。F5〜L5セルをコピーしF6以下のセルにペーストすればフラクタル適応型移動平均が計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↑ TOP PAGE