MT4のお悩み

ex4ファイルとmq4ファイルの違い【デコンパイルは構造上できません】

ex4ファイルとmq4ファイルの違い
yuki
yuki
メタトレーダー4(MT4)には、ファイル拡張子が「.ex4」のものと「.mq4」のものが使用されます。
カオチャイ
カオチャイ
これら二つのファイルは何が違うのでしょうか?この記事ではそれらの違いと特徴について解説します。

まずはファイル拡張子を理解しよう

拡張子上記は同じ『tester』というファイルですが、拡張子が異なっています

 

ex4とmq4の解説に入る前に、まず拡張子についてお話します。

ファイル拡張子とは、ファイル名の後ろの『.』(ピリオド)以降の部分で、Windowsでファイルの種類や形式を識別、使用するソフトと紐づける目印として使用されます。

例えば画像ファイルでは「.jpg」や「.png」などの拡張子が用いられ、MT4においては、『.ex4』と『.mq4』の拡張子が使われています。

yuki
yuki
MT4を使う場合、この拡張子が表示されていないと使いにくいので、下記の手順で拡張子を表示するようにしてくださいね

 

拡張子が表示されていない時は・・

拡張子の表示

Window10以降の場合、初期設定だと拡張子が表示されていない場合があります。

その場合はエクスプローラー上部メニューの【表示】をクリックして、右側の【ファイル名拡張子】にチェックを入れれば、各ファイル名に拡張子が表示されるようになります。

 

MT4で使用される拡張子:mq4とex4の概要

それでは『.mq4』と『.ex4』という二つのファイル拡張子の特徴を解説していきます。

mq4ファイル:プログラムが書かれたオープンフォーマット

mq4ファイル拡張子mq4ファイルだとこのようにコードを見ることができます

 

mq4ファイルは、インジケーターやEAのソースコードが書かれているファイルです。

これらのファイルはテキストエディターや専用のプログラミングソフトで編集・閲覧が可能であり、開発者が自由にコードを修正したり他の開発者と共有したりできます。また、ex4ファイルへの変換も簡単に行なえます。

MT4の海外フォーラムなどを覗くと、このmq4ファイルでソースコードを公開することで、バグやロジックの修正を有志が行い、短い時間と少ないコストでコードがより良く改変されたりします。

また、インジケーター制作業者にツールの改造や修正をお願いする場合などには、このmq4ファイルが必須になります。

カオチャイ
カオチャイ
MT4上で使うにはmq4ファイルのままでは動かせませんので、コンパイルというファイル変換作業を行ってex4ファイルに変換して利用します
yuki
yuki
MT4の場合、Indicatorsフォルダにmq4ファイルをいれると自動でコンパイルしてくれるので、MT4初心者さんなんかは、実はmq4ファイルがex4ファイルに勝手に変換されて動いている事に気づいていない人もいるかと思います

 

ex4ファイル:保護されたMT4専用フォーマット

ex4ファイルMT4のチャート上で動かすことができるex4ファイル

 

ex4ファイルは、mq4ファイルがコンパイルされた後の形式で、MT4プラットフォーム専用の実行ファイルです。

コンパイルされたex4ファイルはプログラムのコードが保護されており、通常は中身を閲覧・編集することができません。

これにより開発者は自分のプログラムを他人に公開する際に、コードの不正使用やコピーや改ざんを防ぐことができます。

一般で有料配布されているサインツールの9割はこのex4ファイルです。

yuki
yuki
インジケーターのロジック=トレード手法ですから、それを公開すると真似をされて手法自体の優位性がどんどん失われていってしまうので、中身を隠すことは重要なんです
カオチャイ
カオチャイ
なお、EAとインジケーターはともにex4ファイルなのですが、使用するときにいれるフォルダは『Indicators』、『Experts』と別なので注意が必要ですね

 

コンパイルとデコンパイル

コンパイルをもう少し詳しく説明しますと、人間が読めるプログラムのソースコード(mq4ファイル)を、機械が読める実行可能な形式(ex4ファイル)に変換するプロセスのことです。

コンパイル

.mq4ファイル → .ex4ファイル へ変換

ほとんどのプログラミング言語でこのコンパイルの行為は採用されています。

