今回は、最適化について考えてみたいと思います。


使う機能は、メタトレーダーの "Optimization"(最適化)機能です。



前回の記事でバックテストを行ったEA「GoldAndDead」は、
移動平均線の交差したところで売買を行うのですが、この交差する値を調整して最適化します。



この説明だけだとイメージしにくいかもしれませんので、まずは具体的な数値を元に簡単に説明したいと思います。


移動平均線の交差したところで売買を行うというのは、2本の移動平均Aと移動平均Bが交差したところで売買を行うと思って下さい。


例えば、

Aが、5日移動平均、
Bが、10日移動平均

というような具合です。


もちろん、これは25日移動平均と、100日移動平均の組み合わせであっても問題ありません。
組み合わせの値を変えて、利益が上がるかどうかを実際にバックテストを行って検証すれば良いからです。




さて、ここで問題となるのは、どのような組み合わせならば利益率が向上するのか?ということです。
利益を得るために最適な値を探していく、これが最適化なのですが、


あまり過度に最適化を行うとカーブフィッティングと呼ばれるものになってしまいます。


カーブフィッティングとは、過度に最適化を行い、過去のバックテストの結果は非常に良くなるのですが、
実際に運用しようとすると、過剰に最適化したために、うまく機能しないということになってしまいます。



そこで、カーブフィッティングに気をつけながら、最適化のテストを行ってみたいと思います。
まずは、2つの移動平均線の値を少しずつ変化させて、組み合わせを変えていきたいと思いますが、


1日移動平均 ~ 50日移動平均までと、
1日移動平均 ~ 100日移動平均までの組み合わせを検証しようとするとその組み合わせは



1.   1日移動平均 ~  1日移動平均
2.   1日移動平均 ~  2日移動平均
3.   1日移動平均 ~  3日移動平均
4.   1日移動平均 ~  4日移動平均
5.      ・
6.      ・
7.      ・
8.      ・
       ・
       ・
       ・
4999. 50日移動平均 ~  99日移動平均
5000. 50日移動平均 ~ 100日移動平均


つまり、


50通り X 100通りとなり、 合計で 5000通りになります!!!


さらに、移動平均の値を変えてバックテストを行うとすると、1つ1つのバックテスト結果を比較したりする手間と労力が非常に掛かりそうです。



しかしながら、ここで威力を発揮するのがメタトレーダーの最適化機能を使ったバックテストになります。



上記の例のように 5000通りの組み合わせを1回のバックテストで検証・比較することが出来るんです!!



前置きが長くなりましたが、今回は、このとっても便利な最適化の機能を見ていきたいと思います。



今回も、最適化を行うEAは、「GoldAndDead」ですが、「Moving Average」など、
他のEAでも基本的には同じように操作することで最適化のテストが可能です。




1.最適化の設定

まずは、下の画像と同じように "Optimization" のチェックボックスにチェックを入れてください。


2-17-1.GIF


チェックを入れると、この後に指定する値に沿って、最適化のテストを行うということになります。




2.値の設定

次に、"Expert Properities" をクリックして下さい。



2-17-2.GIF



すると、下記の画面が表示されたと思います。



2-17-3.GIF



画面の項目を説明したいと思います。

表示されているのは、

Lots
MovingPeriod1
MovingPeriod2

の3つです。




Lots は、ロット数。
メタトレーダーは業者によって違いますが、0.1ロットで1万通貨のところが多いので注意が必要です。

MovingPeriod1 は、移動平均線1本目
MovingPeriod2 は、移動平均線2本目

この2本が交差したときに売買を行います。




そして、値については、"Value" "スタート" "ステップ" "ストップ" があります。


これについても、1つ1つ見て行きましょう。


"Value"
Optimizationを使わないときの値になります。
画像の値でOptimizationをせずに、バックテストした場合、14日の移動平均線と、25日移動平均線を使うことになります。


"スタート"
Optimization機能を使った時に、始める値になります。
今回で言えば、"1" を指定しているため 1日移動平均線からのスタートになります。


"ステップ"
始める値に、この"ステップ" の値を足していきます。
今回は、"スタート" が "1" 、"ステップ" が "1" なので、次の値は "2" となり、
1日移動平均線、の次に2日移動平均線になります。


"ストップ"
この値で最適化を終了するということになります。




