MQL5インジケーター関数辞典|iCustom・CopyBuffer・SetIndexBuffer・OnCalculate一覧
MQL5でインジケーター開発やEA連携を行う場合、まず理解しておきたいのが、iCustom、CopyBuffer、IndicatorRelease、SetIndexBuffer、OnCalculate、PlotIndexSetInteger、ArraySetAsSeries、buffer index、shift の関係です。
インジケーター側では、OnCalculateで計算し、SetIndexBufferでバッファを割り当て、PlotIndexSet系で描画設定を行います。EA側では、iCustomや標準インジケーター関数でハンドルを作成し、CopyBufferで必要な値を読み取ります。
この記事では、MQL5のインジケーター関数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どの戻り値とログを確認するかを整理するための記事です。
注意:この記事はMQL5開発・インジケーター開発・EA連携・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
MQL5インジケーター関数の全体像
MQL5のインジケーター関連処理は、インジケーターを作る側と、EAからインジケーターを読む側で確認する関数が変わります。
| 立場 | 主な目的 | 主な関数・用語 | 確認すること |
|---|---|---|---|
| インジケーター作成側 | 値を計算し、チャートへ表示し、バッファへ出力する | OnCalculate、SetIndexBuffer、PlotIndexSetInteger、PlotIndexSetDouble | 計算本数、バッファ割り当て、描画設定、EMPTY_VALUE |
| EA連携側 | インジケーター値をEAから読み取る | iCustom、CopyBuffer、BarsCalculated、IndicatorRelease | handle、buffer index、shift、コピー件数、GetLastError |
| データ配列側 | 配列の向きや取得位置を整理する | ArraySetAsSeries、ArraySize、CopyBuffer、CopyRates | 現在足、確定足、配列添字、取得件数 |
| 検証・不具合調査側 | サインのズレや値取得失敗を確認する | buffer index、shift、EMPTY_VALUE、BarsCalculated、PrintFormat | リペイント、現在足/確定足、サイン値、ログ整合 |
EA連携の基本フロー
EAからインジケーター値を使う場合は、iCustomでハンドルを作成し、BarsCalculatedで計算状態を確認し、CopyBufferで値を取得し、終了時にIndicatorReleaseでハンドルを解放する流れで考えると整理しやすくなります。
| 段階 | 使うもの | 役割 | 確認すること |
|---|---|---|---|
| 1 | iCustom | カスタムインジケーターのハンドルを作成する | インジケーター名、Inputs順序、戻り値、INVALID_HANDLE |
| 2 | BarsCalculated | インジケーターの計算済みバー数を確認する | 計算済み本数、履歴不足、初回ロード中かどうか |
| 3 | CopyBuffer | 指定バッファから値を取得する | buffer index、start position、copy count、戻り値 |
| 4 | 取得値の検証 | サイン有無や値の意味を判断する | EMPTY_VALUE、0、価格値、フラグ値、shift |
| 5 | IndicatorRelease | 不要になったハンドルを解放する | OnDeinit、ハンドル再作成、リソース管理 |
iCustom
iCustomは、EAや別のプログラムからカスタムインジケーターを呼び出し、インジケーターハンドルを作成するための関数です。
iCustomで作成したハンドルが無効なままCopyBufferを行うと、値取得に失敗します。EA連携では、iCustomの戻り値がINVALID_HANDLEではないことを必ず確認します。
| 項目 | 内容 |
|---|---|
| 主な用途 | カスタムインジケーターをEAから読み取るためのハンドル作成 |
| 主な確認値 | handle、INVALID_HANDLE、GetLastError、インジケーター名、Inputs引数 |
| よくある失敗 | ファイル名違い、配置先違い、Inputs順序不一致、引数型不一致、インジケーター側の初期化失敗 |
| 確認ログ | ICUSTOM_INIT、INDICATOR_HANDLE、HANDLE_CHECK、INIT_FAIL |
iCustomで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| インジケーター名 | ファイル名、フォルダ階層、拡張子なし指定 | 名前や配置先が違うとハンドル作成に失敗するため |
| Inputs順序 | EA側から渡す引数の順番と型 | インジケーター側のinput定義と一致していないと期待値にならないため |
| 対象symbol | 現在チャートか、別銘柄か | マルチシンボルでは履歴ロードやMarket Watch表示が関係するため |
| 対象timeframe | 現在足か、指定時間足か | マルチタイムフレームでは確定足の位置が変わるため |
| handle | INVALID_HANDLEではないか | 無効ハンドルではCopyBufferできないため |
| GetLastError | handle作成失敗時のエラー | 原因調査に必要なため |
CopyBuffer
CopyBufferは、インジケーターバッファから値を取得するための関数です。EAがインジケーターのサインや数値を使う場合、CopyBufferの戻り値と取得した配列の中身を確認します。
CopyBufferで取得した値が0だからといって、必ずしもサインなしとは限りません。インジケーター側の仕様により、0が有効値、EMPTY_VALUEが空値、価格値がサイン位置、1や-1が方向フラグなど、意味が異なります。
| 項目 | 内容 |
|---|---|
| 主な用途 | インジケーターバッファからサイン値、価格値、ライン値、計算値を取得する |
| 主な確認値 | CopyBuffer戻り値、buffer index、start position、copy count、配列サイズ、GetLastError |
| よくある失敗 | handle不正、buffer index違い、履歴不足、BarsCalculated不足、取得本数不足、配列方向の誤認 |
| 確認ログ | COPYBUFFER_READ、BUFFER_VALUE、BUFFER_FAIL、BAR_BASIS |
CopyBufferで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| handle | iCustomや標準インジケーター関数で作成した有効ハンドルか | 無効ハンドルでは取得できないため |
| buffer index | 読み取るバッファ番号 | BUYサイン、SELLサイン、補助値で番号が異なるため |
| start position | どの足から取得するか | 0は現在足、1は1本前の確定足として扱う場面が多いため |
| copy count | 何本分取得するか | 直近値だけか、過去数本を確認するかで必要本数が変わるため |
| 戻り値 | 実際にコピーできた件数 | 期待本数より少ない場合は履歴不足や計算不足の可能性があるため |
| 配列の値 | EMPTY_VALUE、0、価格値、フラグ値など | 値の意味をインジケーター仕様と照合するため |
| GetLastError | 取得失敗時のエラー | 原因調査に必要なため |
BarsCalculated
BarsCalculatedは、インジケーターが何本分計算済みかを確認するために使います。CopyBufferの前に計算状態を確認することで、初回ロード中や履歴不足による取得失敗を切り分けやすくなります。
| 項目 | 内容 |
|---|---|
| 主な用途 | インジケーター計算済み本数の確認 |
| 主な確認値 | 計算済みバー数、必要本数、handle状態 |
| よくある失敗 | 初回ロード中、履歴不足、handle不正、対象symbol/timeframeのデータ不足 |
| 確認ログ | BARS_CALCULATED、INDICATOR_READY、HISTORY_WAIT |
IndicatorRelease
IndicatorReleaseは、作成したインジケーターハンドルを解放するための関数です。EA終了時やインジケーター再作成時には、不要なハンドルを解放する設計にします。
長時間稼働EAや複数インジケーターを使うEAでは、ハンドル管理を曖昧にすると、再初期化や時間足変更時に不具合を追いにくくなります。
| 項目 | 内容 |
|---|---|
| 主な用途 | 不要になったインジケーターハンドルの解放 |
| 主な確認値 | 解放対象handle、OnDeinit reason、再作成タイミング |
| よくある失敗 | 解放漏れ、解放済みハンドルの再利用、時間足変更時の状態不整合 |
| 確認ログ | HANDLE_RELEASE、DEINIT_CLEANUP、INDICATOR_REINIT |
SetIndexBuffer
SetIndexBufferは、カスタムインジケーターのバッファ配列をインジケーターの出力バッファとして割り当てるための関数です。
インジケーターをEAから読み取る前提にする場合、どのbuffer indexにBUYサイン、SELLサイン、補助値、ライン値を出すかを明確にすることが重要です。
| 項目 | 内容 |
|---|---|
| 主な用途 | カスタムインジケーターのバッファ割り当て |
| 主な確認値 | buffer index、配列、描画用/計算用の区別、EMPTY_VALUE |
| よくある失敗 | buffer番号不一致、バッファ数不足、描画されない、EA側のCopyBuffer番号違い |
| 確認ログ | BUFFER_BIND、BUFFER_INDEX_MAP、INDICATOR_INIT |
SetIndexBufferで整理すること
| 整理項目 | 内容 | 理由 |
|---|---|---|
| BUY用buffer | 買いサインや買い側の値を出すバッファ番号 | EA側でBUY条件として読み取るため |
| SELL用buffer | 売りサインや売り側の値を出すバッファ番号 | EA側でSELL条件として読み取るため |
| 補助buffer | トレンド、フィルター、ライン値、内部計算値 | 表示用と判定用を分けるため |
| 空値 | EMPTY_VALUE、0、その他の空値表現 | サインなしと有効値を混同しないため |
| 描画設定 | 矢印、ライン、非表示、色、幅など | チャート表示とEA取得値を整理するため |
OnCalculate
OnCalculateは、カスタムインジケーターの計算処理を行うイベント関数です。インジケーター作成では、rates_total、prev_calculated、time、open、high、low、closeなどを使って、必要な本数だけ計算します。
OnCalculate内の計算開始位置や配列参照を誤ると、サインがずれる、過去値が消える、リペイントのように見える、配列範囲外になる、といった問題が起きやすくなります。
| 項目 | 内容 |
|---|---|
| 主な用途 | カスタムインジケーターの計算処理 |
| 主な確認値 | rates_total、prev_calculated、計算開始位置、配列サイズ、戻り値 |
| よくある失敗 | 配列範囲外、初回計算不足、再計算範囲ミス、現在足と確定足の混同 |
| 確認ログ | ONCALCULATE_STATE、CALC_RANGE、BUFFER_WRITE、BAR_BASIS |
OnCalculateで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| rates_total | 利用可能なバー数 | 必要本数に満たない場合は計算できないため |
| prev_calculated | 前回計算済み本数 | 差分計算や再計算範囲の判断に使うため |
| 計算開始位置 | どのバーから再計算するか | 過去値の消失や配列範囲外を防ぐため |
| 現在足 | 形成中のバーを含めるか | リアルタイム表示と確定足表示で挙動が変わるため |
| 確定足 | 確定済みバーだけで判定するか | EA連携や検証で再現性を高めるため |
| 戻り値 | 次回のprev_calculatedに関係する値 | 再計算範囲の整合に影響するため |
PlotIndexSetInteger / PlotIndexSetDouble
PlotIndexSetIntegerやPlotIndexSetDoubleは、インジケーターの描画設定を行う関数です。矢印、線、色、描画開始位置、空値などの設定に関係します。
| 関数 | 主な用途 | 確認すること |
|---|---|---|
| PlotIndexSetInteger | 描画タイプ、色、矢印コード、線幅、描画開始位置などの整数系設定 | plot番号、プロパティ、設定値、描画される位置 |
| PlotIndexSetDouble | EMPTY_VALUEなどdouble系の描画設定 | 空値の扱い、サインなし時の表示、EA側の値判定 |
描画設定で注意すること
| 注意点 | 内容 | 確認すること |
|---|---|---|
| 表示値とEA取得値 | チャートに見える表示とCopyBufferで取る値は別に確認する | buffer値、plot設定、EMPTY_VALUE |
| サインなしの値 | EMPTY_VALUEか0かを明確にする | EA側の条件判定 |
| 矢印表示 | 矢印コードや表示位置を調整する | 表示位置、High/Lowからの距離 |
| 描画開始位置 | 過去の計算不足期間を描画しない | 初期バー、必要本数、PlotIndexSetInteger |
ArraySetAsSeries
ArraySetAsSeriesは、配列を時系列配列として扱うかどうかを設定する関数です。時系列配列では、index 0 が最新バーとして扱われる場面が多くなります。
CopyBufferやCopyRates、OnCalculate内の配列参照では、配列の向きを混同すると、現在足と過去足の参照がずれます。
| 項目 | 内容 |
|---|---|
| 主な用途 | 配列の時系列方向を設定する |
| 主な確認値 | index 0の意味、最新バー、過去バー、配列サイズ |
| よくある失敗 | 現在足と過去足の参照ズレ、配列範囲外、サイン位置のズレ |
| 確認ログ | ARRAY_SERIES_STATE、BAR_INDEX_CHECK、SHIFT_CHECK |
indicator handle
indicator handleは、インジケーターを識別するためのハンドルです。iCustomやiMA、iATR、iRSIなどの関数で作成し、CopyBufferで値を取得する時に使います。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| 作成場所 | 通常はOnInitなどで作成 | 毎tick作成すると重くなりやすいです。 |
| 有効性 | INVALID_HANDLEではないか確認 | 無効なままCopyBufferしないようにします。 |
| 対象 | symbol、timeframe、Inputs | チャートと異なる条件で作成していないか確認します。 |
| 解放 | OnDeinitなどでIndicatorRelease | 不要なハンドルを残さないようにします。 |
| 再作成 | 設定変更、時間足変更、symbol変更時 | 古いハンドルを使い続けないようにします。 |
buffer index
buffer indexは、インジケーターバッファの番号です。CopyBufferでどのバッファを読み取るかを指定します。
EA連携で最も多い確認ミスのひとつが、BUYサインとSELLサインのbuffer index違いです。インジケーター作成者側とEA作成者側で、buffer番号と値の意味を明確に共有する必要があります。
| buffer indexの例 | 値の意味 | EA側の確認 |
|---|---|---|
| 0 | BUYサイン、メインライン、または第1出力 | 仕様書と実際の値を確認する |
| 1 | SELLサイン、シグナルライン、または第2出力 | BUY/SELLの取り違えに注意する |
| 2 | 補助値、トレンド状態、フィルター値など | 値の意味と空値を確認する |
| 3以降 | 追加ライン、内部判定値、表示補助値など | EAで使う値か、表示専用かを分ける |
shift
shiftは、どのバーの値を見るかを示す考え方です。EA連携では、現在足の値を見るのか、1本前の確定足を見るのかを明確にします。
| shift | 意味の目安 | 使う場面 | 注意点 |
|---|---|---|---|
| 0 | 現在形成中の足 | リアルタイム表示、速報サイン、現在値確認 | 足確定前に値が変わる場合があります。 |
| 1 | 1本前の確定足 | 確定足判定、EAエントリー判定、検証重視 | サインが1本遅れて見える場合があります。 |
| 2以降 | さらに過去の足 | 過去サイン確認、連続条件、履歴検証 | 配列方向と取得本数を確認します。 |
確認ポイント:EA化を前提にする場合は、shift=0で現在足サインを読むのか、shift=1で確定足サインを読むのかを必ず決めてください。現在足の値は、足確定前に変化する場合があります。
リペイント確認との関係
リペイントとは、過去に表示されたサインや値が、後から変化・消失・移動する挙動を指すことがあります。すべての再計算が問題というわけではありませんが、EA連携や検証では、サインがいつ確定するのかを明確にする必要があります。
| 確認項目 | 内容 | EA連携での注意点 |
|---|---|---|
| 現在足サイン | 足が確定する前に表示されるサイン | 値が変わる可能性を許容するか確認します。 |
| 確定足サイン | 足が確定してから表示されるサイン | 再現性は上がりやすい一方、表示は遅れます。 |
| 過去バー再計算 | 履歴読み込みや時間足変更で過去値が再計算される | 検証表示とリアルタイム記録を分けます。 |
| buffer値の固定 | サイン確定後に値を変えない設計 | EA化では確認しやすくなります。 |
| ログ記録 | サイン発生時刻、bar time、buffer値を残す | 後から表示と判定の差を追いやすくなります。 |
EA利用者向けの確認ポイント
EAがインジケーターのサインを使っている場合、チャートに矢印が見えていることと、EAがそのサインを読み取れていることは別です。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・インジ名・バージョン | 設置しているEAとインジケーターの名称 | 対象ファイルと仕様を特定するため |
| 対象銘柄・時間足 | symbol、timeframe | iCustomやCopyBufferの対象と一致しているか確認するため |
| setファイル | EAとインジケーターのInputs設定 | 引数順序や設定差の確認に必要です。 |
| チャート上の表示 | 矢印、ライン、パネル、サイン位置 | 表示とEA内部判定の差を確認するため |
| Expertsログ | iCustom、CopyBuffer、buffer値、shiftのログ | EAが値を取得できているか確認するため |
| Journalログ | 端末側ログ | インジケーター読み込みや端末状態を確認するため |
| スクリーンショット | チャート、設定、ログ画面 | 表示とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、インジケーター作成側とEA連携側を分けて設計することが重要です。表示系と判定系、現在足と確定足、buffer値と描画表示を混同しないようにします。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| indicator calculation | OnCalculate、rates_total、prev_calculated | 計算範囲、初回計算、再計算範囲を明確にします。 | ONCALCULATE_STATE、CALC_RANGE |
| buffer output | SetIndexBuffer、buffer index、EMPTY_VALUE | EAで読む値と表示専用値を分けます。 | BUFFER_BIND、BUFFER_VALUE |
| plot display | PlotIndexSetInteger、PlotIndexSetDouble | 見た目とCopyBuffer値を混同しないようにします。 | PLOT_CONFIG、DRAW_STATE |
| EA handle | iCustom、handle、IndicatorRelease | OnInitで作成し、OnDeinitで解放します。 | ICUSTOM_INIT、HANDLE_RELEASE |
| EA read | CopyBuffer、BarsCalculated、shift | 取得件数、buffer番号、現在足/確定足を確認します。 | COPYBUFFER_READ、BAR_BASIS |
| repaint audit | サイン発生時刻、bar time、値変化 | リアルタイム値と確定値を分けて記録します。 | REPAINT_AUDIT、SIGNAL_RECORD |
実装時の注意点
- iCustomの戻り値がINVALID_HANDLEではないか確認する
- CopyBuffer前にBarsCalculatedを確認する
- CopyBufferの戻り値が期待本数以上か確認する
- buffer indexの意味を仕様書に残す
- BUYサイン、SELLサイン、補助値のバッファを分ける
- EMPTY_VALUE、0、価格値、フラグ値の意味を混同しない
- shift=0とshift=1の違いを明確にする
- 現在足サインと確定足サインを分ける
- 表示される矢印とEAが読む値を同一視しない
- IndicatorReleaseでハンドル解放を行う
インジケーター関数・用語の辞典表
| 関数/用語 | 役割 | 使う場面 | 確認値 | 出やすいエラー | 関連ログ |
|---|---|---|---|---|---|
| iCustom | カスタムインジケーターのハンドルを作成する | EAから外部インジケーターを読み取る時 | handle、INVALID_HANDLE、GetLastError | ファイル名違い、Inputs不一致、配置先違い | ICUSTOM_INIT、HANDLE_CHECK |
| CopyBuffer | インジケーターバッファから値を取得する | EAでサイン値やライン値を読む時 | コピー件数、buffer index、shift、配列値 | buffer番号違い、履歴不足、handle不正 | COPYBUFFER_READ、BUFFER_FAIL |
| BarsCalculated | インジケーター計算済み本数を確認する | CopyBuffer前の準備確認 | 計算済みバー数 | 初回ロード中、履歴不足、handle不正 | BARS_CALCULATED、HISTORY_WAIT |
| IndicatorRelease | インジケーターハンドルを解放する | EA終了時、再初期化時、ハンドル再作成時 | 解放対象handle | 解放漏れ、解放済みhandle参照 | HANDLE_RELEASE、DEINIT_CLEANUP |
| SetIndexBuffer | インジケーターバッファを割り当てる | カスタムインジケーター作成時 | buffer index、配列、描画/計算区分 | buffer番号不一致、バッファ数不足 | BUFFER_BIND、BUFFER_INDEX_MAP |
| OnCalculate | インジケーター計算処理を行う | カスタムインジケーターの値計算 | rates_total、prev_calculated、戻り値 | 配列範囲外、再計算範囲ミス | ONCALCULATE_STATE、CALC_RANGE |
| PlotIndexSetInteger | 描画の整数系プロパティを設定する | 矢印、線、色、描画開始位置の設定 | plot番号、プロパティ、設定値 | plot番号違い、描画不備 | PLOT_CONFIG、DRAW_STATE |
| PlotIndexSetDouble | 描画のdouble系プロパティを設定する | EMPTY_VALUEなどの描画設定 | plot番号、プロパティ、空値 | 空値判定ミス、サインなし判定ミス | PLOT_EMPTY_VALUE、DRAW_STATE |
| ArraySetAsSeries | 配列の時系列方向を設定する | 価格配列、buffer配列、Copy系取得後 | index 0の意味、配列方向 | 現在足/過去足の参照ズレ | ARRAY_SERIES_STATE、SHIFT_CHECK |
| indicator handle | インジケーターを識別するハンドル | iCustom、iMA、iATR、CopyBufferで使用 | handle値、INVALID_HANDLE | 無効handle、解放済みhandle参照 | HANDLE_CHECK、INDICATOR_READY |
| buffer index | 読み取るインジケーターバッファ番号 | CopyBufferでBUY/SELL/補助値を読む時 | 0、1、2などの番号と値の意味 | BUY/SELL取り違え、補助値誤読 | BUFFER_INDEX_MAP、BUFFER_VALUE |
| shift | どの足の値を読むかの位置 | 現在足、確定足、過去足の判定 | 0、1、2以降 | 現在足と確定足の混同 | SHIFT_CHECK、BAR_BASIS |
開発依頼前に整理する情報
インジケーター開発やEA連携まわりの不具合調査・改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | サイン取得、矢印表示、ライン表示、通知、EA連携など | iCustom側かOnCalculate側かを分けるため |
| 対象銘柄・時間足 | symbol、timeframe、ブローカー表記 | 履歴データ、MTF、マルチシンボル確認に必要です。 |
| buffer仕様 | BUY、SELL、補助値、空値、buffer番号 | EA側のCopyBuffer対象を確認するため |
| 判定足 | 現在足か確定足か | shift=0 / shift=1の整理に必要です。 |
| リペイント確認 | 過去サインが変わるか、現在足で変化するか | EA連携や検証の再現性に影響するため |
| Expertsログ | iCustom、CopyBuffer、handle、buffer値のログ | EA内部の取得状態を追うため |
| Journalログ | 端末側ログ | 読み込みや端末状態を確認するため |
| setファイル | EAとインジケーターのInputs設定 | 引数順序や設定差を再現するため |
| スクリーンショット | チャート、設定画面、ログ、サイン表示 | 表示とEA内部値を照合するため |
| 再現手順 | どの操作・条件で発生したか | OnInit、OnTick、OnCalculate、OnChartEventなどの発生箇所を特定するため |
送ってはいけない情報:口座パスワード、投資家パスワード、Webhook URL、GAS URL、APIキー、認証トークン、口座番号の全桁、個人情報は、そのまま送らないでください。必要に応じて必ずマスクしてください。
関連するMQL5技術辞典
インジケーター関数の確認では、関数全体、エラーコード、時系列取得、ファイル操作、チャート表示、列挙型、標準ライブラリの理解も関係します。関連するMQL5技術辞典もあわせて確認してください。
| 技術辞典 | 確認できる内容 | リンク |
|---|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest、Strategy Tester関連エラーを確認できます。 | MQL5エラーコード辞典 |
| MQL5関数辞典 | EA・インジケーター開発で使う主要関数を、目的別・確認ログ別に確認できます。 | MQL5関数辞典 |
| MQL5注文関数・取引構造体辞典 | OrderSend、OrderCheck、MqlTradeRequest、MqlTradeResult、TRADE_RETCODEなどを確認できます。 | MQL5注文関数・取引構造体辞典 |
| MQL5ポジション・注文・約定・履歴用語辞典 | Order、Position、Deal、History、ticket、magic、commentなど、取引管理で混同しやすい用語を確認できます。 | MQL5ポジション・注文・約定・履歴用語辞典 |
| MQL5時系列・価格取得関数辞典 | CopyRates、CopyClose、iClose、iTime、SymbolInfoDouble、TimeCurrentなどを確認できます。 | MQL5時系列・価格取得関数辞典 |
| MQL5ファイル操作関数辞典 | FileOpen、FileRead、FileWrite、FileClose、FILE_COMMON、CSV出力、ログ保存を確認できます。 | MQL5ファイル操作関数辞典 |
| MQL5チャートオブジェクト辞典 | ObjectCreate、ObjectSetInteger、ObjectSetString、OBJ_LABEL、OBJ_BUTTON、OnChartEventなどを確認できます。 | MQL5チャートオブジェクト辞典 |
| MQL5列挙型・定数辞典 | ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ORDER_FILLING、POSITION_TYPE、SymbolInfo系定数などを確認できます。 | MQL5列挙型・定数辞典 |
| MQL5標準ライブラリ辞典 | CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoなどを確認できます。 | MQL5標準ライブラリ辞典 |
確認ポイント:インジケーター連携では、iCustomのhandle、BarsCalculated、CopyBuffer戻り値、buffer index、shift、EMPTY_VALUE、現在足・確定足の扱いをセットで確認してください。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5インジケーター開発・EA連携完全ガイド | iCustom、CopyBuffer、buffer設計、EA連携、リペイント確認に使えます。 |
| MQL5時系列データ・価格取得完全ガイド | CopyRates、iClose、iTime、現在足、確定足の確認に使えます。 |
| MQL5デバッグ・ログファースト開発完全ガイド | CopyBuffer失敗、handle不正、buffer値確認、ログ追跡に使えます。 |
| MT5インジケーター商品の選び方 | インジケーター利用前の確認項目を整理できます。 |
| MT5 EA・インジケーター開発代行の選び方 | EA作成、インジ作成、EA連携、改修依頼の違いを確認できます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
FAQ
iCustomで何を確認すればよいですか?
インジケーター名、配置先、Inputs順序、対象symbol、timeframe、handleがINVALID_HANDLEではないかを確認してください。失敗時はGetLastErrorとExpertsログも確認します。
CopyBufferが失敗する場合は何を確認しますか?
handleが有効か、BarsCalculatedが十分か、buffer indexが正しいか、必要本数を取得できているか、GetLastErrorが何かを確認します。現在足と確定足の扱いも確認してください。
buffer indexとは何ですか?
インジケーターバッファの番号です。CopyBufferでどの値を読むかを指定します。BUYサイン、SELLサイン、ライン値、補助値で番号が違うため、仕様書やログで確認する必要があります。
shift=0とshift=1は何が違いますか?
shift=0は現在形成中の足、shift=1は1本前の確定足として扱う場面が多いです。現在足は値が変化する可能性があるため、EA連携ではどちらを使うか明確にしてください。
チャートに矢印が出ていればEAもサインを読めていますか?
必ずしもそうではありません。チャート表示とCopyBufferで取得する値は別に確認してください。表示用bufferとEA判定用bufferが異なる場合もあります。
リペイントしないかどうかはどう確認しますか?
現在足で値が変わるのか、確定足で固定されるのか、過去バー再計算があるのか、サイン発生時のbuffer値をログに残して確認します。用途に応じて、現在足サインと確定足サインを分けてください。
SetIndexBufferはEA利用者にも関係ありますか?
EA利用者が直接触ることは少ないですが、EAがどのbufferを読んでいるかには関係します。EA連携の不具合では、SetIndexBuffer側の割り当てとCopyBuffer側のbuffer indexが一致しているか確認します。
IndicatorReleaseは必ず必要ですか?
EAでインジケーターハンドルを作成した場合、終了時や再初期化時にIndicatorReleaseで解放する設計が安全です。長時間稼働や複数ハンドル利用では特に確認してください。
EA化を依頼する前に何を整理すればよいですか?
インジケーター名、バージョン、Inputs設定、BUY/SELLのbuffer index、サイン値、EMPTY_VALUE、shift、現在足/確定足、リペイント有無、Expertsログ、スクリーンショット、再現手順を整理してください。
この記事にない項目はどのように確認すればよいですか?
まず公式リファレンス、MetaEditorのコンパイル結果、Expertsログ、Journalログ、実際のチャート表示を確認してください。EA連携が関係する場合は、iCustom、CopyBuffer、buffer index、shift、サイン値を整理して確認します。
まとめ
MQL5のインジケーター関数では、インジケーター作成側のOnCalculate、SetIndexBuffer、PlotIndexSet系と、EA連携側のiCustom、BarsCalculated、CopyBuffer、IndicatorReleaseを分けて理解することが重要です。
EAからインジケーター値を読む場合は、iCustomのhandle、CopyBufferの戻り値、buffer index、shift、EMPTY_VALUE、現在足・確定足の扱いをセットで確認してください。
リペイント確認では、現在足サイン、確定足サイン、過去バー再計算、buffer値の固定、ログ記録を分けて確認します。チャートに見えているサインとEA内部で読んでいる値が一致しているかも確認が必要です。
不具合調査や開発依頼を行う場合は、EA名、インジケーター名、バージョン、銘柄、時間足、setファイル、buffer仕様、shift、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。

