技術講座

MQL5開発入門|MetaEditor・EA・インジケーター・イベント関数・コンパイルエラーの基本

EAファンクラブ

MQL5開発を始める時は、いきなり複雑なEAやインジケーターを作ろうとするよりも、MT5とMetaEditorの関係、データフォルダ、MQL5フォルダ構成、ファイル種類、イベント関数、コンパイルエラー、ログ確認の流れを先に整理しておくことが重要です。

MQL5は、MT5上でEA、インジケーター、スクリプト、通知ツール、診断ツール、外部連携ツール、補助ツールなどを作るために使われる開発言語です。EAの売買ロジックだけでなく、チャート表示、アラート、CSV出力、WebRequest、Discord通知、Google Sheets連携、バックテスト補助、設定診断など、幅広い用途で使われます。

このページでは、MQL5を学び始める方、既存EAやインジケーターの改修を相談したい方、MetaEditorやコンパイルエラーの見方を確認したい方に向けて、MQL5開発の入口を体系的に整理します。既存記事の基本内容を残しつつ、開発環境、フォルダ構成、初回コンパイル、EAとインジケーターの違い、開発依頼前の整理まで含めて確認できるようにしています。

なお、この記事はMT5 / MQL5の開発画面、ファイル構成、イベント関数、エラー確認、ログ確認、開発依頼前整理を目的とした技術学習記事です。投資判断、売買タイミング、利益、勝率、損失回避、推奨ロット、特定ブローカーへの誘導を目的とした内容ではありません。

この記事で確認すること

  • 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ログを確認します。
MetaEditorMQL5のソースコードを編集・コンパイルする開発環境です。実際に使う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/ExpertsEAを配置するフォルダです。自動売買EA、半裁量EA、パネルEA、通知EA、診断EAなどは通常ここに置きます。
MQL5/Indicatorsカスタムインジケーターを配置するフォルダです。チャート表示、サブウィンドウ表示、アラート用インジ、EAから読み込むインジなどを置きます。
MQL5/Scripts一回実行型のスクリプトを配置するフォルダです。一括処理、確認用、データ出力、補助操作などに使います。
MQL5/Include共通化した.mqhファイルを配置するフォルダです。EAやインジケーターから読み込む共通関数、構造体、定義、部品を置きます。
MQL5/Librariesライブラリファイルを配置するフォルダです。入門段階では無理に使わず、必要な場合だけ整理します。
MQL5/FilesCSVやテキストなどの入出力に使われることがあるフォルダです。ログ、検証データ、CSV出力で使う場合は、口座情報や認証情報の混入に注意します。
MQL5/Logsログ確認に関係するフォルダです。MT5上のExperts / Journal表示と、実ファイルのログを混同しないようにします。

MQL5で扱う主なファイル種類

MQL5開発では、.mq5.mqh.ex5.setなど、複数のファイルを扱います。それぞれ役割が異なるため、開発依頼や不具合確認の時も、どのファイルを送るべきかを分けて考える必要があります。

特に、.ex5しかないEAやインジケーターは、通常、ソースコードとして中身を編集することはできません。改修や原因調査を依頼する場合は、.mq5や関連する.mqhがあるかを確認してください。

ファイル意味確認内容
.mq5MQL5のソースコードです。EA、インジケーター、スクリプト本体の編集対象になります。
.mqh共通部品や関数をまとめるインクルードファイルです。複数ファイルで共通利用する関数、構造体、定義が含まれる場合があります。
.ex5コンパイル後に生成される実行用ファイルです。MT5側で読み込まれる形式ですが、通常はソース編集には使いません。
.setEAやインジケーターのinput設定を保存したファイルです。バックテスト条件や実行設定を再現するために重要です。
ExpertsログEAやインジケーターの実行ログです。初期化、シグナル、注文、決済、通知、エラーの確認に使います。
JournalログMT5全体の操作や環境に関係するログです。接続状態、取引許可、プラットフォーム側の動作確認に使います。
バックテストレポートStrategy Testerの検証結果です。結果だけでなく、銘柄、時間足、期間、スプレッド、setファイルを併せて確認します。

EA・インジケーター・スクリプトの違い

MQL5では、EA、インジケーター、スクリプトを作成できます。どれもMQL5で作れますが、動き方と目的が違います。開発前に、作りたいものがEAなのか、インジケーターなのか、スクリプトなのかを分けておくことが重要です。

たとえば、売買注文を出すものはEAとして扱うのが基本です。一方、チャートに値を表示したり、ラインを描画したりするものはインジケーターとして作ることが多くなります。単発の確認処理や一括出力であれば、スクリプトが向いている場合もあります。

