お役立ち記事

MT4でEAの最適化のやり方

EAの最適化
家の助
家の助
EAの最適化とは、パラメータの値を総当りで計算し、優れたパフォーマンスを探し出す作業です
ねね
ねね
MT4・MT5には標準で搭載されている機能ですが、上級者向けの内容ですのでこの記事で解説していきます

最適化の準備

家の助
家の助
最適化を行うには、まずバックテストができる環境を整える必要がありますので順番に見ていきましょう

最適化の準備① EAの設置

ねね
ねね
EAの設定については、最適化を試すレベルの方でしたらご存知かと思うので割愛させていただきますが、下記の記事で詳しく解説しています
EAの設定
EAをMT4で動かす手順 EAをMT4に適用する手順 EAファイルの準備 こちらはダウンロードしたEAです。zipファイルで圧縮されているので展開して...

 

最適化の準備② ヒストリカルデータのダウンロード

家の助
家の助
最適化を行う時にはMT4標準のヒストリカルデータ(価格データ)を使っても良いですが、できればより精度の高いヒストリカルデータを使うことをおすすめします
ねね
ねね
下記の記事ではより精度が高い、海外業者のAXIORYのヒストリカルデータを使う方法を解説しています
ヒストリカルデータ
Axioryのヒストリカルデータを使ってバックテストの精度を上げる MT4標準のヒストリカルデータは精度が低い MT4に同梱されているヒストリカルデータには過去の高値・安値・始値・終...

 

最適化の準備③ 最大バー数の設定

ヒストリー内の最大バー

 

最適化を行う過程で、MT4(MT5)は多くのヒストリカルデータを使用しますが、MT4(MT5)では計算速度を早くするため、ヒストリカルデータの仕様本数の制限をかけています。

そこで最適化の前に、使用本数制限の開放をしていきます。

まずMT4メニューの【ツール】→【オプション】→【チャート】タブを開きます。

そこにヒストリー内の最大バー数と、チャートの最大バー数の項目がありますので、9999999999などの大きな数字をいれて、ローソク足データをすべて開放すれば設定は完了です。(最大値は2147483647)

 

ストラテジーテスターの設定

家の助
家の助
ストラテジーテスターはバックテストや最適化をおこなう機能のことです。ここではMT4のメニューからストラテジーテスターを立ち上げて設定方法を解説していきます

ストラテジーテスターを開く

ストラテジーテスター

上部メニューの【表示】→【ストラテジーテスター】を選択します

 

セッティング

MT4の下部にテスターの【セッティング】タブが開きました

 

EAを選択していきます

エキスパートタブ

この赤枠ではEA(エキスパートアドバイザー)を選択します

 

エキスパート

続いて、バックテストをおこなうEAを選択しておきます。ここではボリンジャーバンドのテスト用EAである「bollinger_sample.ex4」を選択しておきます。

 

通貨ペア&モデルの選択

最適化

 

通貨ペア・・最適化をおこなう通貨を選択します。

モデル・・最適化の精度を下記の3つから選択できます。

・全ティック 一番精度が高いテストができますが、計算に時間がかかります。

・コントロールポイント 疑似ティックを使ってテストを行いますが、精度は落ちます。

・始値のみ 実際につけた始値、高値、安値、終値でテストを行います。ローソク足内の動きは計測しませんが高速でテストが可能です。確定足のEAを使う場合に便利です。

家の助
家の助
モデルについては通常、「全ティック」をおすすめしますが、最適化では非常に時間がかかるので、数をこなすのであれば【始値のみ】を使用するのも一つの方法です

 

期間を指定・ビジュアルモード

最適化

 

期間を指定・・ここにチェックすると右側の開始日と終了日がアクティブになるので、最適化を行う期間を入力してください。ただし最適化はバックテストと異なり膨大な時間がかかるので、まずは半年期間くらいまでがおすすめです。

ビジュアルモード・・最適化の際はここはオフにします。

