MQL5インジケーター開発・EA連携完全ガイド|iCustom・CopyBuffer・OnCalculate・SetIndexBufferの基本
MQL5でインジケーターを開発したり、既存のサインインジケーターをEAから読み取ったりする場合、OnCalculate、SetIndexBuffer、iCustom、CopyBuffer、インジケーターバッファ、shift、確定足、リペイント確認などを整理しておく必要があります。
インジケーターは、チャート上にライン、矢印、ヒストグラム、サブウィンドウ表示などを出すためのものです。一方でEAは、条件判定、注文、決済、通知、記録などを担当します。サインインジをEA化する場合は、表示されている矢印をそのまま注文条件にするのではなく、どのバッファにどの値が出ているのか、確定足で読むのか、リアルタイム足で読むのかを分けて確認する必要があります。
この記事では、MQL5インジケーターを作る側と、EAからインジケーターを読む側を分けずに、次の流れで整理します。
- インジケーターを作る
- バッファへ値を出す
- EA側でiCustomとCopyBufferを使って読む
- サインEA化、通知化、集計化へつなげる
このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、推奨ロット、推奨銘柄、特定ブローカー誘導を目的とした内容ではありません。
- MQL5インジケーターとEA連携をまとめて学ぶ理由
- EAとインジケーターの役割の違い
- カスタムインジケーターの基本構造
- OnCalculateの役割
- SetIndexBufferの役割
- PlotIndexSet系と描画設定の考え方
- メインチャート表示とサブウィンドウ表示
- 矢印・ライン・ヒストグラム表示の基本
- インジケーターバッファとは何か
- バッファ番号とshiftの考え方
- iCustomでカスタムインジを呼び出す考え方
- CopyBufferで値を取得する考え方
- IndicatorReleaseとハンドル管理
- 確定足とリアルタイム足の違い
- リペイント確認
- サインインジをEA化する前に整理すること
- 通知対応インジ・集計インジへの応用
- よくあるエラーと確認ポイント
- EA利用者向けの確認ポイント
- MQL5開発者向けの確認ポイント
- 検証担当者向けの確認ポイント
- 開発依頼前に送る情報
- 送ってはいけない情報
- MQL5インジケーター開発・EA連携チェック表
- 次に読む技術講座
- 次に確認するページ
- よくある質問
- まとめ
MQL5インジケーターとEA連携をまとめて学ぶ理由
MQL5インジケーター開発とEA連携は、別々に考えられがちです。
しかし、実務上はインジケーターを作るだけで終わるケースよりも、次のような相談につながることが多くあります。
- サインインジの矢印をEAで読みたい
- 既存インジケーターをMT5 EAから参照したい
- 通知対応インジケーターにしたい
- インジケーターの値をGoogle SheetsやCSVへ記録したい
- MT4インジケーターをMQL5へ作り直したい
- インジケーターのリペイント有無を確認したい
このような場合、チャート上に表示されている見た目だけでは不十分です。
EAから読むためには、インジケーター側がどのバッファへ値を出しているのか、バッファ番号は何番なのか、未確定足で値が変わるのか、CopyBufferで取得できる値が何を意味するのかを確認する必要があります。
| 確認対象 | インジケーター側 | EA側 |
|---|---|---|
| 値の出力 | SetIndexBufferでバッファへ値を入れる | CopyBufferでバッファ値を取得する |
| カスタムインジの呼び出し | mq5 / ex5として配置する | iCustomでハンドルを作成する |
| サイン表示 | 矢印、ライン、ヒストグラムなどで表示する | 表示ではなくバッファ値を読む |
| 確定足判定 | OnCalculate内で計算する | shift 1以降を読むか確認する |
| リペイント確認 | 過去足の値が変わるか確認する | EA化前に再現ログで確認する |
EAとインジケーターの役割の違い
EAとインジケーターは、どちらもMQL5で作成できますが、役割が異なります。
インジケーターは、主に計算結果をチャート上へ表示したり、バッファとして値を出したりするために使います。EAは、価格更新やタイマーなどをきっかけに、条件判定、注文、決済、通知、記録などを行います。
| 項目 | インジケーター | EA |
|---|---|---|
| 主な役割 | チャート表示、ライン、矢印、サブウィンドウ、バッファ出力 | 判定、注文、決済、通知、記録、外部連携 |
| 主なイベント関数 | OnInit、OnCalculate、OnDeinit | OnInit、OnTick、OnTimer、OnDeinit |
| 注文処理 | 通常は行わない | OrderSendやCTradeなどで行う |
| 表示 | 主目的になりやすい | 補助表示として使うことが多い |
| EA連携 | バッファ値を出す側 | iCustom / CopyBufferで読む側 |
サインインジをEA化する時は、インジケーターの表示とEAの注文処理を混同しないことが重要です。
チャートにBUY矢印が表示されることと、EAがBUY注文を出すことは別の処理です。EA化では、signal、execution、risk、exit、notificationを分けて確認します。
カスタムインジケーターの基本構造
MQL5のカスタムインジケーターは、主に次の要素で構成されます。
- インジケーターのプロパティ
- inputパラメータ
- インジケーターバッファ
- OnInitによる初期化
- OnCalculateによる計算
- OnDeinitによる終了処理
インジケーターがEAから読まれることを前提にする場合、チャート上の見た目だけでなく、バッファ設計が重要になります。
| 構成要素 | 役割 | 確認ポイント |
|---|---|---|
| プロパティ | 表示場所、バッファ数、描画形式などを定義する | メインチャートかサブウィンドウか、表示バッファ数 |
| input | 期間、閾値、表示ON/OFFなどを設定する | EAからiCustomで渡す順番と型 |
| バッファ | 計算値、サイン値、ライン値を格納する | BUY / SELL / 補助値を分けるか |
| OnInit | 初期化、バッファ関連付け、描画設定 | SetIndexBuffer、PlotIndexSet系の設定 |
| OnCalculate | ローソク足ごとの計算 | 計算範囲、確定足、再計算、リペイント |
| OnDeinit | 終了時の処理 | 不要なオブジェクトやハンドル管理 |
OnCalculateの役割
OnCalculateは、MQL5インジケーターの計算処理を担当するイベント関数です。
EAのOnTickが価格更新時の処理を担当するのに対し、インジケーターのOnCalculateは、チャートのデータに基づいてバッファへ値を入れる処理を行います。
OnCalculateでは、どのバーから再計算するか、未確定足を計算対象にするか、過去足の値を変更するかを設計します。
| 確認項目 | 内容 | EA連携時の注意 |
|---|---|---|
| rates_total | 利用可能なバー数 | 必要本数に足りない場合は値を出さない設計にする |
| prev_calculated | 前回計算済みのバー数 | 再計算範囲とリペイント確認に関係する |
| time | 各バーの時刻 | 新バー判定や確定足確認に使うことがある |
| open / high / low / close | ローソク足の価格データ | どの価格を条件に使うかを明確にする |
| tick_volume / volume | 出来高関連データ | ブローカーや銘柄で意味が異なる場合がある |
| spread | スプレッド情報 | 表示や補助確認には使えるが売買判断とは分ける |
OnCalculateとOnTickの違い
OnCalculateはインジケーターの計算、OnTickはEAの価格更新処理で使います。
サインインジをEA化する時に注意したいのは、OnCalculateで表示されたサインを、EA側でどのタイミングで読むかです。未確定足のサインを読むのか、確定足のサインを読むのかで、EAの挙動は変わります。
特にサインが足の途中で出たり消えたりするインジケーターでは、EAがshift 0を読むと、バックテストとリアルタイムで見え方が変わる可能性があります。
SetIndexBufferの役割
SetIndexBufferは、インジケーターの配列をインジケーターバッファとして登録するために使います。
バッファは、チャートへ表示する値だけでなく、EAからCopyBufferで取得する値としても重要です。
| バッファ用途 | 例 | EA連携時の確認 |
|---|---|---|
| ライン表示 | 移動平均、基準線、上下バンド | どのバッファ番号がどのラインか確認する |
| 矢印サイン | BUY矢印、SELL矢印 | BUY用とSELL用を分けているか確認する |
| ヒストグラム | 強弱、差分、状態表示 | 正負の意味、0の意味、EMPTY_VALUEを確認する |
| 計算補助 | 表示しない内部値 | EAから読む前提か、内部専用かを確認する |
| 状態値 | 1=BUY、-1=SELL、0=なし | 値の意味を仕様として明文化する |
バッファ番号を固定して管理する
EAからインジケーターを読む場合、バッファ番号の管理が重要です。
例えば、BUYサインがバッファ0、SELLサインがバッファ1、ライン値がバッファ2という設計の場合、EA側でも同じ番号でCopyBufferを呼び出す必要があります。
バッファ番号が変わると、EA側がBUYとSELLを逆に読む、サインがないのにあると判断する、ライン値をサイン値として扱うなどの不具合につながります。
PlotIndexSet系と描画設定の考え方
MQL5インジケーターでは、バッファへ値を入れるだけではなく、どのように表示するかを設定する必要があります。
PlotIndexSetInteger、PlotIndexSetDouble、PlotIndexSetStringなどの設定は、線の種類、矢印コード、表示名、空値などに関係します。
| 設定対象 | 確認すること | EA連携への影響 |
|---|---|---|
| 描画タイプ | ライン、矢印、ヒストグラムなど | 見た目とバッファ値を混同しない |
| 空値 | EMPTY_VALUEを使うか、0を使うか | EA側のサイン有無判定に影響する |
| 矢印コード | BUY / SELLで見た目を分ける | 矢印形状ではなくバッファ値を読む |
| 表示名 | データウィンドウでの名称 | 検証時にどの値か確認しやすくなる |
| 線幅・色 | 視認性の調整 | EA判定には直接使わない |
メインチャート表示とサブウィンドウ表示
インジケーターは、メインチャート上に表示するものと、サブウィンドウへ表示するものがあります。
メインチャート表示は、価格と重ねてラインや矢印を表示したい場合に使われます。サブウィンドウ表示は、オシレーター、強弱、スコア、状態値などを別枠で表示したい場合に使われます。
| 表示場所 | 向いている内容 | 確認ポイント |
|---|---|---|
| メインチャート | 矢印、ライン、バンド、価格帯 | 価格スケール、矢印位置、ローソク足との重なり |
| サブウィンドウ | オシレーター、強弱、スコア、状態値 | 0ライン、閾値、表示範囲、サブウィンドウ番号 |
| 非表示バッファ | EA連携用の補助値 | EAから読む前提なら仕様書に明記する |
EA連携では、メインチャート表示かサブウィンドウ表示かよりも、CopyBufferで取得するバッファ値が重要です。
矢印・ライン・ヒストグラム表示の基本
インジケーターの表示形式には、矢印、ライン、ヒストグラム、ドット、塗りつぶしなどがあります。
表示形式は読者や利用者の視認性に関係しますが、EAから読む場合は見た目ではなくバッファ値を確認します。
| 表示形式 | 主な用途 | EA化時の注意 |
|---|---|---|
| 矢印 | BUY / SELLサイン | 矢印の有無をバッファ値で確認する |
| ライン | 移動平均、基準線、上下ライン | ライン値とサイン条件を分ける |
| ヒストグラム | 強弱、差分、状態 | 正負、0、EMPTY_VALUEの意味を確認する |
| ドット | 条件成立位置の表示 | サインなのか補助表示なのか確認する |
| 非表示値 | EA連携用の内部値 | 仕様書にバッファ番号と値の意味を残す |
インジケーターバッファとは何か
インジケーターバッファは、インジケーターの計算結果をバーごとに格納するための配列です。
ラインを表示する場合も、矢印を表示する場合も、EAから値を読む場合も、基本的にはバッファに入っている値が重要になります。
EA化の相談では、「チャートに矢印が出ています」だけでは不十分です。次のような情報が必要です。
- BUYサインは何番のバッファか
- SELLサインは何番のバッファか
- サインなしの時はEMPTY_VALUEか0か
- shift 0の値は変化するか
- 過去足の値が後から変わるか
- EAから読む前提のバッファがあるか
バッファ番号とshiftの考え方
CopyBufferでは、どのバッファ番号から、どの位置の値を、何本分取得するかを指定します。
この時に重要になるのが、バッファ番号とshiftです。
| 項目 | 意味 | 確認ポイント |
|---|---|---|
| バッファ番号 | どの出力値を読むか | BUY、SELL、ライン、補助値の対応を確認する |
| shift 0 | 現在形成中の足 | リアルタイムで値が変わる可能性がある |
| shift 1 | 1本前の確定足 | 確定足判定でよく確認対象になる |
| 取得本数 | 何本分の値を取得するか | 戻り値が想定本数か確認する |
| EMPTY_VALUE | 値なしを表すことが多い | 0との違いをEA側で判定する |
EAからインジケーターを読む場合は、shift 0を読むのか、shift 1を読むのかを仕様として固定してください。
「サインが出た瞬間に通知したい」のか、「確定足でサインが残った時だけ処理したい」のかで、読み方は変わります。
iCustomでカスタムインジを呼び出す考え方
iCustomは、EAや別のプログラムからカスタムインジケーターのハンドルを作成する時に使います。
iCustomで重要なのは、インジケーター名、配置場所、inputパラメータの順番と型です。
| 確認項目 | 内容 | よくある問題 |
|---|---|---|
| インジケーター名 | 読み込むカスタムインジのファイル名 | ファイル名違い、フォルダ違い、ex5未生成 |
| 配置場所 | MQL5\Indicators配下の配置 | 別フォルダ、サブフォルダ指定漏れ |
| input順序 | iCustomで渡すパラメータ順 | 順番違いで意図しない設定になる |
| input型 | int、double、bool、string、enumなど | 型不一致で読み込み失敗や誤動作 |
| ハンドル | 作成結果がINVALID_HANDLEでないか | 読み込み失敗を見逃す |
iCustomで読み込めない場合は、EA側だけでなく、インジケーター側が正しくコンパイルされているか、Indicatorsフォルダへ配置されているか、必要なincludeや依存ファイルが揃っているかを確認してください。
CopyBufferで値を取得する考え方
CopyBufferは、インジケーターのバッファ値をEA側で取得する時に使います。
CopyBufferの戻り値は、実際に取得できたデータ数です。戻り値を確認せずに配列を参照すると、データ不足や取得失敗時に誤判定につながります。
| 確認項目 | 内容 | EA側の確認 |
|---|---|---|
| handle | iCustomやiMAなどで作成したハンドル | INVALID_HANDLEでないか確認する |
| buffer_num | 取得するバッファ番号 | BUY / SELL / ライン値の対応を確認する |
| start_pos | 取得開始位置 | shift 0かshift 1かを明確にする |
| count | 取得本数 | 必要本数を取得できたか確認する |
| 戻り値 | 取得できたデータ数 | 0以下なら処理を進めない |
サインインジをEA化する場合は、CopyBufferで取得した値が、サインあり、サインなし、補助値、無効値のどれを意味するかを必ず整理してください。
IndicatorReleaseとハンドル管理
iCustomや標準インジケーター関数で作成したハンドルは、不要になったらIndicatorReleaseで解放する設計にします。
ハンドル管理が曖昧だと、時間足変更、チャート変更、EA再読み込み、長時間稼働時に不安定になることがあります。
| 場面 | 確認すること | 注意点 |
|---|---|---|
| OnInit | ハンドル作成結果 | INVALID_HANDLEならログを出す |
| OnTick / OnTimer | CopyBufferの戻り値 | 取得失敗時は判定を進めない |
| OnDeinit | ハンドル解放 | 解放後の再利用を避ける |
| 時間足変更 | 再初期化時の作成・解放 | 古いハンドル参照を残さない |
確定足とリアルタイム足の違い
サインインジのEA化で特に重要なのが、確定足で読むのか、リアルタイム足で読むのかです。
shift 0は現在形成中の足であり、値が変わる可能性があります。shift 1は1本前の確定足です。
| 読み方 | 特徴 | 向いている確認 |
|---|---|---|
| shift 0 | 現在足。値が変わる可能性がある | リアルタイム通知、点灯確認 |
| shift 1 | 1本前の確定足 | 確定足サイン、EA化、再現性確認 |
| 複数本確認 | 過去数本の値を比較する | リペイント確認、サイン継続確認 |
どちらが良いという話ではなく、目的に応じて決める必要があります。
通知インジであればshift 0の点灯を通知したい場合があります。一方、EA化して注文条件に使う場合は、確定足のサインを読む方が再現性を確認しやすい場合があります。
リペイント確認
リペイントとは、過去に表示されたサインやラインが後から変わることを指します。
すべての再計算が問題というわけではありませんが、EA化や検証では、過去足のサインが後から消える、移動する、別方向へ変わる場合に注意が必要です。
| 確認項目 | 確認内容 | 記録する情報 |
|---|---|---|
| shift 0の変化 | 現在足のサインが出たり消えたりするか | 発生時刻、銘柄、時間足 |
| shift 1以降の変化 | 確定足の値が後から変わるか | 変更前後のスクリーンショット |
| 再起動後の変化 | MT5再起動や時間足変更で過去表示が変わるか | 再起動前後の状態 |
| バックテストとの差 | リアルタイム表示とテスター表示に差があるか | テスト条件、期間、ログ |
| EA取得値との差 | 画面表示とCopyBuffer取得値が一致するか | バッファ番号、shift、取得値 |
リペイントするインジケーターでも、用途によっては通知や確認補助として使える場合があります。ただし、EA化する場合は、どの時点の値を採用するのかを明確にする必要があります。
サインインジをEA化する前に整理すること
サインインジをEA化する場合、まずは「サインが出る」ことではなく、「EAが機械的に読める値があるか」を確認します。
| 確認項目 | 内容 | 資料として必要なもの |
|---|---|---|
| 対象インジケーター | ファイル名、バージョン、mq5 / ex5の有無 | 対象ファイル |
| BUYサイン | どのバッファに出るか | バッファ番号、値の例 |
| SELLサイン | どのバッファに出るか | バッファ番号、値の例 |
| サインなし | EMPTY_VALUEか0か | 取得ログ |
| 確定タイミング | shift 0かshift 1か | 仕様メモ、スクリーンショット |
| リペイント | 過去足の値が変わるか | 前後比較、ログ |
| EAの動作範囲 | 通知だけか、注文まで行うか | 要件メモ |
EA化では、signalとexecutionを分けて考えます。
インジケーターのサインを読む部分がsignalです。注文を出す部分はexecutionです。さらに、ロット、スプレッド、時間帯、最大ポジション数、損切り、決済条件、通知条件は別責務として整理します。
通知対応インジ・集計インジへの応用
インジケーターの値は、EA化だけでなく、通知や集計にも使えます。
例えば、サインが出た時にDiscordへ通知する、一定期間のサイン回数を集計する、CSVへ記録する、Google Sheetsへ送信するなどの応用があります。
| 応用例 | 関係する処理 | 確認ポイント |
|---|---|---|
| 通知対応インジ | サイン検出、通知条件、通知抑制 | 同一足で何度も通知しないか |
| Discord通知 | WebRequest、Webhook、payload | Webhook URLを共有しない |
| Google Sheets連携 | WebRequest、GAS URL、書き込み形式 | GAS URLやAPIキーを共有しない |
| CSV記録 | FileOpen、FileWrite、FileClose | 保存先、文字コード、列順 |
| サイン集計 | 履歴バー、バッファ値、時刻 | 重複カウントやリペイントを確認する |
通知や外部連携を行う場合でも、通知成功と売買成功を混同しないでください。通知はnotification層であり、EAの注文処理とは別責務です。
外部連携の基本は、MT5外部連携・通知セキュリティガイドも参考にしてください。
よくあるエラーと確認ポイント
MQL5インジケーター開発やEA連携では、iCustomで読み込めない、CopyBufferで値が取れない、バッファ番号が違う、サインがEAで読めないなどの問題が出ることがあります。
| 症状 | 原因候補 | 最初に確認すること |
|---|---|---|
| iCustomで読み込めない | ファイル名違い、配置違い、コンパイル未完了 | Indicatorsフォルダ、ex5生成、ファイル名 |
| INVALID_HANDLEになる | インジ作成失敗、パラメータ不一致 | input順序、型、GetLastError |
| CopyBufferが0以下を返す | データ不足、handle不正、バッファ番号違い | 戻り値、BarsCalculated、バッファ番号 |
| BUYとSELLが逆に見える | バッファ番号の取り違え | BUY / SELLバッファ仕様 |
| サインがEAで出ない | shift違い、EMPTY_VALUE判定ミス | shift 0 / 1、値なし表現 |
| バックテストと表示が違う | リペイント、未確定足、履歴不足 | 確定足、再計算範囲、テスト条件 |
| 通知が連続する | 同一足重複通知の抑制不足 | last alert bar、通知間隔 |
エラーコードやリターンコードの整理は、MQL5エラーコード辞典も確認してください。
EA利用者向けの確認ポイント
EA利用者がサインインジEA化や通知化を相談する場合、ソースコードの詳細を理解していなくても、必要な情報を整理できます。
- どのインジケーターを使いたいか
- BUYサインとSELLサインがどのように表示されるか
- サインが出るタイミングは足の途中か、足確定後か
- 過去のサインが後から変わるか
- 通知だけしたいのか、EA注文まで行いたいのか
- 対象銘柄と時間足
- 使用しているsetファイル
- ExpertsログとJournalログ
インジケーターのソースがない場合でも、ex5からEA連携できる可能性はあります。ただし、バッファ番号や値の意味が分からない場合、確認用EAやログ取得が必要になることがあります。
MQL5開発者向けの確認ポイント
MQL5開発者は、インジケーターをEAから読む前提で作る場合、表示用バッファとEA連携用バッファを分けることを検討してください。
| 設計項目 | 確認ポイント | 理由 |
|---|---|---|
| バッファ設計 | BUY、SELL、補助値を分ける | EA側で誤読しにくくするため |
| EMPTY_VALUE | サインなしの表現を固定する | EA側の条件判定を安定させるため |
| 確定足 | shift 0 / 1の意味を仕様化する | 再現性を確認しやすくするため |
| リペイント | 過去足更新の有無を説明する | EA化時の誤解を防ぐため |
| ログ | 初期化、handle、CopyBuffer結果を確認できるようにする | 不具合調査をしやすくするため |
| 表示と判定 | 見た目とバッファ値を混同しない | 表示変更でEA判定が崩れないようにするため |
検証担当者向けの確認ポイント
検証担当者は、チャート上の見た目だけでなく、EAが取得しているバッファ値を確認する必要があります。
- サイン表示とCopyBuffer値が一致しているか
- shift 0とshift 1で値の出方が違うか
- 時間足変更後に値が変わるか
- MT5再起動後に過去サインが変わるか
- バックテストとリアルタイム表示に差があるか
- 通知やEA注文が同一足で重複しないか
- インジケーターのinputを変更した時にEA側も同じ設定になっているか
検証では、スクリーンショット、Expertsログ、Journalログ、setファイル、対象銘柄、時間足、発生時刻をセットで残してください。
開発依頼前に送る情報
MQL5インジケーター開発、EA連携、サインEA化、通知対応、集計対応を相談する場合は、次の情報を整理してください。
| 情報 | 必要性 | 注意点 |
|---|---|---|
| 対象インジケーター名 | 対象ファイルの特定 | ファイル名と表示名が違う場合がある |
| mq5 / ex5の有無 | 改修可否、EA連携可否の確認 | ソースがない場合は制約がある |
| バージョン | 差分確認 | 古い版と混在しないようにする |
| 対象銘柄・時間足 | 再現条件 | MT5上の銘柄名をそのまま記録する |
| setファイル | 入力条件の再現 | 個人情報や認証情報がないか確認する |
| サインのスクリーンショット | 見た目と発生条件の確認 | 口座番号などを隠す |
| Expertsログ | EA・インジ側の状態確認 | エラー前後を含める |
| Journalログ | MT5端末側の状態確認 | 接続やテスター関連に有効 |
| 希望する動作 | 通知だけかEA注文までかを判断 | signalとexecutionを分けて書く |
開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも参考にしてください。
送ってはいけない情報
インジケーターやEAの相談では、ログやスクリーンショットが重要です。ただし、次の情報はそのまま送らないでください。
- 口座番号の全桁
- 投資家パスワード
- マスターパスワード
- Webhook URLの実値
- GAS URLの実値
- APIキー
- 認証トークン
- 個人情報
- 第三者の個人情報が入ったログ
問い合わせが必要な場合は、必要情報を整理したうえで、不具合報告・サポート依頼を確認してください。
MQL5インジケーター開発・EA連携チェック表
- □ インジケーター名とバージョンを確認した
- □ mq5ソースの有無を確認した
- □ ex5ファイルの有無を確認した
- □ BUYサインのバッファ番号を確認した
- □ SELLサインのバッファ番号を確認した
- □ サインなしの値がEMPTY_VALUEか0か確認した
- □ shift 0とshift 1の違いを確認した
- □ リペイントの有無を確認した
- □ iCustomで読み込めるか確認した
- □ CopyBufferの戻り値を確認した
- □ 確定足で読むかリアルタイム足で読むか整理した
- □ 通知だけかEA注文まで行うか整理した
- □ Expertsログを保存した
- □ Journalログを保存した
- □ setファイルを保存した
- □ 口座番号や認証情報をマスクした
次に読む技術講座
この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。
| No | 講座 | 確認できること |
|---|---|---|
| LEARN-006 | MQL5関数辞書 | 関連関数の全体像を確認する |
| LEARN-010 | MQL5時系列データ・価格取得完全ガイド | 時系列データと価格取得を確認する |
| LEARN-019 | MQL5チャートオブジェクト・パネルUI完全ガイド | パネルUI・Object表示を確認する |
| LEARN-020 | MQL5イベント処理完全ガイド | OnCalculateとイベント処理の違いを確認する |
次に確認するページ
技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。
| ページ | 確認できること |
|---|---|
| 技術講座一覧 | MT5・MQL5・EA開発に関する技術講座を順番に確認できます。 |
| 導入ガイド | EA、インジケーター、補助ツールを導入する前の確認事項を整理できます。 |
| 商品一覧 | EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。 |
| 開発代行ページ | EA、インジケーター、補助ツールの新規作成・改修相談を確認できます。 |
| 不具合報告・サポート依頼 | ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。 |
よくある質問
OnCalculateとOnTickは何が違いますか?
OnCalculateはインジケーターの計算処理、OnTickはEAの価格更新処理で使います。インジケーターはOnCalculateでバッファへ値を出し、EAは必要に応じてiCustomとCopyBufferでその値を読みます。
CopyBufferで取得するshiftは何を意味しますか?
shiftは取得するバーの位置を意味します。shift 0は現在形成中の足、shift 1は1本前の確定足です。EA化では、どちらを読むかを仕様として明確にする必要があります。
サインインジはそのままEA化できますか?
場合によります。EAから読めるバッファがあり、BUY / SELLサインのバッファ番号や値の意味が確認できればEA化しやすくなります。ただし、表示だけでバッファ仕様が不明な場合は追加確認が必要です。
リペイントするインジはEA化できますか?
技術的には可能な場合がありますが、どの時点の値を採用するかを明確にする必要があります。過去足のサインが後から変わる場合、バックテストやリアルタイム運用で見え方が変わる可能性があります。
SetIndexBufferは何に使いますか?
SetIndexBufferは、インジケーターの配列をバッファとして登録するために使います。ライン表示、矢印表示、ヒストグラム表示、EA連携用の値出力などに関係します。
iCustomで読み込めない時は何を確認しますか?
インジケーター名、ファイル配置、ex5生成、inputの順番、inputの型、必要なincludeや依存ファイル、INVALID_HANDLEの有無、GetLastErrorを確認してください。
インジケーターのソースがない場合でもEA化できますか?
ex5からiCustomとCopyBufferで値を取得できる場合は、EA連携できる可能性があります。ただし、バッファ番号や値の意味が不明な場合は、確認用ログや調査が必要です。
矢印が見えているのにEAでサインが読めないのはなぜですか?
矢印表示とEAが読むバッファ値が一致していない可能性があります。バッファ番号、EMPTY_VALUE、shift、CopyBufferの戻り値、表示用オブジェクトかバッファ描画かを確認してください。
通知対応インジとEA化は同じですか?
同じではありません。通知対応インジはサインや状態を通知する機能であり、EA化は注文や決済などのexecution層を含む場合があります。通知成功と売買成功は分けて確認します。
EA化前に最低限必要な情報は何ですか?
対象インジケーター名、バージョン、mq5またはex5の有無、BUY / SELLバッファ番号、サインなしの値、shift 0 / 1の扱い、リペイント有無、対象銘柄、時間足、setファイル、ログが必要です。
まとめ
MQL5インジケーター開発とEA連携では、チャート上の見た目だけでなく、バッファ設計、OnCalculate、SetIndexBuffer、iCustom、CopyBuffer、shift、確定足、リペイント確認を整理することが重要です。
インジケーターは、ライン、矢印、ヒストグラム、状態値などを表示・出力する側です。EAは、必要に応じてその値を読み、signal、execution、risk、exit、notificationなどの責務に分けて処理します。
サインインジをEA化する場合は、BUY / SELLのバッファ番号、サインなしの値、shift 0とshift 1の違い、過去足の値が変わるかどうかを必ず確認してください。
通知対応やGoogle Sheets連携、CSV記録へ応用する場合も、Webhook URL、GAS URL、APIキー、認証トークン、口座番号などの実値は共有しないようにしてください。
開発や改修を相談する場合は、対象インジケーター、バージョン、対象銘柄、時間足、setファイル、Expertsログ、Journalログ、スクリーンショットを整理しておくと、確認が進めやすくなります。