今回は、下記の画像のように設定しました。


2-17-4.GIF



MovingPeriod1 で、50を指定しているので、50日移動平均線
MovingPeriod2 で、100を指定しているので、100日移動平均線までバックテストを行うことになります。




つまり、MovingPeriod1の 1日移動平均線から、 50日移動平均線までの  50通り
    MovingPeriod2の 1日移動平均線から、100日移動平均線までの 100通り

を組み合わせた 5000通りのバックテストになります。



以上の設定が終わったら、 "OK"ボタンをクリックします。







3.バックテスト(最適化)の実行

通常のバックテストの時と同様にスタートをクリックして、開始します。

2-17-5.GIF



この後、通常のバックテストと違うのは、下記のような画面が現れることです。



2-17-6.GIF



画像を見て分かるとおり、Optimization機能を使った時には、何通りのバックテストを行うのか、
そして、おおよその時間の見積もりが表示されます。

今回で言えば、5000通りのテストに対して 1分50秒程度かかると表示されています。





4.Optimization Results


2-17-7.GIF


Optimization Resultsタブをまずは見てみましょう。
初期の状態では、上から利益の大きかったテスト結果から表示されています。


1つ目は、損益が5451.08ドル、2つ目は5445.30ドル、と最適化前には3千ドル程度だったものが、
5千ドルを超えるものまででてきました。



これが意味しているところは、同じEAを使っても、設定次第で結果が大きく変わってくる可能性があるということです。



ちなみに、"パラメーターの入力"をみると、どのような設定だったかがわかります。


1つ目の損益が5451.08ドル だったものを参考にすると、


MovingPeriod1=19, MovingPeriod2=60, Lots=0.1

となっており、1万通貨で、19日移動平均線と60日移動平均線が交わるときに売買を行った場合に
利益率が改善されたことになります。



ちなみに2つ目の5445.30ドルのモノを見てみると、

MovingPeriod1=16, MovingPeriod2=58, Lots=0.1

となっているため、どのような値を設定すればよいか?ある程度の目安が見えてくるかと思います。



ですが、出来れば偶然利益が出たというのよりも、堅牢なシステムを求めるのであれば、
多少、設定の値を変えても同じような結果になることが必要だと思います。



それを確認するのが、次の"Optimization Graph" になります。






5.Optimization Graph


まずは、下記の画像を見て下さい。



2-17-8.GIF





画像の緑色が濃くなって固まっている部分があるのが分かりますか?


緑色が濃い部分は、設定した値の利益率が高かった部分になります。
逆に言えば、白くなっている部分については、利益が見込めない部分になります。


つまり、緑色が濃くなって集まっている部分について言えば、多少値が変わっても利益が見込めるため、
偶然、良い結果が得られたという可能性を極力低く出来ます。


そこで、この緑色が濃くなっている部分をマウスでダブルクリックしてみて下さい。





すると、画面が切り替わって、緑色に対応した Optimization Results の設定値が表示されます。



2-17-9.GIF






さらに、ここでダブルクリックすると、この結果の設定値がバックテストのデフォルト値に反映されます。

※ここでは、17日移動平均線、60日移動平均線の組み合わせが反映されました。
 "Expert properities"から確認出来ます。



2-17-10.GIF




再度、スタートボタンを押して見ましょう。


2-17-11.GIF



すると、通常のバックテストが行われます。


テストが完了したら、結果タブを見てみて下さい。


2-17-12.GIF


利益が4千ドルぐらいになっているのが確認出来ますか?




一連の手順を踏むことで、1つのEAを最適化して、利益率の向上を図ることが出来ました。


長かったメタトレーダーの使い方も一通り見たことになります!


しかしながら、今回見てきた手順は、基本的なものであり、
実際に運用するとなると、もう少し精密なバックテストなどを行う必要があります。


以前の勉強会では、メタトレーダーの使い方から運用までを勉強しました。


その内容の中には、どのようにバックテストを行えば、より堅牢で、信頼に足りうるシステムを
見つけることが出来るか?というお話もありました。



出来れば、実運用の前にはそちらの内容を学んで、しっかりと理解した上で運用した方が、
利益を上げられる確率も高まると思います。

今回の内容をさらに深く理解し、メタトレーダーで資産運用したい人にとっては、うってつけですので。