MQL4プログラムはメモ帳などのテキストエディタでも十分作成は出来ますが、デバッグを行なっていますと、実行途中の変数の値や、処理中の状態はソースのどの部分なのか、などが分かると非常に便利で修正もしやすいと思います。複雑なロジックを調べる際は非常に重要です。

あいにくこの辺の機能が、今のメタエディタには実装されておらず、C++やjavaのような統合開発環境が整っておりません。(やり方があるかも知れませんが、私は知りません)

そこで、プログラム中で調べたい箇所に、その時点での変数や状態を表す説明文を書いておき、ログファイルとして吐き出す為の関数を紹介します。(Print関数やComment関数を使う方法もありますが・・・)

こうしておくと、このループは通ったけどこっちのループは通っていないなどの、プログラムがどのように流れていくかが把握しやすいです。

ソースの最後などに下記をコピペ↓


void Write(string str)
{
string Filename = "aaa.txt"; //ここはEA名などのお好きなファイル名(start関数の前に書くとスマートです)

  int Handle;

Handle = FileOpen(Filename, FILE_READ|FILE_WRITE|FILE_CSV, "/t");
if (Handle < 1){
Print("Error opening audit file: Code ", GetLastError());
return;
}

if (!FileSeek(Handle, 0, SEEK_END)){
Print("Error seeking end of audit file: Code ", GetLastError());
return;
}

if (FileWrite(Handle, TimeToStr(CurTime(), TIME_DATE|TIME_SECONDS) + " " + str) < 1){
Print("Error writing to audit file: Code ", GetLastError());
return;
}

FileClose(Handle);
}


プログラムの調べたい箇所に下記をコピペ↓(Comment関数のように+で変数名を繋げたり出来ます)


Write("処理1");//ログ出力(""の間の文字列は分かりやすい説明に直して下さい)


これで、テスターモードの時は、

C:\Program Files\MT4(ブローカーにより違う名前)\tester\files 以下に、

実稼動の時は

C:\Program Files\MT4(ブローカーにより違う名前)\experts\files 以下に

ログファイルが作成されるはずです。

色々いじって試してみて下さい!!