『新メタトレ入門本』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のデバッグを行うことができます。

前へ

『新メタトレ入門本』EAのサンプルプログラム

次へ

『新メタトレ入門本』ストラテジーテスターによるEAの最適化