MQL5開発入門|MetaEditor・EA・インジケーター・イベント関数・コンパイルエラーの基本
MQL5は、MT5上でEA、インジケーター、スクリプト、補助ツールなどを作成するために使われる開発言語です。
MQL5を学ぶ時は、最初から複雑な売買ロジックや自動売買EAを作ろうとするよりも、MetaEditor、ファイル種類、EAとインジケーターの違い、イベント関数、コンパイルエラー、ログ確認の基本を順番に整理する方が理解しやすくなります。
この記事では、MQL5を学び始める方、既存EAやインジケーターの改修を相談したい方、MetaEditorやコンパイルエラーの見方を確認したい方に向けて、MQL5開発の入口を体系的に整理します。
このページは、MT5 / MQL5の開発画面・ファイル構成・イベント関数・エラー確認を学ぶための技術学習記事です。投資判断、売買タイミング、利益保証、推奨ロット、特定ブローカーへの誘導を目的とした内容ではありません。
MQL5を学ぶ前に知っておくこと
MQL5とは
MQL5は、MT5上で動作するプログラムを作成するための言語です。EA、インジケーター、スクリプト、ライブラリ、補助ツールなど、MT5の動作を拡張するために使われます。
MQL5を使うと、チャート上の情報を取得したり、インジケーターを表示したり、条件に応じて通知したり、ファイルへ記録したり、EAとして注文処理や決済処理を扱ったりできます。
ただし、MQL5を学ぶ目的は、いきなり売買判断を作ることだけではありません。EAやインジケーターを正しく導入し、設定やログを確認し、必要な情報を整理できるようになることも重要です。
MQL5で作れる主なもの
MQL5で作れるものは、EAだけではありません。表示用のインジケーター、単発処理のスクリプト、共通部品として使うライブラリ、通知や記録を補助するツールなども作成できます。
| 種類 | 主な役割 | 初心者が見るポイント |
|---|---|---|
| EA | チャート上で継続的に動作するプログラム | 発注・決済の有無、ログ、Inputs、Magic Numberを確認する |
| カスタムインジケーター | チャート上に計算結果や表示を出すプログラム | 表示、バッファ、矢印、ライン、通知の有無を確認する |
| スクリプト | 単発処理を実行するプログラム | 常時動作ではなく、一度だけ実行する処理か確認する |
| ライブラリ | 共通処理をまとめる部品 | 単体で使うものか、他のmq5から呼び出す部品か確認する |
| includeファイル | 関数、構造体、共通定義を分割管理するファイル | mq5だけでなく関連mqhも必要か確認する |
公式リファレンスと学習記事の使い分け
MQL5を正確に学ぶには、公式リファレンスで関数名、イベント名、引数、戻り値、仕様を確認することが重要です。
一方で、公式リファレンスは仕様確認に向いていますが、初心者が最初に読むと、どこから見ればよいか分かりにくい場合があります。
そのため、最初は学習記事で全体像、MetaEditor、ファイル種類、EAとインジケーターの違い、イベント関数、エラー確認の順番を整理し、その後に必要な関数やイベントを公式リファレンスで確認する流れが現実的です。
最初から売買ロジックを作ろうとしない理由
MQL5を学び始めた段階で、いきなり複雑な売買ロジックを作ろうとすると、問題の切り分けが難しくなります。
コンパイルエラーなのか、イベント関数の使い方なのか、価格データの取得なのか、注文処理の問題なのか、表示オブジェクトの問題なのかを判断しにくくなるためです。
最初は、次の順番で確認すると整理しやすくなります。
- MetaEditorを開けるようにする
- mq5、mqh、ex5、setファイルの違いを理解する
- EA、インジケーター、スクリプトの違いを理解する
- OnInit、OnTick、OnDeinit、OnCalculateの役割を確認する
- コンパイルエラーの行番号とメッセージを確認する
- PrintログやExpertsログで状態を確認する
- 既存ソースを改修する場合は、変更前の状態を保存する
MQL5で作れるプログラムの種類
Expert Advisor
Expert Advisorは、一般的にEAと呼ばれるプログラムです。チャート上で継続的に動作し、条件判定、通知、記録、注文処理、決済処理、ポジション管理などを行うことがあります。
EAを開発・改修する場合は、単に条件判定だけを見るのではなく、signal、execution、risk、exit、notification、external controlなどの責務を分けて整理することが重要です。
発注や決済を行うEAでは、ロット、スプレッド、取引許可、Magic Number、注文エラー、決済条件、既存ポジションの扱いも確認対象になります。
カスタムインジケーター
カスタムインジケーターは、チャート上へ計算結果や表示を出すプログラムです。
ライン、矢印、ヒストグラム、サブウィンドウ、パネル、ラベル、通知などを扱う場合があります。
インジケーターは表示中心のプログラムですが、通知や集計、補助記録を行うものもあります。ただし、EAのような発注・決済処理とは責務が異なるため、表示系と売買実行系を混同しないことが重要です。
スクリプト
スクリプトは、単発の処理を実行するために使われるプログラムです。
EAのように常時チャート上で動作し続けるものではなく、ユーザーが実行したタイミングで特定の処理を行う用途に向いています。
スクリプトは便利ですが、常時監視や継続的な管理が必要な処理には向かない場合があります。作りたい機能がスクリプトでよいのか、EAとして常時動かす必要があるのかを分けて考える必要があります。
ライブラリ
ライブラリは、共通処理をまとめて再利用するための部品として使われます。
複数のEAやインジケーターで同じ処理を使う場合、ライブラリやincludeファイルへ分割することで、コードの重複を減らせます。
ただし、ライブラリやincludeを使っている場合は、mq5ファイルだけではコンパイルできないことがあります。改修や確認では、関連ファイルが揃っているかも確認してください。
includeファイル
includeファイルは、主にmqh拡張子で管理される共通部品です。
関数、構造体、列挙型、共通定義、設定ヘルパー、ログ処理、外部連携処理などを分割して管理するために使われます。
大きなEAやインジケーターでは、処理が複数のmqhへ分かれている場合があります。改修依頼では、mq5本体だけでなく、関連するmqhファイルも必要になることがあります。
MetaEditorの基本
MetaEditorとは
MetaEditorは、MQL5のソースコードを作成・編集・コンパイルするための開発画面です。
MT5本体はチャート表示やEA・インジケーターの実行に使います。一方、MetaEditorは、EAやインジケーターのソースコードを編集し、MT5で実行できる形式へ変換するために使います。
MQL5開発では、MT5本体とMetaEditorの役割を分けて理解することが大切です。
| 画面 | 主な役割 | 確認する内容 |
|---|---|---|
| MT5本体 | チャート表示、EA・インジケーター実行、ログ確認 | チャート、ナビゲーター、ツールボックス、Strategy Tester |
| MetaEditor | ソースコード編集、コンパイル、エラー確認 | mq5、mqh、エラー一覧、行番号、コンパイル結果 |
NavigatorとMetaEditorの違い
MT5のNavigatorは、導入済みのEA、インジケーター、スクリプトを確認する画面です。
MetaEditorは、それらのソースコードを編集・コンパイルする画面です。
Navigatorに表示されているEAやインジケーターを編集できるかどうかは、ソースファイルの有無に左右されます。ex5ファイルだけがある場合、MT5上で実行できても、内部のソースコードを直接編集できない場合があります。
新規ファイルを作成する前に確認すること
MQL5で新規ファイルを作成する前に、作成対象がEAなのか、インジケーターなのか、スクリプトなのかを確認します。
この分類を間違えると、必要なイベント関数、配置場所、動作方式が変わり、思ったように動作しない原因になります。
- 発注や決済を行う必要があるか
- チャートに表示するだけなのか
- 通知や記録だけを行うのか
- 常時動作する必要があるか
- 一度だけ実行する処理なのか
- Inputsで変更する項目があるか
- ログや診断表示が必要か
コンパイルの役割
コンパイルとは、MQL5のソースコードをMT5で実行できる形式へ変換する作業です。
一般的に、mq5ファイルをコンパイルすると、MT5で実行可能なex5ファイルが生成されます。
コンパイル時にエラーがある場合、ex5ファイルが正常に生成されなかったり、古いex5のまま動作しているように見えたりすることがあります。
そのため、開発や改修では「保存したか」だけでなく、「コンパイルエラーがないか」を必ず確認します。
エラー一覧の見方
MetaEditorでコンパイルを行うと、エラーや警告が一覧に表示されます。
確認する項目は、対象ファイル名、行番号、列番号、エラーメッセージです。
エラー表示行が原因箇所とは限らない点にも注意してください。括弧の閉じ忘れ、セミコロン不足、文字列の閉じ忘れなどは、実際の原因が表示行より前にあることがあります。
MQL5ファイルの種類
MQL5開発では、複数のファイル種類が登場します。特に、mq5、mqh、ex5、setファイルは混同しやすいため、役割を分けて理解しておくことが重要です。
| 拡張子 | 役割 | 開発依頼時の扱い |
|---|---|---|
| .mq5 | EA、インジケーター、スクリプトなどのソースコード | 改修・確認に必要になることが多い |
| .mqh | 共通関数や部品をまとめるincludeファイル | mq5から読み込まれている場合は一緒に必要 |
| .ex5 | コンパイル後にMT5で実行されるファイル | 実行はできるが、通常は内部改修には使えない |
| .set | Inputs設定を保存したファイル | 動作再現や検証条件確認に必要 |
mq5ファイル
mq5ファイルは、MQL5のソースコード本体です。
EA、インジケーター、スクリプトなどの処理内容が書かれており、MetaEditorで編集できます。
開発や改修を依頼する場合、mq5ファイルがあると、内部の処理、入力項目、ログ、判定条件などを確認しやすくなります。
mqhファイル
mqhファイルは、共通処理や補助関数、型定義、設定部品などをまとめるために使われるincludeファイルです。
大きなEAやインジケーターでは、すべての処理を1つのmq5ファイルに書くのではなく、複数のmqhファイルへ分割していることがあります。
その場合、mq5ファイルだけを送っても、コンパイル時に必要な部品が不足し、エラーになることがあります。
ex5ファイル
ex5ファイルは、コンパイル後にMT5で実行されるファイルです。
MT5のNavigatorに表示され、チャートへ適用できるのは主にex5ファイルです。
ただし、ex5ファイルは実行用のファイルであり、通常は内部の処理を直接編集するためのソースコードではありません。
setファイル
setファイルは、EAやインジケーターのInputs設定を保存したファイルです。
同じEAやインジケーターでも、setファイルの内容が違うと、表示や動作が変わる場合があります。
検証や不具合確認では、使用したsetファイルを保存しておくことが重要です。
ソースがある場合とない場合の違い
MQL5の改修では、ソースコードがあるかどうかが重要です。
mq5やmqhなどのソースファイルがある場合は、処理内容を確認し、必要な範囲を修正できる可能性があります。
一方、ex5ファイルだけの場合は、MT5で実行できても、内部処理を直接修正できないことがあります。その場合は、現在の動作や表示、Inputs、ログ、希望仕様を整理したうえで、作り直しを検討する流れになる場合があります。
EAの基本イベント
EAは、MT5上で継続的に動作するプログラムです。MQL5のEAでは、いくつかのイベント関数が重要になります。
| 種類 | 主なイベント | 役割 |
|---|---|---|
| EA | OnInit | 起動時の初期化、入力値確認、準備処理 |
| EA | OnTick | 価格更新時の判定、注文、決済、管理処理 |
| EA | OnDeinit | 削除時、終了時、時間足変更時などの終了処理 |
| EA | OnTimer | 一定間隔で行う確認、外部連携、軽量監視など |
| インジケーター | OnCalculate | 価格データをもとに計算し、表示値を更新する処理 |
OnInitとは
OnInitは、EAがチャートにセットされた時や初期化される時に呼び出される処理です。
OnInitでは、入力値の確認、インジケーターハンドルの作成、初期状態の設定、認証や外部連携の準備、表示オブジェクトの初期化などを行うことがあります。
EAが起動しない、初期化に失敗する、設定エラーが出る場合は、OnInit周辺の処理が関係していることがあります。
OnTickとは
OnTickは、価格更新が発生した時に呼び出される処理です。
EAでは、条件判定、ポジション確認、注文処理、決済処理、トレール処理、通知、ログ出力などがOnTick内またはOnTickから呼び出される関数で行われることがあります。
OnTickは頻繁に呼ばれるため、重い処理を無制限に入れると、MT5の動作が重くなる原因になります。
OnDeinitとは
OnDeinitは、EAがチャートから外された時、時間足変更やチャート変更などで終了処理が必要になった時に呼び出される処理です。
OnDeinitでは、タイマー停止、ハンドル解放、コメント消去、軽量な終了処理などを行うことがあります。
一方で、終了時に重いオブジェクト削除や広範囲の処理を行うと、不安定化の原因になる場合があります。終了処理では、見た目の完全な片付けよりも、異常終了しないこと、再セット時に誤動作しないことが重要です。
OnTimerとは
OnTimerは、一定間隔で処理を行うために使われるイベントです。
外部連携、状態監視、ログの抑制、定期的な表示更新など、毎tick行う必要がない処理を分離する時に使われることがあります。
OnTickにすべての処理を詰め込むと重くなりやすいため、定期処理をOnTimerへ分ける設計は、EAや補助ツールの安定性を考える上で重要です。
INIT / SELFCHECK / 終了処理の考え方
EAや補助ツールでは、起動時にINITログやSELFCHECKログを出すことがあります。
INITログは、EAが起動したことや基本設定を確認するためのログです。SELFCHECKログは、必要な設定や環境が整っているかを確認するためのログです。
これらのログがあると、問い合わせ時や検証時に、EAが正常に初期化されているかを確認しやすくなります。
インジケーターの基本イベント
OnCalculateとは
OnCalculateは、インジケーターの計算処理を行うための基本イベントです。
インジケーターでは、価格データをもとに計算し、その結果をチャート上やサブウィンドウへ表示します。
OnCalculateでは、対象バー数、価格データ、過去に計算済みの範囲などを扱うため、EAのOnTickとは考え方が異なります。
バッファと表示の関係
インジケーターでは、計算結果をバッファに格納し、その値をチャート上に表示することがあります。
ライン表示、ヒストグラム、矢印表示などでは、バッファの値と表示設定が関係します。
表示されない場合、計算自体が行われていないのか、バッファに値が入っていないのか、表示設定が違うのかを分けて確認する必要があります。
チャートオブジェクトとインジケーターバッファの違い
インジケーターの表示には、インジケーターバッファを使うものと、チャートオブジェクトを使うものがあります。
バッファは、価格データや計算結果と結びついた表示に使われます。チャートオブジェクトは、ラベル、ライン、ボタン、矩形、テキストなどを表示するために使われることがあります。
不具合確認では、バッファ値の問題なのか、オブジェクト表示の問題なのかを分けることが重要です。
表示系と判定系を混同しない
インジケーター開発では、表示系と判定系を混同しないことが重要です。
表示系は、チャート上に何を出すかを扱います。判定系は、どの条件でサインや状態を判断するかを扱います。
EA化や通知対応を行う場合は、単に矢印が表示されているかだけではなく、どの条件が成立した時にシグナルとみなすのかを整理する必要があります。
EAとインジケーターの責務の違い
MQL5開発では、EAとインジケーターの責務を分けて考えることが重要です。
| 責務 | 内容 | 混同しやすい点 |
|---|---|---|
| signal | 条件判定、サイン、状態判定 | 表示された矢印と内部判定を同一視しやすい |
| execution | 注文送信、決済送信、注文結果確認 | シグナル成立と注文成功を混同しやすい |
| risk | ロット、最大損失、同時保有、スプレッド制限など | 設定値と実行可否を混同しやすい |
| exit | 決済条件、トレール、建値移動、手仕舞い管理 | エントリー条件と決済条件を同じ基準で考えやすい |
| notification | 通知、ログ、外部送信、記録補助 | 通知成功と売買成功を混同しやすい |
signal
signalは、条件判定やサインを扱う責務です。
インジケーターでは、矢印、ライン、色変化、パネル表示などとして表れることがあります。EAでは、エントリー候補や決済候補として使われる場合があります。
ただし、signalが成立しても、必ず注文が行われるとは限りません。スプレッド、取引時間、外部停止、リスク制限、注文エラーなどによって、実行が見送られる場合があります。
execution
executionは、注文や決済の実行を扱う責務です。
EAでは、signalが成立した後に、実際に注文を送信するか、送信結果が成功したか、エラーが出たかを確認します。
開発や不具合確認では、「条件は成立したのか」と「注文は成功したのか」を分けて見る必要があります。
risk
riskは、ロット、最大損失、スプレッド、同時保有数、取引許可などを扱う責務です。
EAの中には、条件が成立していても、リスク制限により注文を見送るものがあります。
この場合、EAが動いていないのではなく、安全側の制限によって注文を行っていない可能性があります。
exit
exitは、決済やポジション管理を扱う責務です。
決済条件、トレーリング、建値移動、時間決済、シグナル決済などが含まれる場合があります。
エントリー条件と決済条件は別の考え方で設計されることが多いため、確認時には分けて整理します。
notification
notificationは、通知や記録を扱う責務です。
Discord通知、メール通知、Push通知、CSV記録、Google Sheets連携などが含まれる場合があります。
通知が届かない場合でも、EA本体の判定や注文が正常に動いている場合があります。逆に、通知が成功していても、注文が成功しているとは限りません。
EAとインジケーターを連携する時の入口
iCustomとは
iCustomは、EAなどからカスタムインジケーターを呼び出す時に使われる代表的な仕組みです。
EA側でインジケーターの値を参照したい場合、対象インジケーターを指定し、必要なパラメータやバッファを確認する必要があります。
ただし、インジケーターをEAから読む場合は、単に表示されている矢印を見るのではなく、どのバッファにどの値が入るのか、どの足を参照するのかを整理する必要があります。
CopyBufferとは
CopyBufferは、インジケーターのバッファ値を取得する時に使われる代表的な仕組みです。
EA側でインジケーターの値を使う場合、対象バッファ番号、取得する足、取得本数、値が存在しない時の扱いを確認します。
CopyBufferを使う時は、インジケーター側がどのバッファへ何を出しているかを理解しておく必要があります。
| 項目 | 役割 | 注意点 |
|---|---|---|
| iCustom | カスタムインジケーターを呼び出す入口 | インジケーター名、パラメータ、ハンドル管理を確認する |
| CopyBuffer | インジケーターバッファの値を取得する | バッファ番号、足番号、値なし状態を確認する |
| バッファ番号 | どの表示・計算値を読むかを指定する | 矢印、ライン、補助値が別バッファの場合がある |
| 確定足 | 確定済みのローソク足を参照する考え方 | 未確定足の値は変化する可能性がある |
サインインジをEA側で読む時の注意
サインインジケーターをEA側で読む場合、表示されている矢印やラベルだけを見ても、EAがどの値を取得すべきか分からない場合があります。
必要なのは、サインがどのバッファに出ているか、BUYとSELLでバッファが分かれているか、値なし状態がどのように表現されているか、確定足で読むのか未確定足で読むのかという情報です。
EA化や通知化を相談する場合は、サイン表示のスクリーンショットだけでなく、可能であればソース、仕様、バッファ情報、動作ログを整理してください。
リペイントや確定足の考え方
インジケーターの値は、未確定足では変化する場合があります。
過去に表示されたサインが後から変わる、消える、位置が変わるように見える場合は、リペイントや未確定足の扱いが関係している可能性があります。
EA化や通知化では、未確定足の変化を使うのか、確定足だけを使うのかを明確にする必要があります。
MQL5の注文・ポジション・履歴の基本
MQL5でEAを扱う場合、Order、Position、Deal、Historyの違いを理解しておくと、注文処理や履歴確認を整理しやすくなります。
| 概念 | 内容 | 開発・改修時の確認 |
|---|---|---|
| Order | 注文情報 | 注文を出したか、注文種別や状態を確認する |
| Position | 現在保有中の建玉情報 | 保有中ポジション、数量、方向、価格を確認する |
| Deal | 約定情報 | 実際に約定した結果を確認する |
| History | 過去の注文や約定の履歴 | 過去の売買、決済、エラー確認に使う |
Order
Orderは、注文に関する情報です。
EAが注文を送信したか、注文種別が何か、注文が受け付けられたかを確認する時に関係します。
注文が出ない場合は、signalが成立していないのか、注文送信前の制限で止まっているのか、注文送信後にエラーになっているのかを分けて確認します。
Position
Positionは、現在保有中の建玉情報です。
EAがポジション管理を行う場合、現在のPositionを確認して、追加注文、決済、トレール、建値移動などを判断することがあります。
同じ口座で複数EAを使う場合は、Magic Number、銘柄、方向などで対象ポジションを分けて管理することが重要です。
Deal
Dealは、実際に約定した結果に関係する情報です。
注文を出しただけではなく、実際に約定したか、どの価格で約定したか、どの数量が約定したかを確認する時に関係します。
EAの検証や不具合確認では、注文と約定を分けて見ることが重要です。
History
Historyは、過去の注文や約定を確認するための情報です。
EAが過去の決済結果や履歴をもとに処理する場合、Historyの取得範囲や対象期間が重要になります。
過去履歴が正しく取得できていないと、EAの集計、成績表示、再エントリー制御、損益判定に影響する場合があります。
MT4との違いを大まかに整理
MT4とMT5では、注文・ポジション・履歴の扱いが異なります。
MT4で作られたEAやインジケーターをMT5へ移行する場合、単純な置き換えではなく、注文処理、ポジション管理、履歴確認、イベント関数の違いを整理する必要があります。
MT4からMT5への移行では、既存ソースの有無、使用している関数、注文管理、マジックナンバー、setファイル、ログを確認してください。
コンパイルエラーの見方
MQL5開発や既存ソース改修では、コンパイルエラーの確認が重要です。
エラーが出た時に、内容を読まずに何度も修正すると、原因が分かりにくくなることがあります。まずは、対象ファイル、行番号、列番号、エラー内容を確認します。
| 項目 | 確認内容 | 備考 |
|---|---|---|
| 対象ファイル | どのmq5 / mqhでエラーが出ているか | include側のエラーも確認する |
| 行番号 | エラー表示の行と列を確認する | 原因が前の行にある場合もある |
| error | コンパイルを止める問題 | まずerrorを優先して確認する |
| warning | 注意が必要な問題 | 配布前は内容確認が必要 |
| 括弧不整合 | 波括弧、丸括弧、角括弧の対応を確認する | 大量エラーの原因になることがある |
| 未定義識別子 | 変数名、関数名、include不足を確認する | 名前変更や参照漏れで発生しやすい |
| 文字コード | 不要な不可視文字や文字化けを確認する | コピー貼り付け後は注意する |
エラー行と列
MetaEditorでコンパイルすると、エラーがある場合は、対象ファイル、行番号、列番号、内容が表示されます。
行番号は、どの付近で問題が発生しているかを確認する手がかりです。ただし、実際の原因がその行より前にある場合もあります。
エラー修正では、表示された行だけを直すのではなく、直前に変更した範囲、関数の開始・終了、括弧の対応も確認してください。
warningとerrorの違い
errorは、コンパイルが完了できない問題です。errorが残っている場合、正常なex5ファイルが生成されない可能性があります。
warningは、コンパイル自体は通る場合がありますが、型変換、未使用変数、精度低下、将来的な不具合につながる可能性を示すことがあります。
販売や配布を前提とする場合は、warningも内容を確認し、必要に応じて修正することが望ましいです。
括弧不整合
括弧不整合は、MQL5のコンパイルエラーでよくある原因のひとつです。
波括弧、丸括弧、角括弧の対応が崩れていると、エラーが大量に連鎖することがあります。
大量のエラーが一度に出た場合は、最初のエラー付近、直前に編集した関数、if文やfor文の閉じ括弧を確認してください。
未定義識別子
未定義識別子は、変数名、関数名、定数名、構造体名などが認識されていない場合に出ることがあります。
名前の打ち間違い、宣言漏れ、include不足、スコープ違い、削除済み関数の参照などが原因になる場合があります。
既存ソースの改修では、関数名を変更したのに呼び出し側を直していない、includeファイルを入れ忘れている、古い関数参照が残っているといったケースに注意してください。
文字コード・BOM・文字化け
MQL5のコンパイルエラーでは、文字化け、BOM、全角記号、余分な不可視文字などが原因になることがあります。
特に、ファイル先頭やコピー貼り付け時に不要な文字が混入すると、見た目では分かりにくいエラーになることがあります。
日本語コメントや日本語文字列を扱う場合でも、記号、引用符、不可視文字の混入には注意してください。
ログ出力とデバッグの入口
Printログ
Printログは、EAやインジケーターの状態を確認するために使われる基本的なログ出力です。
起動時の設定、判定結果、エラー理由、ファイル読み込み状態、外部連携の成否などを確認するために使われることがあります。
ログがあると、チャート上の見た目だけでは分からない内部状態を確認できます。
Expertsログ
Expertsログには、EAやインジケーターが出力するメッセージが表示されることがあります。
EAが起動したか、初期化に成功したか、設定エラーが出ているか、注文や通知を見送った理由があるかを確認する時に使います。
問い合わせ時には、対象EA名、銘柄名、時間足、発生時刻とあわせてExpertsログを整理してください。
Journalログ
Journalログには、MT5端末側の操作や状態に関する情報が表示されることがあります。
接続、ファイル操作、端末状態、注文関連の標準ログなど、EAやインジケーター以外の情報も含まれます。
EAやインジケーターの問題に見えても、MT5端末側の状態が関係している場合があるため、必要に応じてJournalログも確認します。
エラー再現に必要な情報
不具合やコンパイルエラーを確認する時は、再現に必要な情報を整理することが重要です。
- 対象ファイル名
- EA名またはインジケーター名
- 使用しているMT5環境
- 銘柄名
- 時間足
- setファイル
- 発生時刻
- Expertsログ
- Journalログ
- 直前に変更した内容
- スクリーンショット
既存EA・インジ改修前に確認すること
ソースの有無
既存EAやインジケーターを改修する場合、まず確認するのはソースコードの有無です。
mq5ファイルやmqhファイルがある場合は、処理内容を確認できる可能性があります。
ex5ファイルしかない場合は、内部の直接改修が難しい場合があり、仕様整理や作り直しの検討が必要になることがあります。
ex5しかない場合
ex5ファイルだけを持っている場合、MT5上で実行はできても、内部の処理を直接編集できないことがあります。
その場合は、現在の動作、Inputs、表示、ログ、希望する変更点を整理し、新規作成や作り直しの相談として進める流れになります。
setファイル
setファイルは、EAやインジケーターのInputs設定を保存したファイルです。
改修や不具合確認では、使用しているsetファイルがあると、設定状態を再現しやすくなります。
同じEAでも、setファイルが違うと挙動が変わる場合があるため、現在使っているsetファイルを保存しておくことが重要です。
ログ
ログは、不具合確認や改修内容の整理に役立ちます。
エラーが出ている場合は、エラー文だけでなく、発生時刻、対象チャート、直前の操作、関連するExpertsログとJournalログを整理してください。
スクリーンショット
スクリーンショットは、表示状態や設定画面を確認するために役立ちます。
チャート全体、Inputs画面、Expertsログ、Journalログ、エラー一覧などを必要に応じて保存してください。
ただし、口座番号、認証情報、Webhook URL、APIキーなどの実値が写っている場合は、共有前に伏せてください。
開発依頼前に送る情報・送らない情報
| 区分 | 送ってよい情報 | 注意点 |
|---|---|---|
| ファイル | mq5、mqh、set、必要なスクリーンショット | ex5だけの場合は改修可否が限られる場合がある |
| ログ | Expertsログ、Journalログ、コンパイルエラー内容 | 発生時刻と対象ファイル名を添える |
| 設定 | Inputs設定、使用しているsetファイル名 | 変更前後の差分が分かるようにする |
| 環境 | 銘柄名、時間足、MT5環境、動作確認条件 | 口座番号などの実値は伏せる |
| 送らない情報 | APIキー、Webhook URL、認証トークン、口座番号、パスワード | 必要な場合でも伏せ字やサンプル値に置き換える |
開発依頼前に必要な情報を整理したい場合は、MT5開発依頼前に用意する資料まとめも参考にしてください。
MQL5学習チェック表
MQL5開発を学び始める前に、次の項目を確認しておくと、学習や開発依頼を進めやすくなります。
- □ MetaEditorを開ける
- □ mq5 / mqh / ex5 / set の違いを説明できる
- □ EAとインジケーターの違いを理解した
- □ OnInit / OnTick / OnDeinitの役割を確認した
- □ OnCalculateの役割を確認した
- □ signal / execution / risk / exit / notification の責務差を確認した
- □ iCustom / CopyBuffer の入口を確認した
- □ Order / Position / Deal / History の違いを確認した
- □ コンパイルエラーの行番号と内容を確認できる
- □ warningとerrorの違いを確認した
- □ ソースがある場合とない場合の違いを整理した
- □ 改修依頼前に送る情報を整理した
- □ APIキーや口座番号などの実値を送らないよう確認した
次に読む技術講座
この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。
| No | 講座 | 確認できること |
|---|---|---|
| LEARN-001 | MT5の使い方完全ガイド | MT5側の基本操作を確認する |
| LEARN-005 | MQL5エラーコード辞典 | エラーコードとコンパイルエラーを確認する |
| LEARN-006 | MQL5関数辞書 | 主要関数の役割を確認する |
| LEARN-012 | MQL5 EA設計パターン完全ガイド | EA設計の責務分離へ進む |
| LEARN-020 | MQL5イベント処理完全ガイド | イベント処理の使い分けを確認する |
次に確認するページ
技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 開発代行ページ | EA、インジケーター、補助ツールの新規作成・改修相談を確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。 |
よくある質問
MQL5は何から学べばよいですか?
まずはMetaEditor、ファイル種類、EAとインジケーターの違い、OnInit、OnTick、OnCalculateなどの基本イベントから確認すると整理しやすくなります。
公式リファレンスだけで学べますか?
公式リファレンスは仕様確認に有効です。ただし、初心者は最初に全体像や学習順を整理してから見る方が理解しやすくなります。
ex5ファイルだけで改修できますか?
一般的に改修にはソースファイルが必要です。ex5のみの場合は、できることが限られる場合があります。
EAとインジケーターは何が違いますか?
EAは取引処理や管理処理を含められるプログラム、インジケーターは主に表示・計算・通知などを行うプログラムとして扱います。
OnTickとOnCalculateは何が違いますか?
OnTickはEAで新しいTickを受けた時の処理、OnCalculateはインジケーターの計算処理で使われるイベントです。
CopyBufferは何に使いますか?
インジケーターの値をEA側などから取得する時に使う代表的な仕組みです。使用時は対象バッファや足の確定状態を確認する必要があります。
コンパイルエラーが出たら何を確認しますか?
エラーの行番号、列番号、メッセージ、直前に変更した箇所、括弧や変数名、includeファイルの有無を確認します。
MQL5を知らなくても開発依頼できますか?
可能です。ただし、作りたい機能、対象銘柄、時間足、既存ソースの有無、setファイル、ログ、スクリーンショットを整理しておくと確認しやすくなります。
まとめ
MQL5開発を学ぶ時は、いきなり複雑なEAや売買ロジックを作るのではなく、MetaEditor、ファイル種類、EAとインジケーターの違い、基本イベント、コンパイルエラー、ログ確認を順番に整理することが重要です。
mq5、mqh、ex5、setファイルは、それぞれ役割が異なります。改修や不具合確認を行う場合は、実行用ファイルだけでなく、ソースコードや設定ファイルの有無も確認してください。
EAではOnInit、OnTick、OnDeinit、OnTimerが重要になり、インジケーターではOnCalculateやバッファ管理が重要になります。表示系、判定系、売買実行系、通知系、外部連携系を混同しないことが、開発や改修を進める上で大切です。
開発依頼や不具合相談を行う場合は、対象ファイル、setファイル、ログ、スクリーンショット、発生条件、改修したい内容を整理してください。APIキー、Webhook URL、認証トークン、口座番号などの実値は、そのまま送らないよう注意してください。

