エキスパート・アドバイザーの複数値の最適化

本記事では、MetaTrader4 (MT4) にエキスパート・アドバイザーで複数値をもつパラメーターの最適化について説明します。

MT4 における最適化とは、EA のパラメーターを様々に変更して多数のバックテストを実行し、良いパフォーマンスを出すパラメーターを発見するための仕組みです。最適化は1つの値では少ない試行回数で出力できますが、複数の値となりますと多数の試行回数が必要になり非常に時間がかかります。ただ遺伝的アルゴリズムを使えば比較的容易に最適な値の組み合わせを出力することもできます。今回はその方法について解説していきます。

 

複数のパラメータを持つ EA の例として、SampleRSIEA.mq4 を用意しました。こちらを使って説明します。

 

この EA は、テクニカル・インディケータの RSI を用いて、RSI が上振れたときに売り、下振れたときに買うものとなっています。売買判断に影響するパラメーターとして RSIBars と BorderLine の2つがあります。RSIBars は、RSI を算出する際の足の本数、BorderLine は上振れ、下振れの判断を行う基準値です。
この2つのパラメーターを最適化してみましょう。

テスターの設定は、SampleEA のときと同様、USDJPY 1分足、スプレッド 5、期間は1ヶ月としてください。最適化のチェックも入れます。
エキスパート設定は、図13のように設定します。


図 13

RSIBars と BorderLine の両方にチェックを入れ、最適化対象とします。

RSIBars は、スタート 3、ステップ 2、ストップ 21 に、BorderLine は スタート 22、ステップ2、ストップ40 としてください。それぞれ10通りになりますので、総当たりで100通りになります。
設定できたら、テスターの《スタート》ボタンをクリックして最適化を実行してください。それほど時間もかからず、完了すると思います。

今回は、《最適化グラフ》タブの2Dサーフェスを見てみます。《最適化グラフ》タブ内で右クリックすると、図14のようなメニューが表示されます。この 2Dサーフェス(2) をクリックすると、表示が2Dサーフェスに切り替わります。


図 14

2D サーフェスは図15のような画面です。


図 15

 

横軸は RSIBars の値、縦軸は BorderLine の値になっており、交わる位置の枠の色の濃淡が、そのパラメーターの組み合わせにおける損益の良し悪しを示しています。濃い箇所は損益が良く、薄い箇所は損益が悪いかしょ です。図15の例では、RSIBars=3、BorderLine=40 の組み合わせが最も悪いと分かります。一番良い箇所はちょっと分かりづらいですが、RSIBars=15、BorderLine=30です。

このように、複数のパラメーターで最適化を行った場合は、2Dサーフェスでの確認が便利です。

 

遺伝的アルゴリズム

最後に、遺伝的アルゴリズムを使ってみたいと思います。

遺伝的アルゴリズムとは、パラメーターを遺伝子に見立てて、進化の過程を模倣する形で優秀な遺伝子、すなわち優秀なパラメーターを発見するという手法です。

始めに無作為にパラメーターの組み合わせ (パラメーターセット) をたくさん作成し、それらを全てバックテストして各パラメーターセットの評価を行います。次に、評価の良かったパラメーターセットをいくつか残し、悪かったものは捨てます。そして、生き残ったパラメーターセットに加えて、生き残りのパラメーターセット同士で遺伝子組替えのようなことを行って作った新しいパラメーターセットを作り、少し突然変異のようなランダムな変更も織り交ぜます。こうして作られた次世代の候補に対して、再度全てバックテストを行います。

これを何世代も繰り返すと、高い確率で最適なパラメーターセットに行き着くと言われています。 ここで重要になってくるのが、「評価」をどのように行うかです。遺伝的アルゴリズムを用いるには、パラメーターセットの良し悪しを1つの数値で評価する必要があります。MT4 の場合は評価方法を最適化パラメータ欄で指定します。選択肢は以下の通りです。

 

Balance

終了時点の残高が多い方が良い、と評価する方法です。求めている結果に直結しているので、最も無難な方法です。ただし、偶然終了間際に大勝ちしているものが上位に来てしまうことがあるので、注意が必要です。

 

