儲かるFX情報の宝庫 > メタトレーダーの使い方 > バックテストの方法について(3)
バックテストの方法について(3)
今回は、最適化について考えてみたいと思います。
使う機能は、メタトレーダーの "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.値の設定
次に、"Expert Properities" をクリックして下さい。

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

画面の項目を説明したいと思います。
表示されているのは、
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日移動平均線になります。
"ストップ"
この値で最適化を終了するということになります。
今回は、下記の画像のように設定しました。

MovingPeriod1 で、50を指定しているので、50日移動平均線
MovingPeriod2 で、100を指定しているので、100日移動平均線までバックテストを行うことになります。
つまり、MovingPeriod1の 1日移動平均線から、 50日移動平均線までの 50通り
MovingPeriod2の 1日移動平均線から、100日移動平均線までの 100通り
を組み合わせた 5000通りのバックテストになります。
以上の設定が終わったら、 "OK"ボタンをクリックします。
3.バックテスト(最適化)の実行
通常のバックテストの時と同様にスタートをクリックして、開始します。

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

画像を見て分かるとおり、Optimization機能を使った時には、何通りのバックテストを行うのか、
そして、おおよその時間の見積もりが表示されます。
今回で言えば、5000通りのテストに対して 1分50秒程度かかると表示されています。
4.Optimization Results

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
まずは、下記の画像を見て下さい。

画像の緑色が濃くなって固まっている部分があるのが分かりますか?
緑色が濃い部分は、設定した値の利益率が高かった部分になります。
逆に言えば、白くなっている部分については、利益が見込めない部分になります。
つまり、緑色が濃くなって集まっている部分について言えば、多少値が変わっても利益が見込めるため、
偶然、良い結果が得られたという可能性を極力低く出来ます。
そこで、この緑色が濃くなっている部分をマウスでダブルクリックしてみて下さい。
すると、画面が切り替わって、緑色に対応した Optimization Results の設定値が表示されます。

さらに、ここでダブルクリックすると、この結果の設定値がバックテストのデフォルト値に反映されます。
※ここでは、17日移動平均線、60日移動平均線の組み合わせが反映されました。
"Expert properities"から確認出来ます。

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

すると、通常のバックテストが行われます。
テストが完了したら、結果タブを見てみて下さい。

