オプティマイゼーション機能の功罪~PART1
1.はじめに
先日、Phaiさんのブログへカキコをしたら、次のようなレスをいただきました。
早速、私なりに常日頃思うところを記事にしてみようと思いました。しかし、これこそシステムトレーダーにとっては永遠のテーマであり、しかも、記事ネタをくださったのが、この世界の第一人者であるPhaiさんということもあり、ひょいひょいと暇つぶしに書けるようなものではありません。
そこで、本日から何回かに分割して投稿し、私なりの「悩み」みたいなものでもアップできればいいかなと思っています。読者の皆様からのコメントも大いに期待しています。
2.オプティマイゼーションとは
まず、システムトレードをしない方や初心者の方のために、ここから説明したいと思います。
オプティマイゼーション(optimization)とは、「最適化」の意味です。
たとえば、二本の移動平均線のクロスシステムで、5日と25日の組み合わせで成績が悪かったら、次に、4日と26日を試したくなりますよね。それでもだめなら、7日と21日、10日と30日、…と試したくなりますよね。これをいちいち一つずつやっていたら、おじいちゃん(または、おばあちゃん)になってしまいます。さらに、適切な損切り幅や利食い幅などもすべて試そうとしたら、検証したいパラメーターの組み合わせの数は膨大なものとなり、ドラキュラ伯爵になってしまいます。
そこで、こういった膨大なパラメーターの組み合わせを、いっぺんに検証してくれる便利な機能が自動最適化(optimization)機能と呼ばれるもので、メタトレーダーのストラテジーテスター(バックテスト機能のこと)に装備されています。
以下、簡単に、その凄さを紹介します。
まず、自動最適化機能を発動する前に、EAを作成する段階で、やらなければならないことがあります。
メタエディターの、start()関数の直前あたりに、外部パラメーターを記述します。たとえば、
などと記述します。ポイントは、変数の型の前に、「extern」と記述することによって、後からプログラムをあけずに、外からこれらの数値だけを自在に変更できるようにしておくことです。
EAを書き終えて、コンパイルしたら、上のメニュー→表示→「Strategy Tester」と進むと、次のような画面が出るので、必要事項を選択記入します。
右上の「Expert properties」をクリックします。
新しいウインドウが出るので、「パラメーターの入力」タブへ入ります。すると、先ほど外部パラメーターとして設定した変数が表示されます。自動最適化したいパラメーターのチェック欄にチェックを入れます。そして、たとえば、パラメーターを、10~50まで1つおきに検証したいときは、スタートを10、ステップを2、ストップを50と設定します。
次に「OK」を押して、
「Optimization」という欄にチェックを入れて(「Visual mode」の欄のチェックは、はずしてください)、スタートボタンをクリックすると検証が開始します。
パラメーターの数と範囲が多いと、検証が終わるのに何時間もかかります。
そんなとき、強い味方になってくれるのが、遺伝的アルゴリズム=Genetic Algorithm(略してGA)という手法です。
正直なところ、私は、GAについてあまり詳しくありませんが、簡単に言うと、ランダムに選んだパラメーターの組み合わせから結果のよいものだけを選んで、それを組み合わせて値を変化させながら最適値を探す方法です。総当りで調べるよりも高速で最適値に近いパラメーターを探し出すことができます。
やり方は簡単です。
先ほどの「Expert properties」から「Testing」タブへ入り、
「Genetic algorithm」の欄にチェックを入れて、先ほどと同じ手順で検証すればよいのです。
検証中または検証終了時に、下の方にある「Optimization Results」というボタンを開くと、その期間中で黒字になったパラメーター候補だけがずらーっと並びます。
また、となりの「Optimization Graph」を開くと、パラメーター候補別に、獲得利益など成績の優劣を視覚化したグラフが出ます。
このようにして、選ばれた黒字候補の中から、とくに成績のよい組み合わせを選んで、最適パラメーターを決定します。そうすると、あっという間にすばらしい成績のEAが作れ、明るい未来が見えてきます。
たとえば、以下の画像は、メタトレーダーの最適化機能を駆使して作成したEAの成績ですが、3年ほどの検証期間で、
なんと勝率100%です。こんなのも簡単に作れちゃいます。
ところで、皆さんのパソコンへ、次のようなメールが勝手に送り付けられたりすることはありませんか?
続きは、次回のお楽しみに!
応援よろしくお願いします。
↓
にほんブログ村
先日、Phaiさんのブログへカキコをしたら、次のようなレスをいただきました。
> takechanさん
最適化については、「毒」の部分の扱いが難しいですよね。
その注意点など、takechanさんのブログで拝見できればと期待してます。
早速、私なりに常日頃思うところを記事にしてみようと思いました。しかし、これこそシステムトレーダーにとっては永遠のテーマであり、しかも、記事ネタをくださったのが、この世界の第一人者であるPhaiさんということもあり、ひょいひょいと暇つぶしに書けるようなものではありません。
そこで、本日から何回かに分割して投稿し、私なりの「悩み」みたいなものでもアップできればいいかなと思っています。読者の皆様からのコメントも大いに期待しています。
2.オプティマイゼーションとは
まず、システムトレードをしない方や初心者の方のために、ここから説明したいと思います。
オプティマイゼーション(optimization)とは、「最適化」の意味です。
たとえば、二本の移動平均線のクロスシステムで、5日と25日の組み合わせで成績が悪かったら、次に、4日と26日を試したくなりますよね。それでもだめなら、7日と21日、10日と30日、…と試したくなりますよね。これをいちいち一つずつやっていたら、おじいちゃん(または、おばあちゃん)になってしまいます。さらに、適切な損切り幅や利食い幅などもすべて試そうとしたら、検証したいパラメーターの組み合わせの数は膨大なものとなり、ドラキュラ伯爵になってしまいます。
そこで、こういった膨大なパラメーターの組み合わせを、いっぺんに検証してくれる便利な機能が自動最適化(optimization)機能と呼ばれるもので、メタトレーダーのストラテジーテスター(バックテスト機能のこと)に装備されています。
以下、簡単に、その凄さを紹介します。
まず、自動最適化機能を発動する前に、EAを作成する段階で、やらなければならないことがあります。
メタエディターの、start()関数の直前あたりに、外部パラメーターを記述します。たとえば、
などと記述します。ポイントは、変数の型の前に、「extern」と記述することによって、後からプログラムをあけずに、外からこれらの数値だけを自在に変更できるようにしておくことです。
EAを書き終えて、コンパイルしたら、上のメニュー→表示→「Strategy Tester」と進むと、次のような画面が出るので、必要事項を選択記入します。
右上の「Expert properties」をクリックします。
新しいウインドウが出るので、「パラメーターの入力」タブへ入ります。すると、先ほど外部パラメーターとして設定した変数が表示されます。自動最適化したいパラメーターのチェック欄にチェックを入れます。そして、たとえば、パラメーターを、10~50まで1つおきに検証したいときは、スタートを10、ステップを2、ストップを50と設定します。
次に「OK」を押して、
「Optimization」という欄にチェックを入れて(「Visual mode」の欄のチェックは、はずしてください)、スタートボタンをクリックすると検証が開始します。
パラメーターの数と範囲が多いと、検証が終わるのに何時間もかかります。
そんなとき、強い味方になってくれるのが、遺伝的アルゴリズム=Genetic Algorithm(略してGA)という手法です。
正直なところ、私は、GAについてあまり詳しくありませんが、簡単に言うと、ランダムに選んだパラメーターの組み合わせから結果のよいものだけを選んで、それを組み合わせて値を変化させながら最適値を探す方法です。総当りで調べるよりも高速で最適値に近いパラメーターを探し出すことができます。
やり方は簡単です。
先ほどの「Expert properties」から「Testing」タブへ入り、
「Genetic algorithm」の欄にチェックを入れて、先ほどと同じ手順で検証すればよいのです。
検証中または検証終了時に、下の方にある「Optimization Results」というボタンを開くと、その期間中で黒字になったパラメーター候補だけがずらーっと並びます。
また、となりの「Optimization Graph」を開くと、パラメーター候補別に、獲得利益など成績の優劣を視覚化したグラフが出ます。
このようにして、選ばれた黒字候補の中から、とくに成績のよい組み合わせを選んで、最適パラメーターを決定します。そうすると、あっという間にすばらしい成績のEAが作れ、明るい未来が見えてきます。
たとえば、以下の画像は、メタトレーダーの最適化機能を駆使して作成したEAの成績ですが、3年ほどの検証期間で、
なんと勝率100%です。こんなのも簡単に作れちゃいます。
ところで、皆さんのパソコンへ、次のようなメールが勝手に送り付けられたりすることはありませんか?
期間限定!先着50名様
¥98,000
¥29,800(税別)
本商材はお客様の将来の利益を保証するものではありません。投資は自己責任でお願いします。
お問い合わせ @infotakechan
続きは、次回のお楽しみに!
応援よろしくお願いします。
↓
にほんブログ村
by xchsshzo
| 2011-05-22 01:33
| 売買ロジック