システムトレードの作り方 TOP > システムトレード初級編:MACD >

MACDの作り方

今回はMACDを使用してトレンド判定を作成してみようと思う。MACDとは、移動平均の収束と乖離を意味する「Moving Average Convergence Divergence」の頭文字をとったもの。マックデーと読む。MACDの計算は今までのトレンド判定よりもちょっと複雑なので、しっかり確認しておきたい。

MACDのトレンド判定を作るためには、

1.2本の指数平滑平均線を求める。

今日のn日指数平滑平均  = 昨日の指数平滑平均 + 2 / ( n + 1 ) × (今日の価格 - 昨日の指数平滑平均)

2.2本の指数平滑平均の差からMACDを求める。

3.MACDのn日移動平均からシグナルを求める。

トレンド判定ルールは下記のとおり

MACDがシグナルより上に位置するとき上昇トレンド継続中、MACDがシグナルより下に位置するとき下降トレンド継続中

12日指数平滑平均線を計算してみる!
1.F1に「12日EMA」と入力する
2.F13に「=AVERAGE(E2:E13)」と入力する
これは、はじめの指数平滑平均を求める時に前日の指数平滑平均を使うことが
できないため移動平均で代用している。
3.F14に「=F13+2/13*(E14-F13)」と入力する
4.データのある最終行までコピーする

26日指数平滑平均線を計算してみる!
5.G1に「26日EMA」と入力する
6.G27に「=AVERAGE(E2:E27)」と入力する
7.G28に「=G27+2/27*(E28-G27)」と入力する
8.データのある最終行までコピーする

MACDを計算してみる!
9.H1に「MACD」と入力する
10.H28に「=F28-G28」と入力する
11.データのある最終行までコピーする

9日シグナルを計算してみる!
12.I1に「9日シグナル」と入力する
13.I36に「=AVERAGE(H28:H36)」と入力する
14.データのある最終行までコピーする

MACDグラフ

トレンド判定を計算してみる!
15.J1に「トレンド判定」と入力
16.J41に「=IF(H41>I41,"上昇",IF(H41<I41,"下降"))」と入力
これはMACDが9日シグナルよりも上に位置するなら上昇、下に位置するなら下降を意味する。

17.条件付き書式で上昇を青、下降を赤にする

新しい書式ルール 

18.F2でウィンドウ枠の固定を設定する

ここまで進むと下の図のようになる。

MACDドテン売買トレンド判定

MACDのドテン

MACDによるトレンド判定を利用して、ドテン売買をテストしてみる。売買ルールは次のとおりです。トレンド判定が下降から上昇へ変わった日の翌日の始値で買い、その後上昇から下降へ変わったら、次の日の始値で決済。売りの場合はその逆で、ドテン売買なので、売り買いを繰り返していく。取引枚数は10,000通貨とし手数料は1,050円、スプレッドは0.04円とする。それでは、作成開始!!MACDによるトレンド判定の続きからです。

☆約定価格を計算

1.ウィンドウ枠の固定をF4に設定する
2.K1に「約定価格」と入力する
3.K61に「=IF(J59<>J60,B61,K60)」
  Jのトレンド判定が変わっていたら翌日の始値を約定価格としている

4.データのある最終行までコピーする

☆ポジションの種類を計算

5.L1に「種類」と入力する
6.L61に「=IF(AND(J59<>J60,J60="上昇"),"買",IF(AND(J59<>J60,J60="下降"),"売",L60))」と入力する
  前々日と前日のJが変わっていて、かつ前日のJが上昇なら買、前々日と前日のJが変わっていて、かつ前日のJが下降なら売と表示させている。Jに変更がなければ、前日のLを表示させる。

7.データのある最終行までコピーする

☆ポジションの日数を計算

8.M1「日数」と入力する
9.M61に「=IF(J59<>J60,1,M60+1)」と入力する
  前々日と前日のJが変わっていたら1を表示させ、変わっていなかったら前日のMに1をプラスする

10.データのある最終行までコピーする

☆決済価格を計算

11.N1に「決済価格」と入力する
12.N61に「=IF(J59<>J60,B61,"")」と入力する
   前々日と前日のJが変わっていたらその日の始値を表示させ、それ以外は空白とする

13.データのある最終行までコピーする

☆損益を計算

14.O1に「損益」、O2に「10,000」、O3に「1,050」、N3に「0,04」と入力する
これは取引単位を10,000通貨、手数料を1,050円、スプレッドを0.04円にするため

15.O61に「 =IF(AND(N61<>"",L60="買"),(N61-K60)*$O$2-$O$3-N$3*O$2,IF(AND(N61<>"",L60="売"),(K60-N61)*$O$2-$O$3-N$3*O$2,"")) 」と入力する
これは決済価格Nが空白じゃなくかつポジションの種類Lが買だった場合、決済価格Nから約定価格Kを引いてその値に10,000通貨を掛算、手数料1050円、スプレッド0.04円をマイナスしている。逆に決済価格Nが空白じゃなくかつ、ポジションの種類Lが売だった場合、約定価格Kから決済価格Nを引いてそのその値に10,000通貨を掛算、手数料1050円、スプレッド0.04円をマイナスしている。それ以外は空白としている

