MQL5開発入門|MetaEditor・EA・インジケーター・イベント関数・コンパイルエラーの基本
MQL5開発を始める時は、いきなり複雑なEAやインジケーターを作ろうとするよりも、MT5とMetaEditorの関係、データフォルダ、MQL5フォルダ構成、ファイル種類、イベント関数、コンパイルエラー、ログ確認の流れを先に整理しておくことが重要です。
MQL5は、MT5上でEA、インジケーター、スクリプト、通知ツール、診断ツール、外部連携ツール、補助ツールなどを作るために使われる開発言語です。EAの売買ロジックだけでなく、チャート表示、アラート、CSV出力、WebRequest、Discord通知、Google Sheets連携、バックテスト補助、設定診断など、幅広い用途で使われます。
このページでは、MQL5を学び始める方、既存EAやインジケーターの改修を相談したい方、MetaEditorやコンパイルエラーの見方を確認したい方に向けて、MQL5開発の入口を体系的に整理します。既存記事の基本内容を残しつつ、開発環境、フォルダ構成、初回コンパイル、EAとインジケーターの違い、開発依頼前の整理まで含めて確認できるようにしています。
なお、この記事はMT5 / MQL5の開発画面、ファイル構成、イベント関数、エラー確認、ログ確認、開発依頼前整理を目的とした技術学習記事です。投資判断、売買タイミング、利益、勝率、損失回避、推奨ロット、特定ブローカーへの誘導を目的とした内容ではありません。
- この記事で確認すること
- MQL5を学ぶ前に知っておくこと
- MQL5開発環境を整える前に確認すること
- MQL5フォルダの基本構成
- MQL5で扱う主なファイル種類
- EA・インジケーター・スクリプトの違い
- 目的に合うMQL5ツールを選ぶ
- MQL5の主なイベント関数
- 初回コンパイルで確認すること
- MQL5開発でつまずきやすいポイント
- EA開発で分けて考える責務
- インジケーター開発で確認すること
- CopyBufferとインジケーター値の確認
- MQL5開発でログ確認を前提にする
- バックテスト前に確認すること
- MT4からMT5へ移行する時の注意点
- 開発依頼前に整理すること
- 作成・改修する機能を具体化する
- 送る情報・送らない方がよい情報
- 記事固有の実務チェック表
- 相談内容と動作確認の準備を照合する
- よくある質問
- 関連する確認ページ
- あわせて確認したいページ
- まとめ
- お問い合わせはEAFC公式LINEへ
- 利用条件・相談窓口
この記事で確認すること
- MQL5とは何か
- MT5とMetaEditorの関係
- MQL5開発環境を整える時の確認項目
- データフォルダとMQL5フォルダの違い
- Experts / Indicators / Scripts / Include / Libraries の使い分け
.mq5、.mqh、.ex5、.setの違い- EA、インジケーター、スクリプトの違い
- OnInit、OnTick、OnCalculate、OnTimerなどのイベント関数
- 初回コンパイルとコンパイルエラーの確認方法
- EA開発で分けて考える signal / filter / execution / risk / exit / notification
- インジケーター開発で確認するバッファ、表示、CopyBuffer
- 開発依頼前に整理する情報と送らない方がよい情報
MQL5を学ぶ前に知っておくこと
MQL5とは
MQL5は、MetaTrader 5上で動作するプログラムを作成するための言語です。MT5用のEA、インジケーター、スクリプト、ライブラリ、補助ツールを作る時に使われます。MT4用のMQL4とは似ている部分もありますが、注文処理、ポジション管理、イベント処理、データ取得の考え方には違いがあります。
MQL5を使うと、チャート上の情報を取得したり、インジケーターを表示したり、条件に応じて通知したり、ファイルへ記録したり、EAとして注文処理や決済処理を扱ったりできます。さらに、OnTimerによる定期処理、OnTradeTransactionによる取引イベント確認、OnChartEventによるパネル操作なども扱えます。
ただし、MQL5を学ぶ目的は、いきなり売買判断を作ることだけではありません。EAやインジケーターを正しく導入し、設定やログを確認し、エラー発生時に原因を確認、開発依頼前に必要な情報を整理できるようになることも重要です。
MQL5で作れる主なもの
MQL5で作れるものは、EAだけではありません。表示用のインジケーター、単発処理のスクリプト、共通部品として使うincludeファイル、通知や記録を補助するツール、WebRequestを使う外部連携ツールなども作成できます。
| 種類 | 主な役割 | 初心者が見るポイント |
|---|---|---|
| EA | チャート上で継続的に動作するプログラムです。自動売買、半裁量補助、通知、診断、ポジション管理などに使われます。 | 発注・決済の有無、Inputs、Magic Number、ログ、バックテスト可否を確認します。 |
| カスタムインジケーター | チャート上にライン、矢印、サブウィンドウ、計算結果などを表示するプログラムです。 | 表示、バッファ、描画、アラート、EAから値を取得できるかを確認します。 |
| スクリプト | 一度だけ実行する処理に向いています。ファイル出力、確認処理、一括操作などで使われます。 | 常時動作ではなく、一回実行で完了する処理かを確認します。 |
| ライブラリ | 共通処理をまとめる部品として使われます。 | 単体で動かすものではなく、他のファイルから呼び出す部品かを確認します。 |
| includeファイル | 関数、構造体、共通定義などを分割管理するためのファイルです。 | .mq5だけでなく、関連する.mqhも必要か確認します。 |
| 通知・診断ツール | Discord通知、CSV出力、Google Sheets連携、ログ診断などを補助します。 | 売買処理と通知処理を混同せず、送信失敗時のログを確認します。 |
公式リファレンスと学習記事の使い分け
MQL5を正確に学ぶには、公式リファレンスで関数名、イベント名、引数、戻り値、仕様を確認することが重要です。一方で、公式リファレンスだけでは、EA開発の責務分離、ログ設計、バックテスト確認、開発依頼前の整理までは分かりにくい場合があります。
そのため、公式リファレンスでは個別関数の正確な仕様を確認し、学習記事では「どの場面で使うのか」「どの順番で確認するのか」「失敗時にどこを見るのか」を整理するのがよいです。EAファンクラブでは、関数辞書、イベント処理、注文処理、ログ設計、開発依頼前資料を分けて確認できるように整理しています。
MQL5開発環境を整える前に確認すること
MQL5開発環境を整える時は、MT5本体、MetaEditor、データフォルダ、MQL5フォルダ、コンパイル結果、ログの確認場所を分けて理解する必要があります。コードの文法より先に、どこへ保存し、どこでコンパイルし、どのMT5で読み込むのかを確認してください。
複数のMT5をインストールしている場合、別のMT5のデータフォルダへファイルを保存してしまうことがあります。MetaEditorでコンパイルはできているのに、普段使っているMT5側のNavigatorに表示されない場合は、まずデータフォルダの対応関係を確認してください。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| MT5本体 | EA、インジケーター、スクリプトを実行するプラットフォームです。 | 自動売買許可、チャート、銘柄、時間足、Expertsログ、Journalログを確認します。 |
| MetaEditor | MQL5のソースコードを編集・コンパイルする開発環境です。 | 実際に使うMT5と同じデータフォルダを見ているか確認します。 |
| データフォルダ | MQL5ファイル、設定、ログ、コンパイル済みファイルが置かれる場所です。 | Windows上の見た目ではなく、MT5から開いたデータフォルダを基準にします。 |
| MQL5フォルダ | Experts、Indicators、Scripts、Include、Librariesなどを含むフォルダです。 | EAとインジケーターで配置先が違います。 |
| コンパイル結果 | .mq5などのソースをMT5で読み込める.ex5へ変換した結果です。 | エラーが残っている場合、通常は正常に実行できません。 |
| ログ | EAやインジケーターの実行結果、エラー、注文結果、通知結果を確認する場所です。 | Expertsログ、Journalログ、Testerログを分けて見ます。 |
MT5とMetaEditorの関係
MT5はEAやインジケーターを動かす側、MetaEditorはMQL5コードを作成・編集・コンパイルする側です。MT5のメニューからMetaEditorを開くと、そのMT5のデータフォルダに対応した開発環境を開けます。
複数のMT5を使っている場合、MetaEditorの起動元を間違えると、別のデータフォルダへファイルを保存してしまうことがあります。開発中は、MT5の「ファイル」からデータフォルダを開き、対象フォルダとMetaEditorの保存先が一致しているか確認してください。
特に開発依頼や検証でファイルを受け渡す時は、「どのMT5のデータフォルダに置いたか」「どのフォルダへ配置したか」「コンパイル後に.ex5が生成されたか」を記録しておくと、確認がしやすくなります。
データフォルダとMQL5フォルダの関係
MT5のMQL5関連ファイルは、通常、データフォルダ内のMQL5フォルダに整理されます。EAはExperts、インジケーターはIndicators、スクリプトはScripts、共通部品はInclude、ライブラリはLibrariesへ置くのが基本です。
ファイルを正しい場所へ置いても、コンパイルしていない場合や、MT5側でNavigatorを更新していない場合は、一覧に表示されないことがあります。ファイル配置、コンパイル、MT5側表示、ログ確認は、別々の確認項目として扱ってください。
MQL5フォルダの基本構成
MQL5開発では、ファイルの保存場所を間違えないことが重要です。EA、インジケーター、スクリプト、共通部品、ライブラリは、それぞれ役割が違います。フォルダの意味を先に理解しておくと、コンパイル後にMT5側へ表示されない問題を減らせます。
| フォルダ | 主な用途 | 確認ポイント |
|---|---|---|
MQL5/Experts | EAを配置するフォルダです。 | 自動売買EA、半裁量EA、パネルEA、通知EA、診断EAなどは通常ここに置きます。 |
MQL5/Indicators | カスタムインジケーターを配置するフォルダです。 | チャート表示、サブウィンドウ表示、アラート用インジ、EAから読み込むインジなどを置きます。 |
MQL5/Scripts | 一回実行型のスクリプトを配置するフォルダです。 | 一括処理、確認用、データ出力、補助操作などに使います。 |
MQL5/Include | 共通化した.mqhファイルを配置するフォルダです。 | EAやインジケーターから読み込む共通関数、構造体、定義、部品を置きます。 |
MQL5/Libraries | ライブラリファイルを配置するフォルダです。 | 入門段階では無理に使わず、必要な場合だけ整理します。 |
MQL5/Files | CSVやテキストなどの入出力に使われることがあるフォルダです。 | ログ、検証データ、CSV出力で使う場合は、口座情報や認証情報の混入に注意します。 |
MQL5/Logs | ログ確認に関係するフォルダです。 | MT5上のExperts / Journal表示と、実ファイルのログを混同しないようにします。 |
MQL5で扱う主なファイル種類
MQL5開発では、.mq5、.mqh、.ex5、.setなど、複数のファイルを扱います。それぞれ役割が異なるため、開発依頼や不具合確認の時も、どのファイルを送るべきかを分けて考える必要があります。
特に、.ex5しかないEAやインジケーターは、通常、ソースコードとして中身を編集することはできません。改修や原因調査を依頼する場合は、.mq5や関連する.mqhがあるかを確認してください。
| ファイル | 意味 | 確認内容 |
|---|---|---|
.mq5 | MQL5のソースコードです。 | EA、インジケーター、スクリプト本体の編集対象になります。 |
.mqh | 共通部品や関数をまとめるインクルードファイルです。 | 複数ファイルで共通利用する関数、構造体、定義が含まれる場合があります。 |
.ex5 | コンパイル後に生成される実行用ファイルです。 | MT5側で読み込まれる形式ですが、通常はソース編集には使いません。 |
.set | EAやインジケーターのinput設定を保存したファイルです。 | バックテスト条件や実行設定を再現するために重要です。 |
| Expertsログ | EAやインジケーターの実行ログです。 | 初期化、シグナル、注文、決済、通知、エラーの確認に使います。 |
| Journalログ | MT5全体の操作や環境に関係するログです。 | 接続状態、取引許可、プラットフォーム側の動作確認に使います。 |
| バックテストレポート | Strategy Testerの検証結果です。 | 結果だけでなく、銘柄、時間足、期間、スプレッド、setファイルを併せて確認します。 |
EA・インジケーター・スクリプトの違い
MQL5では、EA、インジケーター、スクリプトを作成できます。どれもMQL5で作れますが、動き方と目的が違います。開発前に、作りたいものがEAなのか、インジケーターなのか、スクリプトなのかを分けておくことが重要です。
たとえば、売買注文を出すものはEAとして扱うのが基本です。一方、チャートに値を表示したり、ラインを描画したりするものはインジケーターとして作ることが多くなります。単発の確認処理や一括出力であれば、スクリプトが向いている場合もあります。
| 種類 | 主な用途 | 中心になる処理 | 確認ポイント |
|---|---|---|---|
| EA | 自動売買、半裁量補助、ポジション管理、通知、診断など。 | OnInit、OnTick、OnTimer、OnTradeTransactionなど。 | 自動売買許可、Magic Number、発注前チェック、ログを確認します。 |
| インジケーター | チャート表示、ライン描画、サブウィンドウ表示、アラートなど。 | OnInit、OnCalculateなど。 | バッファ、表示、再計算範囲、EAから値を取る場合のCopyBufferを確認します。 |
| スクリプト | 一回だけ実行する確認処理、出力処理、補助操作など。 | OnStartなど。 | 常時動作ではなく、実行後に終了する処理か確認します。 |
| 共通部品 | EAやインジケーターから読み込む関数、構造体、共通処理。 | .mqhとして整理することがあります。 | 本体ファイルだけでなく、関連includeが必要か確認します。 |
目的に合うMQL5ツールを選ぶ
結論:目的によって作るべきツールは変わります
MQL5で作れるツールは、大きく分けると以下のようになります。
- EA:注文、決済、ポジション管理を自動または半自動で行う
- インジケータ:チャート上に情報、サイン、ライン、数値等を表示する
- 裁量補助ツール:手動取引やポジション管理を補助する
- 通知ツール:条件成立、エラー、取引状況等を通知する
- 集計ツール:損益、履歴、ロット、ポジション等を集計する
「何を自動化したいのか」「何を表示したいのか」「何を通知・記録したいのか」によって、適した開発形式が変わります。
EAとは
注文・決済・管理を行うプログラム
EAは、MT5上で注文、決済、ポジション管理などを行うプログラムです。
エントリー条件、決済条件、ロット管理、トレーリング、建値移動、ナンピン、通知などを組み合わせて作成できます。
EAでできること
- 条件に基づくエントリー
- 条件に基づく決済
- ロット計算
- TP / SL設定
- トレーリングストップ
- 建値移動
- ナンピン管理
- ポジション数制限
- Discord通知
- 外部認証
注意点
EAは注文や決済に関わるため、仕様の曖昧さがそのまま動作のズレにつながります。
利益、勝率、損失回避、将来の運用成績を保証するものではありません。利用判断、設定判断、運用判断は利用者ご自身の責任で行う必要があります。
インジケータとは
チャート上に情報を表示するツール
インジケータは、チャート上にライン、矢印、数値、パネル、アラートなどを表示するツールです。
EAと違い、原則としてインジケータ自体は注文や決済を行いません。表示、通知、確認補助を目的とすることが多いです。
インジケータでできること
- サイン表示
- 矢印表示
- 水平線、ゾーン、トレンドライン表示
- トレンド判定表示
- レンジ判定表示
- 上位足情報の表示
- アラート通知
- Discord通知
- 数値や状態のパネル表示
注意点
インジケータのサインや表示は、売買判断を保証するものではありません。
表示条件、確定足判定、リペイント有無、通知タイミングなどを事前に整理することが重要です。
裁量補助ツールとは
手動判断と操作を補助するツール
裁量補助ツールは、完全自動売買ではなく、トレーダーの手動判断や操作を補助するためのツールです。
たとえば、注文パネル、決済補助、ロット計算、ポジション管理、損益表示、リスク監視などが該当します。
裁量補助ツールでできること
- ワンクリック注文
- ロット計算補助
- TP / SL一括設定
- 一括決済
- 建値移動
- トレーリング管理
- ポジション一覧表示
- 含み損益表示
- 証拠金維持率監視
完全自動EAとの違い
完全自動EAは、条件に基づいて自動で注文や決済を行います。
裁量補助ツールは、ユーザーの判断や操作を前提に、入力・管理・確認を補助する位置づけです。
通知・集計ツールとは
記録や確認を補助するツール
通知・集計ツールは、取引状況やエラー、損益、ポジション情報などを記録・通知・集計するためのツールです。
- Discord通知
- Google Sheets記録
- CSV出力
- 日次損益集計
- Magic別集計
- 銘柄別集計
- エラー通知
- 証拠金維持率アラート
通知・集計ツールは、売買判断ではなく、確認作業や記録作業の補助を目的とします。
どのツールを依頼すべきか
注文や決済を自動化したい場合
注文、決済、ポジション管理を自動化したい場合は、EAとして開発するのが基本です。
チャート上に情報を表示したい場合
矢印、ライン、ゾーン、判定結果、数値、パネルなどを表示したい場合は、インジケータが適しています。
手動取引を補助したい場合
注文パネル、一括決済、ロット計算、ポジション管理などを作りたい場合は、裁量補助EAや注文管理ツールが適しています。
通知や記録をしたい場合
Discord通知、Google Sheets連携、CSV出力、損益集計などを行いたい場合は、通知・集計ツールとして設計します。
MQL5で作れる主なもの
EA
EAは、MT5上で自動売買や注文管理を行うプログラムです。
EAには、完全自動でエントリーや決済を行うものもあれば、利用者の操作を補助する半裁量型のものもあります。
EAで扱うことが多い機能は次のとおりです。
- 新規注文
- 決済処理
- TP/SL設定
- トレーリング
- ナンピン管理
- マジックナンバー管理
- 時間制御
- スプレッド制限
- 通知
- ログ出力
EAは売買処理に関係するため、開発時には、注文対象、決済対象、マジックナンバー、既存ポジションの扱い、ログ確認が特に重要です。
カスタムインジケーター
カスタムインジケーターは、MT5のチャート上に線、サイン、矢印、文字、パネルなどを表示するためのプログラムです。
EAと違い、通常は注文を直接実行しません。主に表示や確認を補助するために使います。
- サイン表示
- ライン表示
- 損益表示
- トレンド状態表示
- 複数時間足の情報表示
- アラート通知
- Discord通知
- 集計パネル表示
インジケーター開発では、表示したい内容、計算条件、表示場所、更新タイミング、通知の有無を整理することが重要です。
スクリプト
スクリプトは、MT5上で一度だけ実行する補助プログラムです。
EAのように常時動き続けるものではなく、実行したタイミングで処理を行います。
たとえば、次のような用途があります。
- 一括でチャート設定を変更する
- 特定情報をファイルに出力する
- 注文や決済の補助処理を行う
- 検証用データを取得する
スクリプトは便利ですが、実行タイミングや対象範囲を誤ると意図しない処理につながる場合があるため、対象銘柄や口座状態を確認してから使う必要があります。
補助ツール
MQL5では、売買ロジックそのものではなく、MT5上の確認や操作を補助するツールも作れます。
たとえば、次のような補助ツールです。
- 注文補助ツール
- 決済補助ツール
- リスク監視ツール
- ログ確認補助ツール
- WebRequestチェックツール
- 運用記録ツール
補助ツールは、売買判断を代行するものではなく、利用者がMT5上の状態を確認しやすくするためのものです。
通知・集計・外部連携ツール
MQL5では、MT5内の情報を外部サービスへ送るツールも作れます。
代表的なものは、Discord通知、Google Sheets連携、CSV出力、Webhook送信などです。
| 外部連携 | 主な用途 | 確認ポイント |
|---|---|---|
| Discord通知 | 起動、約定、エラー、状態変化の通知 | Webhook、WebRequest、通知ログ |
| Google Sheets連携 | 取引履歴や状態の記録 | GAS URL、シート権限、列構成 |
| CSV出力 | 履歴や検証結果の保存 | 保存先、文字コード、出力項目 |
| Webhook送信 | 外部サービスとの連携 | URL、認証、ログ、失敗時処理 |
外部連携を使う場合は、MT5側のWebRequest設定や、URL・APIキーなどの扱いにも注意が必要です。
コピーEA・同期補助ツール
MQL5では、MT5間で取引情報を連携するコピーEAや、複数環境を同期する補助ツールも作成できます。
コピーEAでは、コピー元、コピー先、ロット、マジックナンバー、銘柄名、決済同期、VPS環境などを確認します。
ただし、コピーEAは取引状態を別環境へ反映する仕組みであり、利益や損失回避を保証するものではありません。
EAとインジケーターの違い
売買を実行するかどうか
EAとインジケーターの大きな違いは、売買を実行するかどうかです。
| 項目 | EA | インジケーター |
|---|---|---|
| 主な役割 | 注文・決済・管理 | 表示・分析・通知 |
| 売買実行 | 行う場合がある | 通常は行わない |
| 主な確認場所 | Expertsログ、取引履歴 | チャート表示、Expertsログ |
| リスク管理 | 注文や決済に直接関係しやすい | 表示や通知の補助が中心 |
注文処理が必要な場合はEA、チャート表示や通知だけでよい場合はインジケーターとして作ることが多くなります。
表示・通知だけを行うか
インジケーターは、チャート上の表示やアラート通知に使われることが多いです。
一方、EAでも通知や表示を行うことはあります。特に補助ツール型EAでは、注文ボタンや決済ボタン、リスク表示、状態表示をチャート上に出すことがあります。
そのため、開発依頼前には「売買実行が必要か」「表示だけでよいか」「通知だけでよいか」を整理しておくことが重要です。
ログ確認や検証で見る場所の違い
EAとインジケーターでは、確認するログや検証項目が少し異なります。
| 確認項目 | EA | インジケーター |
|---|---|---|
| 初期化 | Expertsログで確認 | Expertsログで確認 |
| 注文 | 取引履歴・Journalログも確認 | 通常は対象外 |
| 表示 | パネル・ボタン・ライン | ライン・矢印・サイン・パネル |
| 通知 | 約定・状態・エラー通知 | サイン・条件成立通知 |
| バックテスト | 注文や決済の検証 | 表示やサインの確認 |
導入時に確認するフォルダの違い
EAとインジケーターは、MT5上で配置するフォルダが異なります。
| 種類 | 主な配置先 | 確認内容 |
|---|---|---|
| EA | MQL5 / Experts | ナビゲータのエキスパートに表示されるか |
| インジケーター | MQL5 / Indicators | ナビゲータのインディケータに表示されるか |
| スクリプト | MQL5 / Scripts | ナビゲータのスクリプトに表示されるか |
ファイルを入れる場所が違うと、MT5上に表示されなかったり、チャートへ設置できなかったりします。
MQL5の主なイベント関数
MQL5ではプログラム種別ごとにイベントハンドラが決まっています。EAではOnTick、インジケーターではOnCalculate、スクリプトやServiceではOnStartなど、実行の入口が異なります。イベント関数の名前・引数・戻り値は任意関数とは違うため、仕様どおりの形で定義します。
MQL5では、イベント関数を起点に処理が実行されます。EA、インジケーター、スクリプトでは使うイベント関数が異なるため、どのタイミングで処理が動くのかを理解しておく必要があります。
イベント関数は、単なる関数名ではなく、MT5側から呼び出される入口です。OnTickにすべてを書き込む、OnCalculateの再計算範囲を考えない、OnInitで失敗を返さない、OnDeinitでObjectを削除しすぎる、といった設計は後から問題になりやすいため、役割を分けて考えてください。
| イベント関数 | 主な用途 | よくある確認ポイント |
|---|---|---|
OnInit | 起動時の初期化処理です。 | input確認、ハンドル作成、設定不正、初期化失敗時の戻り値を確認します。 |
OnDeinit | 終了時、時間足変更時、EA削除時などの後処理です。 | Object削除、ハンドル解放、終了理由のログを確認します。 |
OnTick | EAで価格更新ごとに実行される処理です。 | 毎ティックで重い処理を入れすぎないようにします。 |
OnCalculate | インジケーターの計算処理です。 | 計算範囲、バッファ、表示更新、再計算範囲を確認します。 |
OnTimer | 一定間隔で実行される処理です。 | 定期ログ、外部連携、表示更新、監視処理などを整理して使います。 |
OnTradeTransaction | 注文や約定などの取引イベントを確認する処理です。 | 注文結果、約定、履歴確認、取引ログの追跡に使います。 |
OnChartEvent | チャート上のクリック、キー操作、Object操作などを扱います。 | パネルEA、ボタン操作、手動補助ツールで使うことがあります。 |
OnStart | スクリプトで一回実行される処理です。 | 一括処理、確認処理、出力処理に向いています。 |
初回コンパイルで確認すること
MQL5コードを書いた後は、MetaEditorでコンパイルします。コンパイルに成功すると、通常は.ex5ファイルが生成され、MT5側でEAやインジケーターとして読み込めるようになります。
コンパイル時にエラーが出ている場合は、該当箇所を修正するまでMT5側で正常に使えません。警告だけの場合でも、型変換、未使用変数、暗黙変換、精度低下の可能性など、後から不具合につながる内容が含まれることがあります。
- MetaEditorで対象ファイルを開く
- 保存先が正しいMQL5フォルダ内か確認する
- 関連する
.mqhファイルが揃っているか確認する - Compileを実行する
- Errors欄にエラーが出ていないか確認する
- Warnings欄の警告内容も確認する
.ex5が生成されているか確認する- MT5側のNavigatorで更新または再起動して表示を確認する
- 実行後はExpertsログやJournalログを確認する
エラーと警告の違い
エラーは、コンパイルが完了できない問題です。文法ミス、関数名の誤り、引数の数違い、型の不一致、セミコロン忘れ、括弧の閉じ忘れ、includeファイル不足などが原因になります。
警告は、コンパイル自体は通るものの、確認した方がよい注意です。未使用変数、型変換、精度低下の可能性などが表示される場合があります。警告を放置しても動くことはありますが、検証や配布前には内容を確認してください。
コンパイル済みなのにMT5へ表示されない場合
コンパイルは通ったのにMT5へ表示されない場合、まず保存先を確認します。EAならExperts、インジケーターならIndicators、スクリプトならScriptsに配置されているかを見ます。次に、MT5側のNavigatorを更新したか、対象MT5とMetaEditorのデータフォルダが一致しているかを確認してください。
また、コンパイルしたファイル名とMT5に表示される名前が違って見える場合もあります。ファイル名、保存フォルダ、コンパイル日時、MT5の再起動有無を整理して確認すると、原因を追いやすくなります。
MQL5開発でつまずきやすいポイント
MQL5開発でつまずいた時は、コードのロジックだけでなく、ファイル配置、コンパイル結果、MT5側の表示、ログ、権限、外部連携設定を順番に確認します。特に初期段階では、単純な配置ミスやコンパイル未実施が原因になることもあります。
| 症状 | 主な原因 | 確認する場所 |
|---|---|---|
| MT5にEAが表示されない | Experts以外に保存している、コンパイルしていない、Navigator未更新。 | データフォルダ、Expertsフォルダ、MetaEditorのErrors欄。 |
| インジケーターが表示されない | Indicators以外に保存している、バッファ設定やOnCalculateに問題がある。 | Indicatorsフォルダ、Expertsログ、チャート上の表示。 |
| コンパイルエラーが出る | 文法ミス、関数名ミス、引数違い、型不一致、括弧の不足。 | MetaEditorのErrors欄、エラー行、該当関数。 |
| includeファイルが見つからない | .mqhの配置先が違う、ファイル名やパスが一致していない。 | Includeフォルダ、#includeの指定、関連ファイル一式。 |
| EAを入れても注文しない | 自動売買許可、シグナル不成立、発注前チェック停止、取引不可状態。 | Expertsログ、Journalログ、EAのinput設定。 |
| CopyBufferで値が取れない | ハンドル作成失敗、取得本数不足、配列方向、確定足の扱い違い。 | OnInitログ、CopyBuffer戻り値、BarsCalculated。 |
| 通知や外部連携が動かない | WebRequest許可URL、送信ON/OFF、外部側のURLや認証設定。 | MT5オプション、Expertsログ、送信結果ログ。 |
EA開発で分けて考える責務
MQL5でEAを作る場合は、エントリー条件だけでなく、発注前チェック、注文処理、決済、リスク管理、ログ、通知を分けて考えます。これらをすべてOnTickの中へ直接書くと、後から原因を追いにくくなります。
EAが注文しない場合でも、理由は1つではありません。シグナルが成立していないのか、フィルターで止まったのか、ロットや証拠金のチェックで止まったのか、注文送信後にretcodeで失敗したのかを分けてログに残す必要があります。
| 責務 | 内容 | 確認ポイント |
|---|---|---|
| signal | 売買候補や方向を判断します。 | どの足、どの条件、どの値で判定したかをログに残します。 |
| filter | スプレッド、時間帯、ポジション数などの見送り条件を確認します。 | シグナル不成立とフィルター停止を分けます。 |
| precheck | ロット、証拠金、SL/TP距離、取引可能状態などを確認します。 | 発注直前に止めた理由を項目別に記録します。 |
| execution | CTradeやOrderSendで注文を送ります。 | retcode、GetLastError、発注条件を確認します。 |
| risk | ロット、最大ポジション、停止条件などを管理します。 | input初期値と実行時の状態を混同しないようにします。 |
| exit | TP/SL、トレーリング、建値、時間決済などを管理します。 | 決済理由と対象ポジションをログで追います。 |
| notification | アラート、Discord通知、CSV出力などを扱います。 | 通知失敗と売買処理を混同しないようにします。 |
| validation | input不正、環境不一致、銘柄仕様の不足を確認します。 | OnInit時点で止めるべき条件を整理します。 |
このように責務を分けておくと、バックテスト、デモ環境、実運用前確認、不具合調査のいずれでも原因を追いやすくなります。特に配布用EAや開発依頼品では、注文が出ない時の理由をログで追えることが重要です。
インジケーター開発で確認すること
インジケーター開発では、値の計算、チャート表示、バッファ、サブウィンドウ、アラート、Object表示などを確認します。EAと違い、注文処理ではなく表示や計算が中心になります。
インジケーターをEAから読み込む場合は、iCustomやCopyBufferで値を取得する構成になります。この場合、インジケーター単体で表示できるか、EA側でハンドルを作成できるか、CopyBufferで値を取得できるかを分けて確認します。
- インジケーター単体でチャート表示できるか確認する
- メインチャート表示かサブウィンドウ表示かを決める
- バッファの数、色、線種、EMPTY_VALUEを確認する
- アラートや通知を出す条件を分ける
- EAから読み込む場合はiCustomとCopyBufferの戻り値を確認する
- 確定足と現在足のどちらを使うか決める
- 表示系と売買判定系を混同しない
- 表示だけのインジなのか、EA判定にも使うインジなのかを分ける
CopyBufferとインジケーター値の確認
MQL5でEAからインジケーター値を使う場合、CopyBufferを使って値を取得することがあります。CopyBufferで値が取れない場合、インジケーターハンドルの作成失敗、取得本数不足、配列方向の理解不足、確定足と現在足の混同などが原因になることがあります。
EA側でインジケーター値を使う時は、まずOnInitでハンドルが正しく作られているか、次にBarsCalculatedで計算済み本数が足りているか、CopyBufferの戻り値が想定どおりかを確認します。値が0だから条件不成立なのか、値そのものが取得できていないのかをログで分けてください。
| 確認項目 | 見る内容 | 注意点 |
|---|---|---|
| ハンドル作成 | iMA、iATR、iRSI、iCustomなどで有効なハンドルが返っているか。 | INVALID_HANDLEの場合はOnInit時点で原因を確認します。 |
| 計算済み本数 | BarsCalculatedで必要本数が揃っているか。 | 起動直後や履歴不足では値が取れないことがあります。 |
| CopyBuffer戻り値 | 要求本数どおり値を取得できたか。 | 戻り値が不足している場合は判定に使わないようにします。 |
| 配列方向 | 現在足と過去足の参照位置を正しく扱っているか。 | ArraySetAsSeriesの扱いに注意します。 |
| 確定足 | 現在足ではなく確定足を使うのか。 | シグナルの再描画や判定ブレを避けるために先に決めます。 |
MQL5開発でログ確認を前提にする
MQL5開発では、動いたかどうかだけでなく、なぜ動いたのか、なぜ動かなかったのかを追えることが重要です。特にEAでは、シグナル不成立、発注前チェック停止、注文失敗、決済失敗、通知失敗、設定不正を同じログ表現にしないようにします。
ログは後から慌てて追加するものではなく、開発時点で仕様の一部として考えるのが望ましいです。OnInitで主要設定を出す、シグナル判定で見送り理由を出す、注文処理ではretcodeとGetLastErrorを分ける、外部連携では送信結果だけを出し、認証情報やURLの実値は出さない、といった設計が必要です。
| ログ対象 | 残したい内容 | 注意点 |
|---|---|---|
| 初期化ログ | EA名、バージョン、主要設定、OnInit結果。 | 認証情報や外部URLの実値を出さないようにします。 |
| シグナルログ | BUY候補、SELL候補、見送り理由、使用した足。 | 毎ティックで過剰に出しすぎないようにします。 |
| 発注前チェックログ | スプレッド、ロット、証拠金、SL/TP距離。 | どの条件で止まったかを分けて出します。 |
| 注文結果ログ | retcode、GetLastError、注文方向、ロット、価格。 | 注文要求と注文結果を混同しないようにします。 |
| 決済ログ | 決済理由、対象チケット、決済ロット、成功/失敗。 | 手動決済、EA決済、SL/TP決済を分けて見ます。 |
| インジケーターログ | ハンドル作成、CopyBuffer戻り値、取得本数、確定足。 | 値が0なのか、取得できていないのかを分けます。 |
| 外部連携ログ | WebRequest、Discord通知、CSV出力、Google Sheets連携の結果。 | Webhook URL、APIキー、トークンをログに出さないようにします。 |
バックテスト前に確認すること
EA開発では、コンパイルが通ることと、バックテストで意図した条件を確認できることは別です。バックテストを行う場合は、銘柄、時間足、期間、スプレッド、モデル、初期残高、setファイル、最適化条件を記録してください。
バックテスト結果は将来の結果を保証するものではありません。あくまで、EAの処理が想定どおり動いているか、発注、決済、ログ、停止条件、通知、エラー時の挙動を確認するための検証材料として扱います。
- EA名とバージョンを記録する
- 使用したsetファイルを保存する
- 銘柄、時間足、期間を記録する
- スプレッド、初期残高、モデルを記録する
- 最適化と単体バックテストを分ける
- Tester結果だけでなくExpertsログも確認する
- 注文されない理由、決済されない理由、通知されない理由をログで分ける
MT4からMT5へ移行する時の注意点
MT4で使っていたEAやインジケーターをMT5へ移したい場合、単純なファイルコピーでは動かないことがあります。MQL4とMQL5では、注文処理、ポジション管理、イベント関数、インジケーターの扱い、コンパイル環境が異なるためです。
移植というより、MT5向けに再設計する前提で考えた方が安全です。特に、OrderSend、Position、History、Deal、TradeTransaction、CopyBuffer、iCustom、Magic Number管理、複数ポジション管理は、MT5の構造に合わせて見直す必要があります。
MT4版のソースがある場合でも、そのまま貼り付けてコンパイルできるとは限りません。MT5側でどの機能を再現したいのか、どの機能は不要なのか、ログや通知をどう扱うのかを整理してから進めてください。
開発依頼前に整理すること
MQL5開発を依頼する場合は、「EAを作りたい」「インジケーターを作りたい」だけでは仕様が不足しやすくなります。作りたいものの種類、目的、使用するインジケーター、対象銘柄、時間足、判定タイミング、ログ、表示、通知、検証条件を分けて整理してください。
また、依頼時には、必要な情報と送らない方がよい情報を分けることも重要です。仕様確認に必要なのは、ロジック、設定、ログ、スクリーンショット、setファイル、発生条件です。口座番号、パスワード、認証トークン、Webhook URL、APIキーなどの実値は、そのまま送らないようにしてください。
| 整理する情報 | 内容 |
|---|---|
| 作りたいものの種類 | EA、インジケーター、スクリプト、パネル、通知ツール、補助ツールのどれかを整理します。 |
| 利用環境 | MT5の種類、ブローカー、銘柄、時間足、VPS利用有無を確認します。 |
| ロジック | エントリー条件、決済条件、見送り条件、使用するインジケーターを整理します。 |
| 判定タイミング | 確定足、現在足、新バー、毎ティック、手動操作のどれを使うか確認します。 |
| 設定ファイル | setファイル、input一覧、初期値、変更したい項目を整理します。 |
| ログ | Expertsログ、Journalログ、バックテストログ、エラー時のスクリーンショットを用意します。 |
| 通知・外部連携 | Discord通知、WebRequest、CSV、Google Sheetsなどの有無を整理します。 |
| 送らない情報 | 口座番号、パスワード、認証トークン、Webhook URL、APIキーの実値は共有しないようにします。 |
作成・改修する機能を具体化する
MQL5開発でよくある依頼内容
既存EAの改修
既存EAの改修では、現在のソースファイル、setファイル、ログ、変更したい内容を確認します。
よくある改修内容は次のとおりです。
- パラメータ追加
- 通知追加
- ログ出力追加
- 決済条件の調整
- 表示パネルの整理
- バックテスト用ログの追加
- WebRequestや外部連携の追加
既存EAの改修には、通常、mq5などのソースファイルが必要です。ex5だけでは内部ロジックを確認して改修することは基本的にできません。
サインインジケーター作成
サインインジケーターは、条件が成立した時に矢印、ラベル、ライン、アラートなどを表示するものです。
依頼前には、次の内容を整理しておくと確認しやすくなります。
- 表示したいサインの条件
- BUY / SELL の判定方法
- 矢印やラベルの表示位置
- アラートや通知の有無
- リペイントの扱い
- 対象銘柄と時間足
サイン表示は売買判断そのものではなく、チャート上の確認を補助するための表示として整理します。
Discord通知の追加
EAやインジケーターにDiscord通知を追加することもできます。
通知する内容には、起動通知、エラー通知、約定通知、サイン通知、状態通知などがあります。
Discord通知を使う場合は、Webhook URL、WebRequest設定、通知対象イベント、通知失敗時のログを確認します。
Google Sheets連携
Google Sheets連携では、MT5から外部シートへ取引情報や状態を記録することがあります。
この場合は、GAS URL、シート権限、列構成、反映タイミング、WebRequest設定が関係します。
外部URLやAPIキーなどの実値は、公開ページや通常の問い合わせ文面には記載しないよう注意してください。
バックテスト用ログ出力
EAの動作を確認するために、バックテスト用のログ出力を追加することがあります。
たとえば、エントリー条件、決済条件、フィルター判定、スプレッド判定、注文エラー、ブロック理由などをログに出すことで、動かない原因を確認しやすくなります。
ただし、ログを出しすぎると確認しづらくなるため、通常ログ、詳細ログ、検証用ログを分けることが重要です。
操作パネルや補助ツールの作成
MQL5では、チャート上にボタンやパネルを表示する補助ツールも作れます。
たとえば、注文補助、決済補助、リスク監視、損益表示、設定確認、通知テストなどです。
パネル型ツールでは、表示位置、ボタンサイズ、チャートサイズ変更、時間足変更後の再描画、古いオブジェクトの残存なども確認対象になります。
開発依頼前に整理しておくこと
何を自動化したいのか
開発依頼前には、まず何を自動化したいのかを整理します。
たとえば、次のように分類できます。
- 売買を自動化したい
- チャート表示を分かりやすくしたい
- 通知を出したい
- 取引履歴を記録したい
- ログ確認をしやすくしたい
- 既存EAを改修したい
- バックテスト時に原因を確認したい
この分類が曖昧なままだと、EAとして作るべきか、インジケーターとして作るべきか、補助ツールとして作るべきかを判断しにくくなります。
売買実行が必要か、表示だけでよいか
開発対象を決める時は、売買実行が必要かどうかを確認します。
| 希望内容 | 向いている形式 |
|---|---|
| 自動で注文・決済したい | EA |
| チャートにサインを表示したい | インジケーター |
| 通知だけ出したい | インジケーターまたはEA |
| 取引履歴を記録したい | EAまたは補助ツール |
| 一度だけ処理したい | スクリプト |
売買実行が必要な場合は、注文対象、決済対象、ロット、マジックナンバー、既存ポジションの扱いを整理する必要があります。
対象銘柄・時間足・口座環境
MT5のEAやインジケーターは、銘柄、時間足、口座環境によって確認内容が変わります。
相談前には次の情報を整理してください。
- 対象銘柄
- 時間足
- ブローカー名
- デモ口座 / リアル口座
- 口座種別
- VPS利用の有無
- 複数EA利用の有無
銘柄名にサフィックスが付く場合や、口座種別によって最小ロットが違う場合は、動作確認に影響することがあります。
setファイル・ログ・スクリーンショット
既存EAや既存インジケーターの確認では、setファイル、Expertsログ、Journalログ、スクリーンショットが重要です。
| 資料 | 確認できる内容 |
|---|---|
| setファイル | Inputsの設定値 |
| Expertsログ | EAやインジケーター側の状態・エラー |
| Journalログ | MT5端末側の接続・注文・ファイル状態 |
| スクリーンショット | 表示崩れ、設定画面、エラー画面 |
ログがない場合、原因調査が難しくなることがあります。問題が発生した前後のログを整理しておくと確認しやすくなります。
既存ソースの有無
既存EAやインジケーターを改修する場合は、ソースファイルの有無が重要です。
通常、MQL5のソースファイルはmq5形式です。コンパイル済みのex5ファイルだけでは、内部ロジックを確認して改修することは基本的にできません。
| ファイル | 主な用途 | 改修可否の目安 |
|---|---|---|
| mq5 | MT5用ソースファイル | 改修検討可能 |
| mqh | 共通部品・ヘッダーファイル | 必要になる場合がある |
| ex5 | コンパイル済みファイル | 内部改修は基本的に不可 |
| set | 設定保存ファイル | 設定確認用 |
MQL5開発で注意したいこと
利益や勝率を保証するものではない
MQL5でEAやインジケーターを作成しても、利益や勝率が保証されるわけではありません。
EAやインジケーターは、条件に応じた処理、表示、通知、記録、確認を行うためのソフトウェアです。
開発相談では、利益や勝率ではなく、機能仕様、確認条件、ログ、操作内容として整理する必要があります。
バックテストとリアル運用は一致しない場合がある
バックテストは、過去データに対する検証です。
リアル運用では、スプレッド、約定、スリッページ、サーバー時刻、通信、VPS、外部連携などが関係します。
そのため、バックテスト結果とリアル運用の動きが完全に一致するとは限りません。
外部連携はWebRequest設定が必要になる場合がある
Discord通知、Google Sheets連携、外部認証、外部設定取得などでは、MT5側のWebRequest設定が必要になる場合があります。
WebRequest設定が不足していると、EAやインジケーター本体には問題がなくても、通知や外部連携が動かないことがあります。
ログがないと原因調査が難しい
EAが動かない、通知が届かない、表示が崩れる、注文エラーが出るといった場合、ログが重要です。
ログには、設定不備、初期化エラー、通信エラー、注文エラー、ブロック理由が出ている場合があります。
問い合わせ前には、問題が発生した時刻、EA名、銘柄、時間足、Expertsログ、Journalログを整理してください。
販売前には入力項目とマニュアル整理が必要
EAやインジケーターを販売・配布する場合は、動作だけでなく、Inputsの分かりやすさ、ログ、マニュアル、FAQ、免責表現も重要です。
利用者が設定を誤解しないように、入力項目の名称、初期値、説明、エラー時の確認方法を整理しておく必要があります。
開発依頼前に整理すること
- 作りたいものがEAか、インジケータか、補助ツールか
- MT4用かMT5用か
- 注文や決済を行う必要があるか
- チャート表示だけでよいか
- 通知や外部連携が必要か
- 販売用にライセンス認証が必要か
- ソースコード提供が必要か
対応できない相談
以下の内容には対応していません。
- 勝てるロジックの提案
- 相場予測
- 売買タイミングの指示
- 推奨ロットの提示
- 推奨ブローカーの紹介
- 利益保証
- 運用代行
送る情報・送らない方がよい情報
開発依頼や不具合相談では、情報が不足していると原因確認に時間がかかります。一方で、機密情報をそのまま送ってしまうと安全上の問題があります。送る情報と送らない方がよい情報を分けて整理してください。
| 送るとよい情報 | 理由 |
|---|---|
| 対象ファイル名 | どのEA、インジケーター、スクリプトを確認するか特定するため。 |
| ソースコードの有無 | .mq5や.mqhがあるかで改修可否が変わるため。 |
| setファイル | input設定を再現するため。 |
| Expertsログ | EAやインジケーター側のエラーや実行状況を確認するため。 |
| Journalログ | MT5側の操作、接続、環境の問題を確認するため。 |
| スクリーンショット | 表示状態、エラー表示、設定画面、チャート状況を確認するため。 |
| 再現手順 | どの操作で問題が起きるかを確認するため。 |
| 送らない方がよい情報 | 理由 |
|---|---|
| 口座番号 | 個人情報や口座情報に該当するため。 |
| 取引パスワード | 第三者が口座へアクセスできる可能性があるため。 |
| 投資家パスワード | 閲覧権限であっても共有は避けるべき情報です。 |
| Webhook URL | 外部通知先へ不正送信される可能性があるため。 |
| APIキー | 外部サービスの認証情報として悪用される可能性があるため。 |
| GAS URLや外部エンドポイントの実値 | 外部連携先を特定できるため、必要時はマスクして共有します。 |
記事固有の実務チェック表
- MT5とMetaEditorの対応関係を確認した
- 正しいデータフォルダを開いているか確認した
- EA、インジケーター、スクリプトのどれを作るか決めた
- Experts / Indicators / Scripts / Include の保存先を確認した
.mq5、.mqh、.ex5、.setの違いを確認した- 関連するincludeファイルがあるか確認した
- 初回コンパイルでエラーと警告を確認した
- MT5側のNavigatorに表示されるか確認した
- ExpertsログとJournalログを分けて確認した
- EA開発ではsignal、filter、precheck、execution、risk、exit、notificationを分けた
- インジケーター開発では表示、バッファ、OnCalculate、CopyBufferを分けた
- 開発依頼前に仕様、setファイル、ログ、スクリーンショットを整理した
- 口座情報、認証情報、Webhook URL、APIキーを共有資料に入れていない
相談内容と動作確認の準備を照合する
相談前チェックリスト
作りたいものの分類
- EAを作りたい
- インジケーターを作りたい
- 既存EAを改修したい
- 通知ツールを追加したい
- 集計ツールを作りたい
- ログ確認をしやすくしたい
- バックテスト用の確認機能を追加したい
必要なファイル
- mq5ファイル
- mqhファイル
- setファイル
- 参考画像
- 仕様メモ
- バックテストレポート
ログ
- Expertsログ
- Journalログ
- Strategy Testerログ
- エラー発生前後のログ
- 通知送信時のログ
環境情報
- MT4向けかMT5向けか
- MQL4かMQL5か
- 対象銘柄
- 時間足
- デモ口座 / リアル口座
- VPS利用の有無
- 外部連携の有無
送らない方がよい情報
問い合わせ時には、次のような実値をそのまま公開場所や通常の問い合わせ文面に記載しないよう注意してください。
| 情報 | 注意点 |
|---|---|
| Webhook URL | 通知先へ直接接続できる情報のため注意 |
| GAS URL | 外部シート連携に関係するため注意 |
| APIキー | 外部サービス認証に関係するため注意 |
| 認証トークン | 利用権限に関係するため注意 |
| 口座番号 | スクリーンショットへの映り込みに注意 |
記事固有の実務チェック表
- 作りたいものはEAかインジケーターか整理した
- 売買実行が必要か、表示・通知だけでよいか整理した
- MT4向けかMT5向けか確認した
- MQL4かMQL5か確認した
- 対象銘柄と時間足を整理した
- 既存ソースがあるか、新規作成かを整理した
- setファイルがある場合は保存した
- ExpertsログとJournalログを確認した
- 外部連携が必要な場合、WebRequestやWebhookの有無を整理した
- 利益・勝率・売買判断ではなく、機能仕様として説明できる
よくある質問
MQL5開発を始めるには何を用意すればよいですか?
MT5とMetaEditorが使える環境を用意し、データフォルダ、MQL5フォルダ、Experts / Indicators / Include の違いを確認してください。最初は小さなEAやインジケーターを作り、保存、コンパイル、MT5側表示、ログ確認までの流れを確認すると進めやすくなります。
MetaEditorだけを開けば開発できますか?
MetaEditorでコードを書くことはできますが、実際に動かすMT5のデータフォルダと一致しているか確認する必要があります。複数のMT5を使っている場合は、別のデータフォルダへ保存していることがあります。
EAとインジケーターは何が違いますか?
EAは自動売買、ポジション管理、通知、診断などに使われることが多く、OnTickやOnTimerなどを中心に動きます。インジケーターはチャート表示や計算が中心で、OnCalculateを使う構成が基本です。
コンパイルエラーが出た場合はどうすればよいですか?
MetaEditorのErrors欄で、エラー行、エラー内容、関数名、引数、型、括弧、セミコロン、includeファイルの有無を確認してください。エラーが残っている場合は、通常.ex5が生成されず、MT5側で実行できません。
コンパイルは通ったのにMT5に表示されないのはなぜですか?
保存先が違う、ExpertsではなくIndicatorsへ置いている、MT5側のNavigatorが更新されていない、別のMT5データフォルダを見ている、などが考えられます。まずはMT5からデータフォルダを開き、保存先とコンパイル結果を確認してください。
MQL5を知らなくても開発依頼できますか?
可能です。ただし、作りたい機能、対象銘柄、時間足、既存ソースの有無、setファイル、ログ、スクリーンショットを整理しておくと確認しやすくなります。MQL5の文法を説明するよりも、期待する動作と確認できる資料を整理することが重要です。
ex5ファイルだけでも改修できますか?
通常、.ex5はコンパイル済みの実行用ファイルであり、ソースコードとして編集することはできません。改修を依頼する場合は、.mq5や関連する.mqhがあるか確認してください。
MQL5開発でログはどの程度必要ですか?
EAや通知ツールでは、ログは重要です。シグナル不成立、発注前チェック停止、注文失敗、決済失敗、通知失敗、設定不正を分けて確認できるようにすると、不具合調査や検証がしやすくなります。
MQL5とは何ですか?
MQL5は、MT5上でEA、インジケーター、スクリプト、補助ツールなどを作るための開発言語です。
MQL5でEAとインジケーターの両方を作れますか?
はい。EAは売買実行を含むプログラム、インジケーターは主にチャート表示や分析補助を行うプログラムとして作成できます。
MQL5の知識がなくても開発依頼できますか?
可能です。ただし、作りたい機能、対象銘柄、時間足、動作条件、ログなどを整理しておくと相談が進めやすくなります。
MQL5で作ったEAは利益を保証しますか?
いいえ。EAやインジケーターは取引や確認作業を補助するソフトウェアであり、利益や勝率を保証するものではありません。
既存EAの一部だけ改修できますか?
ソースコードや仕様、動作ログを確認したうえで、改修可能な範囲を判断します。ex5だけでは内部ロジックを確認して改修することは基本的にできません。
関連する確認ページ
確認したい内容に応じて、次のページを参照してください。本文中ですでに案内したページは、ここでは重ねて掲載していません。
あわせて確認したいページ
今回の確認内容に関連する補足ページです。必要な項目だけ確認してください。
| 確認目的 | 関連ページ |
|---|---|
| 読後の任意の手続き・一覧入口。本文解決や購入の必須前提にしない | MT4/MT5 技術講座 |
| 総合説明から主題に対応した専門説明へ | MQL4とは |
| 総合説明から主題に対応した専門説明へ | MQL5インジケーター開発・EA連携完全ガイド |
| 総合説明から主題に対応した専門説明へ | MQL5ファイル操作・CSVログ出力完全ガイド |
| 総合説明から主題に対応した専門説明へ | MQL5時系列データ・価格取得完全ガイド |
| 総合説明から主題に対応した専門説明へ | MT5ストラテジーテスター・最適化完全ガイド |
| 総合説明から主題に対応した専門説明へ | MQL5 WebRequest・JSON・外部API実装完全ガイド |
| 総合説明から主題に対応した専門説明へ | MQL5チャートオブジェクト・パネルUI完全ガイド |
| 総合説明から主題に対応した専門説明へ | MQL5長時間稼働・安定化完全ガイド |
| 「MQL5 開発 入門」の読後に「自動売買EAを自作する前に確認すること」を補足確認 | 自動売買EAを自作する前に確認すること |
| 「MQL5 開発 入門」の読後に「MQL5 EAサンプルコードの読み方」を補足確認 | MQL5 EAサンプルコードの読み方 |
まとめ
MQL5開発を学ぶ時は、いきなり複雑なEAや売買ロジックを作るのではなく、MetaEditor、データフォルダ、MQL5フォルダ構成、ファイル種類、EAとインジケーターの違い、イベント関数、コンパイルエラー、ログ確認を順番に整理することが重要です。
.mq5、.mqh、.ex5、.setファイルは、それぞれ役割が異なります。改修や不具合確認を行う場合は、実行用ファイルだけでなく、ソースコード、includeファイル、設定ファイル、ログの有無も確認してください。
EAではOnInit、OnTick、OnDeinit、OnTimer、OnTradeTransactionが重要になり、インジケーターではOnCalculateやバッファ管理が重要になります。表示系、判定系、売買実行系、通知系、外部連携系を混同しないことが、開発や改修を進める上で大切です。
開発依頼や不具合相談を行う場合は、対象ファイル、setファイル、ログ、スクリーンショット、発生条件、改修したい内容を整理してください。APIキー、Webhook URL、認証トークン、口座番号などの実値は、そのまま送らないよう注意してください。
お問い合わせはEAFC公式LINEへ
EAFCサイト内の記事、商品、導入前確認、設定確認、ログ確認、開発依頼前のご相談など、各種お問い合わせはEAFC公式LINEより受け付けています。
※投資助言、売買指示、利益保証、推奨ロット、推奨銘柄の案内は行っておりません。
口座番号、認証情報、Webhook URL、GAS URL、APIキーなどの機密情報は送信しないでください。
利用条件・相談窓口
| 確認内容 | 案内ページ |
|---|---|
| MT5 開発依頼・作成代行|EA・インジケーター新規開発・MT4/MT5既存改修 | 開発・改修の相談ページ |
| EA・MT5・MQL5 技術辞典|用語・関数・設定を目的別に探す | EA・MT5・MQL5 技術辞典|用語・関数・設定を目的別に探す |
