Metatrader4でPython実行環境を整える
Metatrader4はFXで使われているプラットフォームです。C言語に似たmqlというスクリプトで、トレード指標やシステムトレードのプログラムを自作することができます。 自作したプログラム(EAって呼ばれています)を使って、バックテストもできますし、EAパラメータの最適化機能もついていて非常に便利です。 デモ口座を作ることができるので、フォワードテストなども簡単に行うことができます。
最近ではBitcoinトレードもできるみたいで、BTC-eではトレードプラットフォームとして採用されています。 日本でもBitpointで採用される予定で非常に楽しみです。
EA上でPythonを動かせたらいいなと、色々調べてみたところGithubで発見しました。
ちょとバグがありましたが、取りあえずは動きました。
以下環境セットアップのメモです。
注意点
Pythonのバージョンは2.7.xでしか動かないです。3.xでは動かないので注意してください。また64bit版のPythonでも動作が厳しいみたいです。
Metatrader4(MT4)のインストール
先ずは、BTC-eからMT4をダウンロードしてインストールしてやります。
インストールが終わったら適当なユーザー名でデモ口座を作ってやります。
下準備
OTMql4Py本体を入れる前に、少々下準備が必要です。 OTMql4Pyのwikiを参考にしています。
OTMql4Libのインストール
GithubのOTMql4Libのリリースサイトにexeファイルがあるのでダウンロードしてきます。
インストール中にMT4のAppDataフォルダを聞かれるので指定してください。ここら辺にあります。C:\Users\ユーザー名\AppData\Roaming\MetaQuotes\Terminal\長い英数字
このフォルダは事前に調べておいて下さい。
環境変数追加
Pythonの環境変数PYTHONHOME=C:\Python27
を追加してやります。
Pywin32のインストール
wikiではマーク・ハモンドさんの優れたPywin32
と表記がありましたが、これはいったい何のツールなのかさっぱりわかりません。まあ気にせずインストールします。
下記リンクからexeファイルをダウンロードして実行します。特に注意点はないです。
OTMql4Pyのインストール
基本的にOTMql4Libのインストール時と一緒です。OTMql4Pyのリリースサイトからexeファイルをダウンロードしてインストールします。
インストール中にMT4のAppDataフォルダを聞かれるので指定してください。C:\Users\ユーザー名\AppData\Roaming\MetaQuotes\Terminal\長い英数字
動作テスト
動作テスト時のMT4とPythonのバージョンは以下です。
- Metatorader4: Version4.00 Built 988
- Python: 2.7.12 (32bit)
MT4を起動し、F4ボタンを押してMetaEditorを開いてやります。
左のナビゲータウィンドウより、MQL4/Experts/OTMql4/OTPyTestNullEA.mq4をダブルクリックで開いてやります。その名の通りテスト用のEAです。
実はこのままではバグがあり、コンパイルが通りません。5行目の#property strict
と48行目のiRetval = iPyEvalInt("os.getpid()");
をコメントアウトしてやるとコンパイルが通ります。
OTPyTestNullEA.mq4のコンパイル後、MT4ターミナルに戻りツールバーのツール>オプション>エキスパートアドバイザータブでDLLの使用を許可するにチェックを入れます。
BTCUSDの日足チャートを開き、コンパイルしたOTPyTestNullEAを実行してやります。
このテスト用のEAはTickをカウントするだけの単純なEAで、ターミナルのエキスパートタブメッセージに以下のようにTickがいっぱい出てくるとうまく動いています。
OTPyTestNullEA BTCUSD,Daily: iTick=5 OTPyTestNullEA BTCUSD,Daily: iTick=4 OTPyTestNullEA BTCUSD,Daily: iTick=3 OTPyTestNullEA BTCUSD,Daily: iTick=2 OTPyTestNullEA BTCUSD,Daily: iTick=1
バグについて
実行していたEAをチャートから削除後、再度同じチャート上でEAを実行する場合や、チャートでEAを実行中にそのEAのソースをMetaEditorでコンパイルするとエラーが出るみたいです。
wikiでは現在バグフィックス中?のような記述がありました。
EAを実行しなおす場合や、EA実行中にコンパイルする場合は、MT4を再起動する必要があります。