2018年6月2日土曜日

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

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

> 参考
>
> [コンパイル - プログラム作成 - MetaTrader 5](https://www.metatrader5.com/ja/metaeditor/help/development/compile)



### コンパイル方法
`metaeditor.exe` に `/compile:{path}` をつけて実行します"\" は日本語環境だと "¥" になるので注意。

```console
`gutter:false;
C:\Users\yusuke\Metatrader> .\metaeditor.exe /compile:".\MQL4\Experts\Moving Average.mq4"
```

### ヘッダファイルの場所を指定する 依存するヘッダファイルがある場合、そのヘッダがあるディレクトリ(インクルードディレクトリ)を `/include:{path}` で指定します。 ```console `gutter:false; 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` を使用することも可能です。 ```console `gutter:false; C:\Users\yusuke\Metatrader> .\metaeditor.exe /portable /compile:".\MQL4\Experts\Moving Average.mq4" ``` > 参考 > > [プラットフォームの起動 - 上級ユーザーのために - MetaTrader 5](https://www.metatrader5.com/ja/terminal/help/start_advanced/start) ### PowerShell だと動作がおかしい? この方法、PowerShell でも動作するのですが、スペースを含むパスを指定すると動作しません。 エスケープしたりいろいろ試したのですが、どうもうまくいかずPowerShell の中で空白を含むパスが何かしら変換されているのだと思われますが、PowerShell の仕様はよくわからないことばかり…。 というわけで、PowerShell は使わない方がよいです。