Profit Factor

プロフィットファクター (総利益÷総損失×(-1)) で評価します。利益と損失のバランスを見るので、リスクを考慮に入れた評価が出来ます。一方、少ない取引回数でたまたま大勝ちしたものが上位に来る傾向があるので、パラメーターによって取引回数が極端に減少することがある EA では使用しづらくなります。

 

Expected Payoff

期待利得 (総損益÷総取引数) で評価します。取引回数が少なくても1回当たりの利益を重視したいという場合に使います。

 

Maximal Drawdown

最大ドローダウンで評価します。パラメーターを変化させたときに収益があまり変化せず、ドローダウンだけが変化するといったような場合に、なるべくドローダウンの小さいパラメーターを発見するために使います。リスク重視の評価方法です。

 

Drawdown Percent

相対ドローダウンで評価します。Maximal Drawdown 同様の特性ですが、Maximal Drawdown は固定ロット数のとき、Drawdown Percent は残高に連動するようなロット数のときに使うと良いでしょう。

 

Custom

これは特殊な評価方法で、EA に埋め込まれた評価値算出処理の出力する数値を使って評価します。上記に無いような独自の評価方法で最適化したい場合に、EA に評価値算出処理を実装してから使用します。かなり専門的な方法です。

 

パラメーター数が少なく、取り得る値の範囲も狭いときは、総当たりの方が確実ですが、パラメーター数もバリエージョンも多いときは、現実的な時間で総当たりが出来ません。そういった場合は、確率的にはなってしまいますが、遺伝的アルゴリズムを用いると短時間で最適化が行えます。

では、SampleRSIEAに対して遺伝的アルゴリズムを使った最適化を実行してみましょう。先程と同様にテスターを設定し、《エキスパート設定》ボタンをクリックして設定画面を開いてください。
《テスト中》タブは、図16のように設定します。


図 16

最適化パラメータに「Balance」を選択し、遺伝的アルゴリズムにチェックを入れます。

《パラメーターの入力》タブは、図17のように設定します。


図 17

RSIBars と BorderLine にチェックを入れ、RSIBars はスタート3、ステップ1、ストップ100に、BorderLine はスタート0、ステップ1、ストップ50にします。

設定を終えたらテスターをスタートしてください。RSIBars は98通り、BorderLine は51通りとなりますので、総当たりだと4,998通りになり、かなり時間がかかりますが、遺伝的アルゴリズムではより少ない件数の試行で処理を終えます。おそらく数十秒から数分で完了するかと思います。完了すると図18のような画面になります。


図 18

赤枠部が総当たりのときと少し違った表示になっています。この例では「1088 / 1280 (4998)」となっています。これは、1280通りのテストを行う予定だったが、1088通りで終了したことを意味しています。()内の4998は、総当たりの場合のパターン数です。

《最適化結果》タブを見ると、図19のようになっています。


図 19

当方で実行したところ、111件しか結果がありませんでした。この挙動について、MetaQuotes 社による詳しい説明は無いのですが、遺伝子組み換えによる進化が止まったため、最適なパラメーターが発見されたとみなされたためと思われます。

《最適化グラフ》タブの2Dサーフェスも見てみましょう。図20です。


図 20

このように、まばらにしかテストされていない様子が伺えます。若干左下に結果が集中しているので、進化の結果左下あたりのパラメーターが有効と判断されて、集中的にテストされたものと思われます。

遺伝的アルゴリズムを用いると、このように短時間で広範囲のパラメーターを試行して、良いパラメーターを探すことができます。ただし、確率的にしか発見できないため、本当に最適なものを直接見付け出すことはできません。遺伝的アルゴリズムは、最適なパラメーターの存在しそうな範囲を絞り込むのに用い、ある程度範囲を狭めたら、あとは総当たりで確認すると良いかと思います。

以上、EA の最適化についての説明でした。

MetaTrader4が使えるおすすめのFX会社:XM

  1. 口座開設入金なしでも3,000円
  2. 最大レバレッジ888倍!!!
  3. 約定拒否、リクオートなしの抜群の約定力
  4. 追証なし

 

おすすめの記事