MT4の場合はプラットフォームを起動する際に、自動的にmq4ファイルがコンパイルされてex4ファイルが生成され、インジケーターやEAとして動作させています。

 

次にデコンパイルですが、これはコンパイルとは逆に、機械が実行可能な形式(ex4ファイル)からソースコード(mq4ファイル)へと戻すプロセスのことを指します。

デコンパイル

.ex4ファイル → .mq4ファイル へ変換

デコンパイル自体は一般的ではなく、古いバージョン(Build 610以前)のMT4で作成されたex4ファイルはある程度デコンパイルすることができますが、現在のバージョンで完全なデコンパイルとなると難しく、一部コードが欠損した状態での再現となります。

 

デコンパイルされたソースコード
カオチャイ
カオチャイ
デコンパイルされたコードの変数は上記のように命名の意図が全くありません。そのため、デコンパイルされたものかどうかは、ある程度経験のあるプログラマさんだとすぐにわかりますね
yuki
yuki
「デコンパイル請け負います!」なんていう業者さんも存在し、それだけで客寄せにはなりますが、デコンパイルの仕組みを理解している開発者から見ると、とても痛い人認定されるので注意です

 

現在のMT4ではデコンパイルは不可能

新しいバージョン(Build 610以降)のMT4で作成されたex4ファイルにいたってはデコンパイルが困難であり、専門的な知識や技術を使っても完全には再現不可能です。

たまに個人の開発者がBuild610以降のファイルもデコンパイル可能ですと言っていますが残念ながらこれはありえない話で、技術云々の話ではなく、ex4ファイルへのコンパイル時にmq4ファイルにあった情報が一部なくなりますので、その無くなった情報はどうやっても復元ができないという構造上の問題です。

yuki
yuki
つまりデコンパイル可能と言っている開発者は、インジケーターのサインを解析して同じようにサインが出るようにしているだけの詐欺業者なので注意してください
カオチャイ
カオチャイ
その証拠に、コピートレードツールなど、外部からみて特徴のないツールのデコンパイルを依頼しても、なにかと理由をつけて「このタイプはデコンパイルできません」と100%断られます

 

なお、デコンパイルはプログラムの著作権を侵害する可能性があるため、Build610以前のプログラムであっても、正当な理由がない限り他人のex4ファイルをデコンパイルすることは避けるべきです。

yuki
yuki
ちなみに、インジケーターの制作依頼をする場合、真っ当な業者さんですとex4ファイルでの納品となります。これは、ソースコードにその業者独自のコードを使っていたりするので公開を避けたいということなんですね
カオチャイ
カオチャイ
逆に、格安制作業者さんなどですと、独自の技術を使わずによそからもらってきたテンプレートを使いまわして制作しているので、「mq4ファイル無料納品が可能」なんていうところも多いですが、それはつまり独自コードが開発できないレベルであるので、注文するのは避けたいところです

ex4ファイルとmq4ファイルの違い まとめ

yuki
yuki
以上が、MT4で使用されるex4ファイルとmq4ファイルの違いでした!
カオチャイ
カオチャイ
ある程度MT4を使っている方でしたら、mq4ファイルをMT4に入れて立ち上げますと、少し時間がかかったりする経験があるかと思うのですが、あれは内部でex4ファイルに変換作業をしていたりするんですね
yuki
yuki
トレードだけならex4ファイルでOKだけど、改造するならmq4ファイルが必要です。重要な違いなので覚えておいてくださいね!
EAにできる事できない事
【その水平線は引けません】サインツールやEAを作るときの注意 FX-EAラボがお客様のMT4オリジナルインジを開発します EAやサインツール製作には制約があります EAやサインツールは、...
MT4のEA
インジケーターとEAの違い🔰 FX-EAラボがお客様のMT4オリジナルインジを開発します EA(FX)とインジケーター(バイナリー)の違い 世界は自動化に...
ABOUT ME
YUKI
MT4をこよなく愛する開発者です。FX-EAラボの他に、サヤ取りを追求した株ラボ、MT4、MT5のツール制作に特化したシストレファクトリー、EAやインジケーターに認証やペイパル決済機能が付けられるMQLAuthシステムなどの開発にも関わっています。 YUKIプロフィール