16.データのある最終行までコピーする
※取引通貨と手数料に対しては絶対参照($)が使われていることに注意しよう。

一応、下の図を参考にしてほしい。

 macd2.JPG

MACDのドテンの評価

前回作成したMACDのドテン売買のテスト結果を評価してみる。
MACDは信頼性が高いだの、移動平均よりも優れているだの、
褒められていることが多いので、ある意味た・の・し・み。←性格悪そう??

まずは、評価をするための下準備をする。

累積損益を計算
1.P1に「累積損益」と入力する
2.P61に「=SUM(O61)+P60」と入力する
3.データのある最終行までコピーする

最大損益を計算
4.Q1に「最大損益」と入力する
5.Q61に「=MAX(P61,Q60)」と入力する
6.データのある最終行までコピーする

ドローダウンを計算
7.R1に「ドローダウン」と入力する
8.R61に「=IF(P61-Q61>=0,0,P61-Q61)」と入力する
9.データのある最終行までコピーする

評価シートを作成
10.シートを挿入して、名前を評価シートとする

勝率と売買回数を計算
11.勝ち回数 (B2)
「=COUNTIF(usdデータ!O$4:O$1001,">0")」
損益の中で0より大きな数値を数える
12.負け回数 (B4)
「=COUNTIF(usdデータ!O$4:O$1001,"<0")」
損益の中で0より小さな数値を数える
13.売買回数 (B6)
「=SUM(B2,B4)」
勝ち回数と負け回数の合計
14.勝率 (A2)
「=B2/B6」
勝ち回数÷売買回数

期待値を計算
15.利益合計 (C2)
「=SUMIF(usdデータ!O$4:O$1001,">0")」
損益の中で0より大きな数値を合計する
16.損失合計 (C4)
「=SUMIF(usdデータ!O$4:O$1001,"<0")」
損益の中で0より小さな数値を合計する
17.損益合計 (C6)
「=SUM(C2,C4)」
利益合計+損失合計
18.平均利益 (D2)
「=C2/B2」
利益合計÷勝ち回数
19.平均損失 (D4)
「=C4/B4」
損失合計÷負け回数
20.期待値 (D6)
「=(D2*A2)+(D4*(1-A2))」
(平均利益×勝率)+(平均損失×(1-勝率)))

最大利益、最大損失、最大ドローダウンを計算
21.最大利益 (E2)
「=MAX(usdデータ!O$4:O$1001)」
損益の中での最大値
22.最大損失(E4)
「=MIN(usdデータ!O$4:O$1001)」
損益の中での最小値
23.最大ドローダウン (E6)
「=MIN(usdデータ!R4:R1001)」
ドローダウンの最小値

MACDドテン売買評価

↑評価項目は上の図のようになる。
参考にしてほしい。

 移動平均ドテン売買評価

↑移動平均のドテンの評価と比較してほしい。

改善点として注目すべきなのは、勝率。
勝率は24.8%(下図)から41.0%(上図)と良くなっている。

あとはそれほど驚くような結果じゃない。。。
移動平均のクロスがプラスの期待値だったことを考えると やはりマイナスの期待値に終わったMACDはこれだけではもの足りなさを感じる。

売買回数は移動平均クロスと比べてMACDが2倍以上多いため、フィルターを組み合わせることによって改善されるかもしれない。

MACDドテン売買グラフ
↑MACDのドテン

過去27年間の検証(MACD)

前回まで、12日、26日、9日のMACDに固定して検証してきましたが、今回もいくつかの日数の組み合わせについて検証してみました。(USD/JPN  27年間)短期指数移動平均を5日から20日(5日ずつ)、長期指数移動平均を20日から50日(10日ずつ)づらして検証しました。(シグナルは、9日で固定です)下の図は、そのうちの合計損益が100万円以上になったものだけをピックアップしたものです。

MACDドテン売買27年間検証

 

MACDドテン売買27年間検証

今回はあらかじめ、平均、直近10年平均、直近5年平均の3項目をつけたしてみました。27年間の過去データを検証するとMACDがそれなりに評価が高い理由がわかる気がします。

移動平均線、移動平均クロスについては、直近10年、直近5年についてほとんどの結果がマイナスに終わってしまっていました。それに比べるとMACDはそれなりのパフォーマンスを残していることがハッキリとわかります。

特に15-50についてはもっとも安定した結果となっています。2003年から2006年についても、多少赤が目立ちますが、合計ではプラスとなっています。

次はRSIの作り方です。

[スポンサードリンク]