MQL4の勉強方法|EA・インジケーター開発前に知っておきたいこと
MQL4を勉強する場合、最初に確認するべきことは、EAを作りたいのか、インジケーターを作りたいのか、スクリプトや補助ツールを作りたいのかを分けることです。
MQL4は、MT4上でEA、カスタムインジケーター、スクリプト、補助ツールを作るために使われる開発言語です。ただし、EAは注文や決済を扱うため、表示だけのインジケーターよりも確認範囲が広くなります。
この記事では、MQL4を学ぶ前に確認したい、EAとインジケーターの違い、学習順、コンパイルエラー、既存コードの読み方、OrderSendなどの注文処理、ログ確認、自作と開発依頼の分岐を整理します。
なお、この記事はMQL4、MT4 EA、インジケーター、スクリプト、補助ツールの学習、導入確認、設定確認、検証、不具合切り分け、開発依頼前の整理を目的とした技術記事です。投資助言、売買指示、利益保証、勝率保証、損失回避保証、推奨ロットの提示を目的としたものではありません。
この記事で確認すること
- MQL4で作れるもの
- EAとインジケーターの違い
- MQL4を学ぶ前に決めること
- 学習順の考え方
- 初心者がつまずきやすい点
- 既存コードを読む時の注意点
- 自作と開発依頼の分岐
- 相談前に整理する情報
MQL4とは何を作るための言語か
MT4用EA
MQL4では、MT4用のEAを作成できます。
EAは、条件判定だけでなく、注文、決済、ロット、MagicNumber、ポジション管理、エラー確認、ログ出力などを扱います。チャート上に表示するだけではなく、MT4上で実際に売買処理を実行するため、確認範囲が広くなります。
EAを学ぶ場合は、いきなり複雑なロジックを作るのではなく、まずは条件判定、ログ出力、注文処理、決済処理、エラー処理を分けて理解することが重要です。
カスタムインジケーター
MQL4では、チャート上にライン、矢印、文字、サブウィンドウ表示などを出すカスタムインジケーターも作成できます。
インジケーターは、主に表示や通知を担当します。売買実行は行わず、チャート上に情報を表示したり、条件成立時にアラートを出したりする用途に向いています。
初心者がMQL4を学ぶ場合、まずは売買実行を伴わない表示系インジケーターから始めると、エラー確認やデータ取得を整理しやすくなります。
スクリプト
MQL4では、1回実行型のスクリプトも作成できます。
スクリプトは、チャートへ適用したタイミングで処理を実行する用途に使われます。たとえば、チャート情報を確認する、ログを出す、ファイルへ簡単な情報を保存するなど、学習用の小さな処理に向いています。
EAやインジケーターより処理の流れを把握しやすいため、MQL4の基本文法やログ確認の練習にも使えます。
補助ツール
MQL4では、売買ロジック以外の補助ツールも作成できます。
たとえば、ログ確認補助、チャート上の情報表示、通知補助、ファイル出力、検証結果の整理などです。これらは売買判断ではなく、MT4上の確認作業を補助する目的で使います。
| 作れるもの | 主な役割 | 学習時の確認ポイント |
|---|---|---|
| EA | 注文、決済、ポジション管理 | 注文処理、エラー処理、MagicNumber |
| インジケーター | 表示、通知、サイン表示 | バッファ、描画、リペイント |
| スクリプト | 1回実行の処理 | 基本文法、ログ出力、ファイル確認 |
| 補助ツール | 確認・記録・通知の補助 | ログ、画面表示、外部連携 |
MQL4を学ぶ前に決めること
EAを作りたいのか
まず、作りたいものがEAなのかを確認してください。
EAは、エントリー条件、決済条件、ロット、MagicNumber、最大ポジション、取引時間、通知、ログ、注文エラー処理まで扱います。学習範囲が広いため、表示系から始める場合よりも検証項目が増えます。
EAを作りたい場合は、「どの条件で注文するか」だけでなく、「注文しない条件」「注文に失敗した時のログ」「既存ポジションの扱い」まで整理してください。
インジを作りたいのか
インジケーターを作りたい場合は、表示したい内容を整理します。
ラインを出すのか、矢印を出すのか、サブウィンドウに表示するのか、アラートを出すのか、通知を送るのかによって、必要な学習内容が変わります。
インジケーターでは、バッファ、オブジェクト描画、チャート更新、リペイントの有無、確定足の扱いを確認することが重要です。
既存改修か新規作成か
MQL4を学ぶ目的が、既存EAや既存インジケーターの修正なのか、新規作成なのかも分けてください。
既存改修では、現在のコード構造、Inputs、関数、注文処理、決済処理、ログ、コメントと実装の整合を確認する必要があります。新規作成では、最初から責務を分けて設計できます。
既存コードを修正する場合は、変更前のファイルを必ず保存し、変更箇所と変更理由を記録してください。
表示だけか売買実行か
表示だけの機能と、売買実行を伴う機能は分けて考えます。
表示だけであれば、チャート描画、ラベル、矢印、アラート、ログが中心です。売買実行を伴う場合は、注文、決済、ロット、証拠金、取引時間、エラー処理、MagicNumber管理まで確認する必要があります。
| 目的 | 最初に決めること | 確認範囲 |
|---|---|---|
| EA自作 | 注文・決済を行うか | エントリー、決済、ログ、エラー処理 |
| インジ自作 | 何を表示するか | バッファ、描画、通知、リペイント |
| 既存改修 | どこを変えたいか | 既存仕様、Inputs、ログ、影響範囲 |
| 補助ツール | 何を確認・記録したいか | ログ、ファイル、画面表示、通知 |
学習順の考え方
基本文法
最初は、変数、条件分岐、関数、配列、ループ、コメント、ログ出力を確認します。
MQL4はC系の書き方に近い部分があります。まずは小さなスクリプトや表示だけの処理で、コードを書いてコンパイルし、ログに結果を出す練習をすると確認しやすくなります。
チャート情報の取得
次に、チャート情報や価格情報の取得を確認します。
現在の通貨ペア、時間足、Bid、Ask、ローソク足の始値・高値・安値・終値、インジケーター値などを取得し、ログへ出す練習をします。
ここで重要なのは、見た目のチャートと、コードが参照している値を分けて確認することです。
インジケーター作成
表示系を学ぶ場合は、カスタムインジケーターの作成に進みます。
ライン表示、矢印表示、サブウィンドウ表示、バッファ値、アラート通知などを確認します。EA化を考える場合は、インジケーターの表示がEAから参照できる値として整理されているかも確認します。
EAの注文処理
EAを作る場合は、注文処理を慎重に確認します。
OrderSend、OrderClose、OrderModifyなどの注文関連処理は、条件判定だけでなく、ロット、価格、スリッページ、SL/TP、MagicNumber、エラー処理と関係します。
最初から複雑な売買ロジックを作るのではなく、ログで条件成立を確認し、その後に注文処理を分けて確認する流れが安全です。
ログ確認
MQL4学習では、ログ確認を早い段階から習慣化してください。
Expertsログ、Journalログ、MetaEditorのコンパイル結果を見れば、コードがどこで止まっているのか、設定値が正しく読まれているのか、注文エラーが出ているのかを確認できます。
| 学習段階 | 確認する内容 | 確認方法 |
|---|---|---|
| 基本文法 | 変数、条件分岐、関数、配列 | 小さなコードとコンパイル確認 |
| チャート情報 | 価格、時間足、ローソク足 | ログ出力で値を確認 |
| 表示系 | ライン、矢印、バッファ | チャート表示とログを比較 |
| EA処理 | 注文、決済、エラー処理 | ExpertsログとJournalログを確認 |
| 検証 | バックテスト、動作確認 | 条件、set、ログを保存 |
初心者がつまずきやすい点
コンパイルエラー
MQL4学習で最初につまずきやすいのが、コンパイルエラーです。
セミコロン抜け、括弧の不足、変数名の間違い、関数名の間違い、型の不一致、ファイルの文字コード、関連ファイル不足などでエラーが出ることがあります。
エラーが出た場合は、MetaEditorのエラー一覧で、ファイル名、行番号、エラー内容を確認してください。複数エラーが出ている場合でも、最初のエラーが原因で後続エラーが連鎖していることがあります。
配列
ローソク足やインジケーター値を扱う場合、配列の向きや参照位置で混乱しやすくなります。
現在足を見ているのか、1本前の確定足を見ているのか、過去の足を見ているのかを整理してください。未確定足を使うと、値が変化する可能性があります。
時間足
MQL4では、チャート時間足と、コード内で参照する時間足を分けて確認する必要があります。
チャートに表示している時間足を使うのか、固定時間足を参照するのか、複数時間足を使うのかによって、結果が変わります。
OrderSend
OrderSendは、EAで新規注文を出す時に使われる代表的な注文処理です。
ただし、OrderSendを使えば必ず注文が通るわけではありません。ロット、価格、スプレッド、取引時間、証拠金、SL/TP距離、自動売買設定、口座状態などにより、注文エラーが出る場合があります。
MagicNumber
MagicNumberは、EAが自分の注文やポジションを識別するための番号です。
複数EAを同じ口座で使う場合、MagicNumberが重複していると、別EAの注文を管理対象にしてしまう場合があります。EA開発では、どの注文を管理対象にするかを明確にする必要があります。
リペイント
インジケーター開発では、リペイントの有無にも注意が必要です。
過去に出ていたサインが後から消える、移動する、色が変わるような挙動がある場合、EA化や通知化ではどのタイミングの値を使うかを慎重に決める必要があります。
既存コードを読む時の注意
関数の役割
既存コードを読む場合は、まず関数ごとの役割を確認してください。
初期化、終了処理、メイン処理、エントリー判定、決済判定、注文処理、通知処理、ログ出力、外部連携がどの関数に分かれているかを整理します。
Inputs
Inputsは、EAやインジケーターの設定項目です。
既存コードを読む場合は、Inputsの名前、初期値、単位、ON/OFF、実際に使われている場所を確認してください。Inputsに項目があっても、コード内で使われていない場合や、コメントと実装が異なる場合があります。
注文処理
EAの既存コードでは、注文処理の場所を確認します。
OrderSend、OrderClose、OrderModifyなどがどこで呼ばれているか、どの条件で実行されるか、注文エラー時にログが出るかを確認してください。
決済処理
決済処理は、EAの挙動確認で重要です。
固定TP/SL、反対サイン、トレーリング、建値移動、時間決済、損益条件、手動決済との関係を整理してください。複数の決済条件がある場合は、優先順位も確認します。
ログ
既存コードを読む時は、ログがどこで出ているかも確認します。
ログが不足していると、条件が成立していないのか、注文で失敗しているのか、外部連携で止まっているのか判断しにくくなります。改修時には、必要なログを追加するかどうかも検討します。
コメントと実装の不一致
既存コードでは、コメントと実装が一致していない場合があります。
コメントには「1回だけ通知」と書かれていても、実装ではティックごとに通知している場合があります。コメントだけで判断せず、実際にどの条件で処理が動くかを確認してください。
| 読む場所 | 確認すること | 注意点 |
|---|---|---|
| Inputs | 設定名、初期値、使用箇所 | 表示だけで使われていない項目に注意 |
| 判定関数 | エントリー・決済条件 | コメントと実装の差を確認 |
| 注文処理 | OrderSend、OrderClose、OrderModify | エラー時ログの有無を確認 |
| ログ出力 | 初期化、判定、注文、決済 | 原因追跡に足りるか確認 |
| 外部連携 | WebRequest、通知、ファイル出力 | URLや認証情報の扱いに注意 |
自作と開発依頼の分岐
学習目的なら自作
MQL4を理解したい、コードの仕組みを学びたい、小さな表示やログ確認を試したい場合は、自作で進めると学習しやすくなります。
最初は、売買実行を伴わないスクリプトやインジケーターで、ログ出力、チャート情報取得、簡単な表示を確認すると、失敗しても影響範囲を限定しやすくなります。
運用補助に使うなら検証重視
実際の運用補助に使うツールを作る場合は、動くことだけでなく、検証しやすいことが重要です。
ログ、設定、setファイル、通知、エラー時の挙動、再起動後の状態、VPS上での動作確認まで含めて整理してください。
複雑なEAは仕様化して依頼
複雑なEA、複数ロジック、ナンピン、トレーリング、外部連携、認証、通知、パネル表示、コピーEA連携などを含む場合は、仕様化して依頼する方が確認しやすい場合があります。
依頼する場合でも、「どの条件で何をしたいか」「どのログで何を確認したいか」「既存ファイルがあるか」を整理しておくと、開発範囲と確認範囲が明確になります。
相談前に整理すること
作りたいもの
相談前には、作りたいものがEA、インジケーター、スクリプト、補助ツールのどれかを整理してください。
表示だけなのか、通知が必要なのか、注文や決済まで行うのかを分けると、必要な開発範囲を確認しやすくなります。
現状の理解度
現在どこまで理解しているかも整理してください。
コードは読めるが修正が不安、コンパイルエラーで止まっている、注文処理だけ分からない、既存EAの改修範囲を確認したい、などの状態を伝えると、確認順を決めやすくなります。
参考インジやEA
参考にしたいインジケーターやEAがある場合は、ファイル名、スクリーンショット、setファイル、ログ、希望する機能を整理してください。
ただし、ex4だけの場合は内部仕様を直接確認できない場合があります。mq4ソースの有無も確認してください。
希望する機能
希望する機能は、できるだけ具体的に整理してください。
「矢印を出したい」「通知したい」「指定条件で注文したい」「決済条件を追加したい」「ログを分かりやすくしたい」など、機能単位で分けると確認しやすくなります。
ログ
相談時には、Expertsログ、Journalログ、MetaEditorのコンパイル結果を整理してください。
エラーが出ている場合は、ファイル名、行番号、エラー内容、発生時刻、変更した箇所を記録します。スクリーンショットに口座番号や認証情報が映り込まないよう注意してください。
送らない方がよい情報
MQL4学習や開発相談では、setファイル、ログ、スクリーンショットに重要情報が含まれる場合があります。
| そのまま送らない方がよい情報 | 注意点 |
|---|---|
| 口座番号 | スクリーンショットやログへの映り込みに注意 |
| ログインパスワード | 確認に不要なため送らない |
| Webhook URL | 通知先へ接続できる情報のため注意 |
| GAS URL | 外部シート連携先に関係するため注意 |
| APIキー | 外部サービス認証に関係するため注意 |
| 認証トークン | 利用権限に関係するためマスクする |
| VPSログイン情報 | サーバー操作権限に関係するため送らない |
よくあるトラブルと確認順
MQL4学習では、コードそのものだけでなく、ファイル配置、コンパイル、ログ、MT4側設定、チャート適用状態を順番に確認することが重要です。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| コンパイルできない | 文法エラー、括弧不足、型不一致、関連ファイル不足 | MetaEditorのエラー行と最初のエラーを確認 |
| チャートに表示されない | フォルダ違い、拡張子違い、未更新 | MQL4 / ExpertsまたはIndicators、再起動を確認 |
| サインが想定と違う | 参照足、配列、リペイント、条件式の違い | ログで値と足番号を確認 |
| 注文が通らない | ロット、証拠金、取引時間、自動売買OFF、エラー処理不足 | ExpertsログとJournalログを確認 |
| どこを直せばよいか分からない | 関数分離不足、ログ不足、仕様未整理 | 目的、Inputs、処理順、ログを整理 |
よくある質問
MQL4は初心者でも学べますか?
学習は可能です。ただし、EAでは注文、決済、エラー処理、ログ確認まで扱うため、まずは小さな表示系やログ確認から始めると整理しやすくなります。
EAとインジケーターのどちらから学ぶべきですか?
売買実行を伴わないインジケーターやスクリプトから始める方が、確認範囲を分けやすいです。EAは注文処理やポジション管理が加わるため、後から段階的に学ぶと整理しやすくなります。
MQL4で作ったものはMT5でも使えますか?
基本的にはそのまま使えません。MT5ではMQL5向けに作り直しや移行対応が必要です。ファイル形式や注文管理の構造も異なります。
自作と開発依頼はどう分ければよいですか?
学習目的なら自作、実運用補助や複雑な管理機能が必要な場合は仕様を整理して依頼する方が確認しやすい場合があります。
MQL4を学べば良いEAを作れますか?
MQL4は開発言語であり、利益、勝率、損失回避、運用結果を保証するものではありません。この記事では、開発・確認・検証のための技術整理を扱います。
既存EAを少しだけ直す場合もMQL4の知識は必要ですか?
はい。小さな修正でも、Inputs、注文処理、決済処理、MagicNumber、ログ、外部連携に影響する場合があります。変更前のファイルを保存し、影響範囲を確認してください。
コンパイルエラーが出た場合は何を送ればよいですか?
エラーが出たファイル名、行番号、エラー文、変更した箇所、関連ファイル、MetaEditorのスクリーンショットを整理してください。
まとめ
MQL4学習は小さい表示系から始めると整理しやすい
MQL4を学ぶ場合は、いきなり複雑なEAを作るのではなく、まずはスクリプト、ログ出力、チャート情報取得、表示系インジケーターから確認すると整理しやすくなります。
売買実行を伴わない処理で、コンパイル、ログ、チャート表示、配列、時間足の扱いを確認してから、EAの注文処理へ進むと、原因切り分けがしやすくなります。
EA開発は注文・決済・ログまで含めて考える
EA開発では、エントリー条件だけでなく、注文、決済、ロット、MagicNumber、エラー処理、ログ、setファイル、バックテスト、VPS環境まで含めて考える必要があります。
自作する場合も、開発依頼する場合も、作りたいもの、現在の理解度、参考ファイル、希望する機能、ログ、スクリーンショットを整理しておくと、確認が進めやすくなります。
相談前に整理しておきたい情報
- 作りたいものがEA、インジケーター、スクリプト、補助ツールのどれか
- 売買実行が必要か、表示・通知だけか
- 対象ファイル名、EA名またはインジケーター名
- mq4 / ex4の有無
- MT4のバージョン、口座種別、通貨ペア、時間足
- setファイル、Inputs設定、スクリーンショット
- MetaEditorのコンパイル結果
- Expertsログ、Journalログ、発生時刻
- 変更前後の状態が分かるメモ
- 自作で進めたい範囲と依頼したい範囲
関連ページ
- MQL4とは?MT4のEA・インジケーター開発でできること
- MQL4とMQL5の違い|MT4/MT5開発依頼前に確認すること
- MT4 EAをMT5へ移行・作り直す前に確認すること
- MT4インジケーターをEA化する前に整理すること
- EA作成・改修相談
- インジケーター作成・改修相談
- 既存EA・インジケーター改修相談
- 不具合報告・調査依頼について
- 免責事項
MQL4でEAやインジケーターを自作したい、既存コードの読み方を確認したい、コンパイルエラーやログ確認で困っている場合は、対象ファイル、mq4/ex4の有無、エラー内容、Expertsログ、Journalログ、希望する機能を整理したうえでご相談ください。

