MT5で最適化を自動実行する(複数通貨ペア・複数タイムフレーム対応)

2018年11月22日

最新技術

メタトレーダーでのパラメタ最適化は楽しい作業ではありますが、大変時間のかかる作業でもあります。

もしツールを1回実行するだけで自分の気になる通貨ペアとタイムフレームの最適化を自動で実行してくれたら楽ですよね。

今回はそんな夢をかなえるツールを作ってみます。

 

いずれはEAの堅牢性や最も勝率の高い通貨ペアまで自動で解析させるようにしたいですが、急にそこまでは作れないのでまずは第一歩です。

 

前提

現時点ではMT5のみの対応とします。(時間が取れればMT4も対応していこうと思います。)

 

作成するプログラムの基礎部分は、全て以下の記事を参考にしていますので、先にご確認いただければと思います。

PythonからMetaTrader5を起動してEAの最適化を行い、結果をPythonに取り込む

 

この記事からMT5をPythonから呼び出せることが分かります。(本当に貴重な情報でした。)

実行するには、MT5の実行ファイルパスと一緒に設定ファイルを渡せば良いようです。

 

自動化のための構想

やりたいのは複数の通貨ペアとタイムフレームの最適化自動化です。

通貨ペア(EURUSD,USDJPY…etc)、タイムフレーム(M5,1H,4H…etc)を入力できるようにして、その2つでループを回せばプログラムとしては実現できそうです。

 

プログラムの外枠

以下の流れとなります。

 

外部からの入力取込

作業フォルダ作成

通貨ペアでループ

タイムフレームでループ

設定ファイル作成

最適化

作業フォルダへファイル移動

結果の出力

 

枠だけの説明ですが、上記をプログラムに落とすと以下のようになりました。

 

 

外部からの入力取込 set_gui_data

必要な値を全てプログラムに取込みます。

入力データの取込みは色々なやり方があるので、何を選択しても大丈夫です。

例えば以下のようなGUIを作って入力した値をプログラムに取り込んでもいいですし、プログラムに直接書いてもいいです。

tkinterからの入力画面

 

上記はpythonのtkinterで作成したのですが、不慣れなせいでかなり時間が掛かってしまいました。

作成する際は本当に自分の得意なやり方で取り込むことをお勧めします。。。

 

 

作業フォルダ作成 check_folder

作業フォルダが存在しない場合は、フォルダを作成します。

存在する場合は何もしません。

 

設定ファイル作成 create_inifile

メタトレーダー呼び出し時に一緒に渡すファイルを作成します。

私の環境では以下のように、入力した分のファイルが作成されました。

iniファイルの作成確認

 

試しに1つ中を見てみると、問題なく作成されています。

 

最適化 call_optimizer

メタトレーダーの実行ファイルパスと、作成した設定ファイルパスを渡して最適化を実行します。

 

作業フォルダへファイルを移動 move_datafile

最適化を実行すると、Experts下に結果ファイル(XML)が何個も出力されるので、作業フォルダに移動します。

※フォワードテスト有りの場合は「xxx.foward.xml」というファイル形式で出力されるのですが、まだそちらには対応していません。

最適化結果の移動

 

 

結果の出力 import_xml_to_output

CSVかHTMLでXMLの結果を整形して出力します。

どちらの形式で出力するかは外部から選択できるようにしています。

以下はHTML形式を選択したパターンの結果です。

結果をHTMLに変換

 

試しに1つ開いてみましょう。

あまり大量に出力しても無駄なので、今回はプログラム内でProfitの上位10件のみ出力しています。

HTMLの中身確認

 

今回はほぼそのまま出力しただけですが、Pythonに一度取り込んでいるので最適化結果から様々な解析が可能です。

例えば、「プラスとマイナスの割合」、「平均値」、「トレード数XX以下は除外」などなど、何でもできます。

 

 

実行時の注意

事前準備

最適化のパラメータ設定(スタート、ステップ、ストップ)は、ツール実行前に終わらせておく必要があります。

詳しくは先ほど紹介した、以下のページをご確認ください。

PythonからMetaTrader5を起動してEAの最適化を行い、結果をPythonに取り込む

 

MT5は閉じておく

MT5を開いたままでは実行できませんので、閉じた状態で実行してください。

もしかしたらバックグラウンドで実行すれば開いたまま実行できるのかもしれませんが、やり方がまだ分かっておりません。(ご存知の方はご教示いただけると幸いです。)

 

 

このプログラムは何に使えるのか

EAがどの通貨のどのタイムフレームで機能しそうなのか分かる

例えば自作EAを作成した場合、様々な通貨ペアとタイムフレームでテストを実施します。

最初の段階では、そこまで厳密な結果を求めているわけではなく、ざっくりどの程度機能しそうかが知りたいだけなのにかなりの時間を取られてしまいます。

そこでこのプログラムを有効活用すれば、1回実行したら最初に

 

運用中EAの自動最適化

仕組みが分かったことにより、1日ごとに最適化を自動で実行して随時マーケットにパラメタを適応していくようなEAも作れます。

Pythonで最適なパラメタを算出してMT5フォルダに配置すれば、あとはMT5側で読み込んで設定できますね。

 

最適化結果の解析

大量の通貨ペア/タイムフレームの最適化結果を解析することで、様々な統計データが得られます。

 

最後に

いかがだったでしょうか。

最終形までは先が長いですが、拡張が楽しみなプログラムになったのではないかと思います。

作りこみが進んだらツール自体も無料公開しようと思いますが、プログラムがまだ汚いのとフォワードテストへの対応などでもう少し先になりそうです。

 

自動売買に興味がある方は、「メタトレーダー(MT4/MT5)で自動売買するための事前準備(第1回)」をご参照ください。

プログラムを一から勉強したい方は、「初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)」をご参照ください。