スキップ・・このボタンをビジュアルモードでのバックテスト中に押すと、その右側で設定した日時に移動しますが今回は使いません。

 

期間 スプレッド 最適化

エキスパート設定

期間・・テストを行う時間足が1分足から日足までで選択できます。

スプレッド・・スプレッドの設定ができます。数値は0.1pips単位ですので、例えば3と入れると0.3pipsとなります。通常は『現在値』で大丈夫です。

最適化・・このチェックを入れると最適化モード、入れないとバックテストモードになります。最適化の際は必ずチェックを入れます。

ねね
ねね
ここまでが基本設定で、次から最適化の肝であるエキスパート設定にはいっていきます

 

最適化の設定(エキスパート設定)

エキスパート設定

【エキスパート設定】をクリックして最適化の値を入力していきます

 

テスト設定タブ

最適化

初期証拠金額:お好きな初期証拠金額と通貨を入力してください。通貨は円が選択できないのでJPYと手入力します。

ポジション:買い(Long)、売り(short)、両方の中からエントリー方向を決めます。

最適化パラメータ:EAを評価する基準を下記の6つから設定します。

①blance・・・資産残高(利益重視) ←通常はこちら

②Profit Factor・・・純利益 ÷ 総損失(利益率を重視)

③Expected payoff・・・総損益額 ÷ 総トレード数(平均損益重視)

③Maximal Drawdown:最大ドローダウン(最大ドローダウンを低くする)

④Drawdown Percent:ドローダウン率(最大ドローダウン率を低くする)

⑤Custom:オリジナルの基準(開発者向け、OnTester関数で調整)

遺伝的アルゴリズム:最適化中に明らかに悪い結果があった場合は省いて計算するようになります。処理が早くなるのでチェックを入れておきます。

 

パラメータ入力タブ

パラメータの入力

ここにはセッティングで選択したEAのパラメータが表示されます。

今回はボリンジャーバンドのテスト用EAである「bollinger_sample.ex4」を表示しています。

 

パラメータの入力

まず赤枠ですが、ここでは最適化を行いたいパラメータにチェックを入れます。もちろんチェックを入れた数だけ計算量は多くなるので最初は1~2個で十分です。

次に、たまにある例として黄色の枠ですが、ここはEAのパラメータで「ロングのみエントリー」、「ショートのみエントリー」、「両方エントリー」を選択する部分です。

しかし最適化でこのパラメータを使う場合、「このEAがロングとショートどちらが勝てるかの最適化」というのは残念ながら通りません。数字を色々と当てはめて最適な値を見つけていくのが最適化です。

この画面にはEAのパラメータがそのまま表示されるので、このように最適化には適さない項目もそのまま表示されます。

こういった項目は各自の判断で最適化の計算では使わないようにする必要があります。

ねね
ねね
最適化に適さない項目をチェックすると正しく計算がされず、沼に入ってしまうこともあるのでここはスパッと切っていきます

 

続いては赤枠の最適化を計算する範囲です。

※【値】のパラメータはバックテストの時に使うもので、最適化では無効になります。

・スタート:パラメータのスタート値

・ステップ:スタートの値に順番に加算していく値

・ストップ:スタートの値にステップの値を順番にいれていき、このストップの数値まで最適化の計算がおこなわれます。

黄色い枠の数字を例にすると、チェックの入っている【ボリンジャーバンドの標準偏差の倍率】(←σ(シグマ)の設定ですね)は、1.0σスタートでそこへ0.1σずつ足していき、3.5σになるまで最適化の計算をおこなうということですね。

家の助
家の助
実際の計算の流れとしては、例えばテスト期間を3ヶ月に設定していた場合、0.1σ増やすごとに3ヶ月分の計算を繰り返すという総当り方式で行われていきます
ねね
ねね
そのため最適化には膨大な時間がかかりますので、ある程度のスペックがあるPCが求められます

最適化タブ

最適化タブ

最適化タブでは、チェックした制限の値を満たしたらテストを止めることができます。

