2018年6月2日土曜日

[MQL4] metaeditor.exe を使ってコマンドラインで mq4 ファイルをコンパイルする方法

コマンドラインで mql4 ファイルをコンパイルしたい場合、metaeditor.exe のオプションが使えます。

参考

コンパイル - プログラム作成 - MetaTrader 5

コンパイル方法

metaeditor.exe/compile:{path} をつけて実行します1

C:\Users\yusuke\Metatrader> .\metaeditor.exe /compile:".\MQL4\Experts\Moving Average.mq4"

ヘッダファイルの場所を指定する

依存するヘッダファイルがある場合、そのヘッダがあるディレクトリ(インクルードディレクトリ)を /include:{path} で指定します。

C:\Users\yusuke\Metatrader> .\metaeditor.exe /compile:".\MQL4\Experts\Moving Average.mq4" /include:"C:\Program Files\TradingPlatform 2\MQL5"

なお、ヘッダファイルが metaeditor.exe 直下の MQL4 ディレクトリにある場合、/include:{path} の代わりに /portable を使用することも可能です。

C:\Users\yusuke\Metatrader> .\metaeditor.exe /portable /compile:".\MQL4\Experts\Moving Average.mq4"

参考

プラットフォームの起動 - 上級ユーザーのために - MetaTrader 5

PowerShell だと動作がおかしい?

この方法、PowerShell でも動作するのですが、スペースを含むパスを指定すると動作しません。 エスケープしたりいろいろ試したのですが、どうもうまくいかず2

というわけで、PowerShell は使わない方がよいです。

  1. "" は日本語環境だと "¥" になるので注意 
  2. PowerShell の中で空白を含むパスが何かしら変換されているのだと思われますが、PowerShell の仕様はよくわからないことばかり… 
?