『新メタトレ入門本』EAのデバッグ
『新MT4対応 FXメタトレーダープログラミング入門』(新メタトレ入門本)連動企画です。
今回は、本書の第4章「エキスパートアドバイザー(EA)のプログラミング」「4-5 EAのデバッグ」についてです。
【目次】
第1章 メタトレーダーの紹介
第2章 スクリプトのプログラミング
第3章 カスタム指標のプログラミング
第4章 エキスパートアドバイザー(EA)のプログラミング
4-1 新規ファイルの作成
4-2 EAの基本プログラム
4-3 ストラテジーテスターによるEAの動作確認
4-4 EAのサンプルプログラム
4-5 EAのデバッグ
4-6 ストラテジーテスターによるEAの最適化
4-7 EAの自動売買のためのプログラミング
本書アップデート情報
このセクションでは、EAのデバックの考え方について説明しています。
そのなかでComment()関数を使って指標値や変数の値をチャート画面に表示させるところがあります。(サンプルプログラムex7_ea.mq4)
Comment()関数で変数をそのまま表示させる場合、以前のビルドでは小数点以下の桁数が4桁までしか表示されなかったのですが、最新のビルドでは、さらに桁数が増えています。
したがって、表示例の図を以下に差し替えました。
ちなみにex7_ea.mq4から「#property strict」のコードを削除して旧MQL4の仕様にすると、表示桁数は前のままの4桁になるようです。
関連するMT5情報
MT5におけるEAのデバッグの考え方も、MT4と違いはありません。ただ、EA特有の不具合の現れ方が少し違うところがあります。
過去のチャートデータがない件
チャートデータの扱いは、MT4とMT5とでいくつか違うところがあります。
MT4では、バックテストの前に過去のチャートデータをダウンロードしておく必要があります。
また、チャートデータのファイルがタイムフレームごとに分かれているので、タイムフレームごとにチャートデータをダウンロードする必要があります。
その代わり、[ツール]ー[ヒストリーセンター]というメニューからデータの追加、編集ができるようになっています。
MT5では、バックテストを開始したときに、MT5上にチャートデータがなければ自動的にダウンロードしてくれます。
チャートデータのファイルもすべてのタイムフレームのデータが一つのファイルに保存されているため、タイムフレームごとにデータをダウンロードする必要はありません。
その反面、MT4のようなヒストリーセンターの機能はないので、データを追加、編集することはできません。
MT5の方がチャートデータの有無を意識しなくてもよいので、チャートデータがないことによる不具合は起きにくいでしょう。
トレード関数でエラーが出る件
MT5でもトレード関数のエラーは、ストラテジーテスターの「操作ログ」のタブ画面に表示されます。
ただ、MT4ではエラーコードしか表示されなかったのですが、MT5では、以下のような具体的なメッセージが表示されます。
failed instant buy 0.0001 USDJPY at 109.860 [Invalid volume]
failed request sell 100 USDJPY at 89.867 [No money]
failed instant buy 0.1 USDJPY at 0.000 [Invalid price]
「result.retcode」を分析しなくても、簡単なエラーならその理由がわかるようになっています。
ビジュアルモードで確認
サンプルプログラムex7_ea.mq4で追加したComment()関数の使い方は、MQL5でも同じです。指標値を求めた直後にComment()関数を挿入することで、同様の確認ができます。
なお、MT5でのビジュアルモードの設定も、ストラテジーテスターの設定画面にあります。
ビジュアルモードの「表示速度」「一時停止/再開」「スキップ」などの操作ボタンは、ビジュアルモードの画面上部に配置されています。
このように、MT5でもMT4と同じようにEAのデバッグを行うことができます。