Pythonと機械学習

Pythonも機械学習も初心者ですが、頑張ってこのブログで勉強してこうと思います。

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のインストール

GithubOTMql4Libのリリースサイトに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を開いてやります。

f:id:darden:20160806181547p:plain

左のナビゲータウィンドウより、MQL4/Experts/OTMql4/OTPyTestNullEA.mq4をダブルクリックで開いてやります。その名の通りテスト用のEAです。

実はこのままではバグがあり、コンパイルが通りません。5行目の#property strictと48行目のiRetval = iPyEvalInt("os.getpid()");コメントアウトしてやるとコンパイルが通ります。

OTPyTestNullEA.mq4のコンパイル後、MT4ターミナルに戻りツールバーのツール>オプション>エキスパートアドバイザータブでDLLの使用を許可するにチェックを入れます。

f:id:darden:20160806182347p:plain

BTCUSDの日足チャートを開き、コンパイルしたOTPyTestNullEAを実行してやります。

f:id:darden:20160806182920p:plain

このテスト用の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でコンパイルするとエラーが出るみたいです。

f:id:darden:20160806184220p:plain

wikiでは現在バグフィックス中?のような記述がありました。

EAを実行しなおす場合や、EA実行中にコンパイルする場合は、MT4を再起動する必要があります。