Softgate Limited

株式会社ソフトゲート コーポレートブログ

MQL コンパイラの変遷

MQL フォーラムのスレで micclly さんが発言している MQL コンパイラの件で少し確認してみました。

まず、ビルド 610 時点でのファイルリストは

f:id:Softgate:20140312133922p:plain

このような感じで、すべてのファイルがほぼ同一のタイムスタンプになっていますが、これがビルド 613 になると

f:id:Softgate:20140312133932p:plain

となっており、mql.exemql.dll は更新されていないように見えます。

これを受けて、アンパックした MetaEditor の中身を簡単に解析してみると

  • 610 では mql.dllMqlCompilerCreate 関数を GetProcAddress している
  • 613 では MqlCompilerCreate という文字列すら存在しない

ということが分かりました。つまり、ビルド 613 以降の MetaEditor は、コンパイラ機能を内包しており、mql.dllmql.exe を必要としません。

ですので、最近のバージョン 613, 614, 616 では、mql.exe がなくなっていたりしますが、MetaEditor で編集/コンパイルしている分には問題ないというわけです。

MQL コンパイラの変遷

これまでの MQL コンパイラの実装形態の歴史を見てみると、まず 509 以前は、metalang.exe という単体 EXE がコンパイラとして機能していました。

それが、ビルド 600 になってから、コンパイラ機能は mql.dll にまとめられ、コンソールアプリ mql.exe と GUI アプリ MetaEditor は、mql.dll のフロントエンドとして働くように変化しています。

そして、直近のビルド 613+ では、MetaEditor から mql.dll への依存性が取り除かれ、MetaEditor 単体でコンパイルができるようになったと共に、mql.dllmql.exe標準添付されない方針に変更されつつあるようです。

f:id:Softgate:20140312134832p:plain

現在のところ、mql.dllmql.exe は MT4 に標準添付されないだけで、別途ダウンロードする形では提供されるようですので、何が何でも MetaEditor からコンパイルしろ、ということではないと思いますが、なにしろ相手はロシアの暴君 MetaQuotes 様なので、今後の(も?)動きから目が離せません。