最小口座残高:証拠金残高

最大利益:最大利益

最小証拠金レベル%:証拠金の最小水準%

最大ドローダウン:最大ドローダウン%

連敗:一連の取引での最大合計損失額

連敗トレード:連続で負けた取引数

連勝:一連の取引での最大合計利益額

連勝トレード:連続で勝った取引数

 

最適化のチェックを確認してスタート

最適化

エキスパート設定が終わったら、最適化にチェックがはいっていることを確認してスタートを押せば、最適化計算がスタートします。

 

最適化結果の見方

最適化

 

最適化の結果はテスターの【最適化結果】タブに表示されます。

もし初めて最適化を行う方でしたら、最適化結果タブのどこでも良いので空白上で右クリックを押して、【マイナスの結果を表示しない】のチェックを外したほうが良いでしょう。

最適化の結果が全てマイナスということもよくあるのですが、このチェックを外しておかないとその場合に何も表示されず、エラーと勘違いしてしまうからです。

 

最適化結果タブの解説

最適化結果タブ

 

下記は各項目の解説です。

※初期設定では、最適化の結果は利益の出ているものだけ表示されます。

パス:自動で付与される識別番号

損益: 同パラメーター設定(Pass)の合計損益

総取引数:取引のあった回数

プロフィットファクタ:総利益÷ 総損失

期待利益:期待損益(取引ごとの損益の平均値)

ドローダウン$:最大損失金額($)

ドローダウン%:最大損失(%)

パラメーターの入力:エキスパート設定で入力したパラメーター設定値

 

最適化レポート

出力された最適化結果の上で右クリック→【レポートの保存】を押すと・・

 

レポートHTMLでレポートが出力されます

ねね
ねね
各項目名をクリックすると並べ替え、各行をダブルクリックするとエキスパート設定にそのパラメータ内容が適用されますよ

 

最適化グラフ

最適化グラフ

利益を出したポイントほど上に表示されます。ポイントをダブルクリックでそのパラメータに飛ぶことが出来ます。

また、このグラフを表示した状態で【スペースキー】を押すと・・・

最適化グラフ

このように分布表に切り替わります。

分布表は、濃いところが資産残高の多いところ、薄いところが資産残高の少ないところなので、濃いエリアの変数が最適な組み合わせということがわかります。

 

最適化の注意点

ここでは、初心者さんがよく陥る最適化のミスや勘違いを解説していきます。

最適化とバックテストを混同しない

最適化

最適化にチェックを入れることでバックテストモードと切り替わります

 

最適化

青枠:最適化にチェックが入っていない時(バックテストモード)のみ有効。最適化時にこの数値は無視されます。

赤枠:最適化にチェックが入っている時(最適化モード)のみ有効。バックテスト時にこの値は無視されます。

エキスパート設定のパラメータの入力画面は、バックテストと最適化のステータスが区別されておらず、同じ画面内に配置されているので間違えやすいです。

ここでは、最適化のチェックがはいっているかどうかで、エキスパート設定のパラメータで有効になる数値が変わってきますので注意が必要です。

 

バックテストのグラフは騙しなので注意する

最適化にチェックを入れてテストを完了すると、成績が良かったパラメータの一覧が表示されますが、【マイナスの結果を表示しない】のチェックを外していない状態で結果が全てマイナスだった場合、グラフと、取引結果は表示されません。

ところが、最適化をする前にバックテストをして、グラフや取引履歴が表示された状態で最適化をすると、バックテストのグラフと取引履歴が残ったままの状態で、最適化の結果がタブで追加されます。

この時残ったグラフと取引履歴を最適化の結果と勘違いしてしまう方が多いので注意してください。

ねね
ねね
これはMT4の作りが悪いところですね
バックテスト
EAのバックテストのやり方 バックテストとは? MT4に標準で搭載されているバックテスト機能は、ヒストリカルデータ(過去のローソク足のデータ)を使って...