種類主な用途中心になる処理確認ポイント
EA自動売買、半裁量補助、ポジション管理、通知、診断など。OnInitOnTickOnTimerOnTradeTransactionなど。自動売買許可、Magic Number、発注前チェック、ログを確認します。
インジケーターチャート表示、ライン描画、サブウィンドウ表示、アラートなど。OnInitOnCalculateなど。バッファ、表示、再計算範囲、EAから値を取る場合のCopyBufferを確認します。
スクリプト一回だけ実行する確認処理、出力処理、補助操作など。OnStartなど。常時動作ではなく、実行後に終了する処理か確認します。
共通部品EAやインジケーターから読み込む関数、構造体、共通処理。.mqhとして整理することがあります。本体ファイルだけでなく、関連includeが必要か確認します。

MQL5の主なイベント関数

MQL5では、イベント関数を起点に処理が実行されます。EA、インジケーター、スクリプトでは使うイベント関数が異なるため、どのタイミングで処理が動くのかを理解しておく必要があります。

イベント関数は、単なる関数名ではなく、MT5側から呼び出される入口です。OnTickにすべてを書き込む、OnCalculateの再計算範囲を考えない、OnInitで失敗を返さない、OnDeinitでObjectを削除しすぎる、といった設計は後から問題になりやすいため、役割を分けて考えてください。

イベント関数主な用途よくある確認ポイント
OnInit起動時の初期化処理です。input確認、ハンドル作成、設定不正、初期化失敗時の戻り値を確認します。
OnDeinit終了時、時間足変更時、EA削除時などの後処理です。Object削除、ハンドル解放、終了理由のログを確認します。
OnTickEAで価格更新ごとに実行される処理です。毎ティックで重い処理を入れすぎないようにします。
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距離、取引可能状態などを確認します。発注直前に止めた理由を項目別に記録します。
executionCTradeやOrderSendで注文を送ります。retcode、GetLastError、発注条件を確認します。
riskロット、最大ポジション、停止条件などを管理します。input初期値と実行時の状態を混同しないようにします。
exitTP/SL、トレーリング、建値、時間決済などを管理します。決済理由と対象ポジションをログで追います。
notificationアラート、Discord通知、CSV出力などを扱います。通知失敗と売買処理を混同しないようにします。
validationinput不正、環境不一致、銘柄仕様の不足を確認します。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キーの実値は共有しないようにします。

送る情報・送らない方がよい情報

開発依頼や不具合相談では、情報が不足していると原因確認に時間がかかります。一方で、機密情報をそのまま送ってしまうと安全上の問題があります。送る情報と送らない方がよい情報を分けて整理してください。

送るとよい情報理由
対象ファイル名どの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キーを共有資料に入れていない

よくある質問

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開発を進める時は、開発環境、関数辞典、エラーコード、EA設計、注文処理、ログ設計、開発依頼前資料を分けて確認すると、作業の抜け漏れを減らしやすくなります。

確認したい内容関連ページ
MT5の基本操作や環境を確認するMT5の使い方完全ガイド
MQL5関数を調べるMQL5関数辞書
エラーコードを確認するMQL5エラーコード辞典
EA設計の責務分離を確認するMQL5 EA設計パターン完全ガイド
イベント関数の使い分けを確認するMQL5イベント処理完全ガイド
注文、ポジション、履歴管理を確認するMQL5注文・ポジション・履歴管理完全ガイド
CTradeを使った注文処理を確認するMQL5標準ライブラリ・CTrade完全ガイド
ロット、証拠金、銘柄仕様を確認するMQL5ロット・証拠金・銘柄仕様完全ガイド
インジケーター値をEAに取り込む方法を確認するMQL5でインジケーター値をEAに取り込む方法
ログファースト開発を確認するMQL5デバッグ・ログファースト開発完全ガイド
バックテスト実務を確認するMQL5バックテスト実務ノート
MT4資産をMT5へ作り直す時の考え方を確認するMT4資産をMT5へ作り直す実務ノート
開発依頼前に用意する資料を確認するMT5開発依頼前に用意する資料まとめ
開発・改修相談の入口を確認する開発・改修の相談ページ

まとめ

MQL5開発を学ぶ時は、いきなり複雑なEAや売買ロジックを作るのではなく、MetaEditor、データフォルダ、MQL5フォルダ構成、ファイル種類、EAとインジケーターの違い、イベント関数、コンパイルエラー、ログ確認を順番に整理することが重要です。

.mq5.mqh.ex5.setファイルは、それぞれ役割が異なります。改修や不具合確認を行う場合は、実行用ファイルだけでなく、ソースコード、includeファイル、設定ファイル、ログの有無も確認してください。

EAではOnInit、OnTick、OnDeinit、OnTimer、OnTradeTransactionが重要になり、インジケーターではOnCalculateやバッファ管理が重要になります。表示系、判定系、売買実行系、通知系、外部連携系を混同しないことが、開発や改修を進める上で大切です。

開発依頼や不具合相談を行う場合は、対象ファイル、setファイル、ログ、スクリーンショット、発生条件、改修したい内容を整理してください。APIキー、Webhook URL、認証トークン、口座番号などの実値は、そのまま送らないよう注意してください。

ABOUT ME
記事URLをコピーしました