利益が4千ドルぐらいになっているのが確認出来ますか?
一連の手順を踏むことで、1つのEAを最適化して、利益率の向上を図ることが出来ました。
長かったメタトレーダーの使い方も一通り見たことになります!
しかしながら、今回見てきた手順は、基本的なものであり、
実際に運用するとなると、もう少し精密なバックテストなどを行う必要があります。
以前の勉強会では、メタトレーダーの使い方から運用までを勉強しました。
その内容の中には、どのようにバックテストを行えば、より堅牢で、信頼に足りうるシステムを
見つけることが出来るか?というお話もありました。
出来れば、実運用の前にはそちらの内容を学んで、しっかりと理解した上で運用した方が、
利益を上げられる確率も高まると思います。
今回の内容をさらに深く理解し、メタトレーダーで資産運用したい人にとっては、うってつけですので。
使う機能は、メタトレーダーの "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.値の設定
次に、"Expert Properities" をクリックして下さい。
すると、下記の画面が表示されたと思います。
画面の項目を説明したいと思います。
表示されているのは、
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日移動平均線になります。
"ストップ"
この値で最適化を終了するということになります。
今回は、下記の画像のように設定しました。
MovingPeriod1 で、50を指定しているので、50日移動平均線
MovingPeriod2 で、100を指定しているので、100日移動平均線までバックテストを行うことになります。
つまり、MovingPeriod1の 1日移動平均線から、 50日移動平均線までの 50通り
MovingPeriod2の 1日移動平均線から、100日移動平均線までの 100通り
を組み合わせた 5000通りのバックテストになります。
以上の設定が終わったら、 "OK"ボタンをクリックします。
3.バックテスト(最適化)の実行
通常のバックテストの時と同様にスタートをクリックして、開始します。
この後、通常のバックテストと違うのは、下記のような画面が現れることです。
画像を見て分かるとおり、Optimization機能を使った時には、何通りのバックテストを行うのか、
そして、おおよその時間の見積もりが表示されます。
今回で言えば、5000通りのテストに対して 1分50秒程度かかると表示されています。
4.Optimization Results
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
まずは、下記の画像を見て下さい。
画像の緑色が濃くなって固まっている部分があるのが分かりますか?
緑色が濃い部分は、設定した値の利益率が高かった部分になります。
逆に言えば、白くなっている部分については、利益が見込めない部分になります。
つまり、緑色が濃くなって集まっている部分について言えば、多少値が変わっても利益が見込めるため、
偶然、良い結果が得られたという可能性を極力低く出来ます。
そこで、この緑色が濃くなっている部分をマウスでダブルクリックしてみて下さい。
すると、画面が切り替わって、緑色に対応した Optimization Results の設定値が表示されます。
さらに、ここでダブルクリックすると、この結果の設定値がバックテストのデフォルト値に反映されます。
※ここでは、17日移動平均線、60日移動平均線の組み合わせが反映されました。
"Expert properities"から確認出来ます。
再度、スタートボタンを押して見ましょう。
すると、通常のバックテストが行われます。
テストが完了したら、結果タブを見てみて下さい。
利益が4千ドルぐらいになっているのが確認出来ますか?
一連の手順を踏むことで、1つのEAを最適化して、利益率の向上を図ることが出来ました。
長かったメタトレーダーの使い方も一通り見たことになります!
しかしながら、今回見てきた手順は、基本的なものであり、
実際に運用するとなると、もう少し精密なバックテストなどを行う必要があります。
以前の勉強会では、メタトレーダーの使い方から運用までを勉強しました。
その内容の中には、どのようにバックテストを行えば、より堅牢で、信頼に足りうるシステムを
見つけることが出来るか?というお話もありました。
出来れば、実運用の前にはそちらの内容を学んで、しっかりと理解した上で運用した方が、
利益を上げられる確率も高まると思います。
今回の内容をさらに深く理解し、メタトレーダーで資産運用したい人にとっては、うってつけですので。
- メタトレーダー対応業者
【ご注意ください】
当サイトの提供しているコンテンツの投資対象や投資手法は元本や利益を保証するものではなく、相場の変動や金利差により損失が生じる場合がございます。 投資対象や取引の仕組およびリスクについて十分ご理解の上、お客様ご自身の判断と責任においてお取引いただきますようお願い申し上げます。 信用取引、外国為替証拠金取引、株価指数先物取引、株価指数オプション取引、商品先物取引などの保証金・証拠金設定のある投資対象については、お客様がお預けになった保証金・証拠金額以上のお取引額で取引を行うため、保証金・証拠金以上の損失が出る可能性がございます。 また外国為替証拠金取引の取引レートには売値と買値に差が生じます。 (※外国為替証拠金取引の取引レートには通貨毎に売付価格と買付価格に差額(スプレッド)があります)
【免責事項】
当サイトで提供しているコンテンツは、作成時点で得られる情報を元に、細心の注意を払って作成しておりますが、その内容の正確性および安全性を保証するものではありません。 また、投資知識の学習のための参考となる情報の提供を目的としたもので、特定の銘柄や投資対象について、特定の投資行動や運用手法を推奨するものではありません。投資に関する最終決定はお客様ご自身の判断でお願いします。 なお、投資によって発生する損益は、すべて投資家の皆様へ帰属します。当該情報に基づいて被ったいかなる損害についても、情報提供者及び当社(エンジュク株式会社)は一切の責任を負うことはありませんので、ご了承下さい。 また、当コンテンツのすべての情報について当社(エンジュク株式会社)の許可なく転載・掲載することを禁じます。


