導入
メタエディタの導入については以下の記事で書いてます。

起動
前回の記事でも書きましたが、MT4に行きF4で起動できます。
プログラムを書いて動かしてみる
書いたプログラムを実際にコンパイルして実行するまでの手順は以下です。
- ファイルを新規作成
- プログラムを書く
- プログラムをコンパイル
- MT4で実行
ファイルを新規作成
新しいプログラムを新規で作成するときに使います。

ポップアップ画面が表示されて、MQL4ウィザードへようこそという画面になります。
エキスパートアドバイザ(テンプレート)にチェックが入っているのを確認して次へ。

名前のところに、作成するプログラムの名前を書きます。
「Experts\」と最初にありますが、プログラムを入れるフォルダの場所にるのでそのままで大丈夫です。
その後に、プログラム名を入力します。
とりあえずはじめは練習として、Print関数を使ったプログラムにするので、Printと入力し、次へ。

次の画面には何もチェックを入れずに次へ

こちらの画面もチェックを入れずに、完了をクリックします。

Printのプログラムファイルが作成されました。
プログラムを書く

ここで実際にPrint関数を使ってプログラムを書きたいのですが、
どこに書くのか全く分からないと思います 😅 。
とりあえずは、
void Ontick()の所に処理させたいプログラムを書く
とするといいと思います。
void OnTick()
{
この中に書きます
}
はじめてのプログラミング言語の勉強でお決まりのPrint関数を使います。
void OnTick()
{
Print(“練習”);
}

プログラムをコンパイル
プログラムを先ほどのように書いたら、
プログラムはコンパイルしないと動かないので、コンパイルします。
コンパイルはF5でできます。
修正等したら常にコンパイルが必要になります。
エラーがあれば下の方にエラーが表示されます。
また、関数は定義されている正しいものを使っていれば、以下のように紫色になります。

関数が黒色の場合は何かしら違うということなので
関数を使う時にまず紫色になっているかどうかを確認した方が良いと思います。
以下のようになればエラーはないです

エラーが出ていたら、
関数名は正しいのか、()カッコは半角か、最後に「;」セミコロンをつけるのを忘れてないか
などチェックしていきます。
割とセミコロン忘れがちです。
MT4で実行
書いたプログラムをMT4で実際に動かしてみます。
メタエディタを閉じて、MT4の画面から、ストラテジーテスターをクリックします。
Ctrl+Rでもショートカットで可能です。

画面の一番下にこんな感じのテスター画面が出ます。。

エキスパートアドバイザを選択し、先程書いた、プログラム名 Print.ex4を呼び出します。
そしてスタートをクリックすると、プログラムが実行されます。
(コンパイルしてれば自動で保存されてます。)

今回は売買などの命令文は書いておらず、
ただprint出力するというプログラムなので、操作履歴のところにババーっと表示されていくだけです。
つまり今回のプログラムは、操作履歴のところに「練習」を表示させるプログラムになります。
なぜならこのプログラムは価格が動くごとにプログラムが実行されるからです。
バックテストのやり方はこちらの記事で説明しています。

補足(VScode)
メタエディタを使ってもいいんですが、
使い慣れているVScodeを使えるようにしてみたいと思います。
VScodeのインストールはこちらの記事
VSCodeでMQLファイルをコンパイルする環境を作ってみます。
VSCodeを起動し、 Shift+Ctrl+Xで「拡張機能」を開き、
検索バーに「MQL4」を入力すると「compilemql4」という拡張機能が出てくるので
それをインストールします。
「Install」だったボタンは「Uninstall」に、
左の「compilemql4」拡張機能の部分の左下に歯車のマークが出るので、クリックし、
出てくるメニューの「拡張機能の設定を構成します」をクリックします。

使っているのはXM Tradingなので、MT4のインストールフォルダは「C:\Program Files (x86)\XMTrading MT4」で、
metaeditor.exeのフルパスは
「C:\Program Files (x86)\XMTrading MT4\metaeditor.exe」となります。
それを画面右の一番下の項目、
「Compilemql4: Metaeditor Dir」の部分にそのフルパスを入力します。
ついでにコンパイルの時に出力されるメッセージも保存したいので
その上の「Compilemql4: Log Dir」の所に、
「C:\Program Files (x86)\XMTrading MT4\compile.log」を入力しておきます。
自分の場合上記のように「Log Dir」に入力するとログの出力が行われませんでした。
なので消してみたところちゃんと出力されました。
上記のやり方でうまくいかなかった場合「Log Dir」を空欄にしてみてください。

一番上の設定項目「Compilemql4: Compile After Save」にチェックが入っていますが、
これは保存時に自動的にコンパイルするかどうかなので
基本的にはチェックは入れておけばよいでしょう。
以上で、設定は終わりです。
最後が「.mq4」であればなんでもいいでので開いてみましょう。
先ほどの print出力プログラムでいいと思います。
ファイルを開きます。
ここで、Ctrl+Sか、[ファイル]メニュー→[保存]を選んでファイルを更新してみます。
すると、画面下部に出力ウィンドウが表示され、
コンパイルが始まってそれに伴うメッセージがそこへ出力されます。
また、「MQL4 Syntax Highlight」という拡張機能を入れることをお勧めします。
MQLで記述されたファイルを読み込んだ時に、
関数や変数宣言部分などを色分け表示してくれる拡張機能で、
以下のようにカラフルな画面表示になります。
