技術辞典

MQL5インジケーター関数辞典|iCustom・CopyBuffer・SetIndexBuffer・OnCalculate一覧

EAファンクラブ

MQL5でインジケーター開発やEA連携を行う場合、まず理解しておきたいのが、iCustomCopyBufferIndicatorReleaseSetIndexBufferOnCalculatePlotIndexSetIntegerArraySetAsSeriesbuffer indexshift の関係です。

インジケーター側では、OnCalculateで計算し、SetIndexBufferでバッファを割り当て、PlotIndexSet系で描画設定を行います。EA側では、iCustomや標準インジケーター関数でハンドルを作成し、CopyBufferで必要な値を読み取ります。

この記事では、MQL5のインジケーター関数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どの戻り値とログを確認するかを整理するための記事です。

注意:この記事はMQL5開発・インジケーター開発・EA連携・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。

MQL5インジケーター関数の全体像

MQL5のインジケーター関連処理は、インジケーターを作る側と、EAからインジケーターを読む側で確認する関数が変わります。

立場主な目的主な関数・用語確認すること
インジケーター作成側値を計算し、チャートへ表示し、バッファへ出力するOnCalculate、SetIndexBuffer、PlotIndexSetInteger、PlotIndexSetDouble計算本数、バッファ割り当て、描画設定、EMPTY_VALUE
EA連携側インジケーター値をEAから読み取るiCustom、CopyBuffer、BarsCalculated、IndicatorReleasehandle、buffer index、shift、コピー件数、GetLastError
データ配列側配列の向きや取得位置を整理するArraySetAsSeries、ArraySize、CopyBuffer、CopyRates現在足、確定足、配列添字、取得件数
検証・不具合調査側サインのズレや値取得失敗を確認するbuffer index、shift、EMPTY_VALUE、BarsCalculated、PrintFormatリペイント、現在足/確定足、サイン値、ログ整合

EA連携の基本フロー

EAからインジケーター値を使う場合は、iCustomでハンドルを作成し、BarsCalculatedで計算状態を確認し、CopyBufferで値を取得し、終了時にIndicatorReleaseでハンドルを解放する流れで考えると整理しやすくなります。

段階使うもの役割確認すること
1iCustomカスタムインジケーターのハンドルを作成するインジケーター名、Inputs順序、戻り値、INVALID_HANDLE
2BarsCalculatedインジケーターの計算済みバー数を確認する計算済み本数、履歴不足、初回ロード中かどうか
3CopyBuffer指定バッファから値を取得するbuffer index、start position、copy count、戻り値
4取得値の検証サイン有無や値の意味を判断するEMPTY_VALUE、0、価格値、フラグ値、shift
5IndicatorRelease不要になったハンドルを解放する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現在足か、指定時間足かマルチタイムフレームでは確定足の位置が変わるため
handleINVALID_HANDLEではないか無効ハンドルではCopyBufferできないため
GetLastErrorhandle作成失敗時のエラー原因調査に必要なため

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で確認すること

確認項目内容理由
handleiCustomや標準インジケーター関数で作成した有効ハンドルか無効ハンドルでは取得できないため
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番号、プロパティ、設定値、描画される位置
PlotIndexSetDoubleEMPTY_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側の確認
0BUYサイン、メインライン、または第1出力仕様書と実際の値を確認する
1SELLサイン、シグナルライン、または第2出力BUY/SELLの取り違えに注意する
2補助値、トレンド状態、フィルター値など値の意味と空値を確認する
3以降追加ライン、内部判定値、表示補助値などEAで使う値か、表示専用かを分ける

shift

shiftは、どのバーの値を見るかを示す考え方です。EA連携では、現在足の値を見るのか、1本前の確定足を見るのかを明確にします。

shift意味の目安使う場面注意点
0現在形成中の足リアルタイム表示、速報サイン、現在値確認足確定前に値が変わる場合があります。
11本前の確定足確定足判定、EAエントリー判定、検証重視サインが1本遅れて見える場合があります。
2以降さらに過去の足過去サイン確認、連続条件、履歴検証配列方向と取得本数を確認します。

確認ポイント:EA化を前提にする場合は、shift=0で現在足サインを読むのか、shift=1で確定足サインを読むのかを必ず決めてください。現在足の値は、足確定前に変化する場合があります。

リペイント確認との関係

リペイントとは、過去に表示されたサインや値が、後から変化・消失・移動する挙動を指すことがあります。すべての再計算が問題というわけではありませんが、EA連携や検証では、サインがいつ確定するのかを明確にする必要があります。

確認項目内容EA連携での注意点
現在足サイン足が確定する前に表示されるサイン値が変わる可能性を許容するか確認します。
確定足サイン足が確定してから表示されるサイン再現性は上がりやすい一方、表示は遅れます。
過去バー再計算履歴読み込みや時間足変更で過去値が再計算される検証表示とリアルタイム記録を分けます。
buffer値の固定サイン確定後に値を変えない設計EA化では確認しやすくなります。
ログ記録サイン発生時刻、bar time、buffer値を残す後から表示と判定の差を追いやすくなります。

EA利用者向けの確認ポイント

EAがインジケーターのサインを使っている場合、チャートに矢印が見えていることと、EAがそのサインを読み取れていることは別です。

確認すること内容開発者へ伝えるとよい情報
EA名・インジ名・バージョン設置しているEAとインジケーターの名称対象ファイルと仕様を特定するため
対象銘柄・時間足symbol、timeframeiCustomやCopyBufferの対象と一致しているか確認するため
setファイルEAとインジケーターのInputs設定引数順序や設定差の確認に必要です。
チャート上の表示矢印、ライン、パネル、サイン位置表示とEA内部判定の差を確認するため
ExpertsログiCustom、CopyBuffer、buffer値、shiftのログEAが値を取得できているか確認するため
Journalログ端末側ログインジケーター読み込みや端末状態を確認するため
スクリーンショットチャート、設定、ログ画面表示とログを照合するために役立ちます。

MQL5開発者向けの実装確認ポイント

MQL5開発では、インジケーター作成側とEA連携側を分けて設計することが重要です。表示系と判定系、現在足と確定足、buffer値と描画表示を混同しないようにします。

責務主な確認対象実装上の注意確認ログ
indicator calculationOnCalculate、rates_total、prev_calculated計算範囲、初回計算、再計算範囲を明確にします。ONCALCULATE_STATE、CALC_RANGE
buffer outputSetIndexBuffer、buffer index、EMPTY_VALUEEAで読む値と表示専用値を分けます。BUFFER_BIND、BUFFER_VALUE
plot displayPlotIndexSetInteger、PlotIndexSetDouble見た目とCopyBuffer値を混同しないようにします。PLOT_CONFIG、DRAW_STATE
EA handleiCustom、handle、IndicatorReleaseOnInitで作成し、OnDeinitで解放します。ICUSTOM_INIT、HANDLE_RELEASE
EA readCopyBuffer、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ログ、スクリーンショット、再現手順を整理してください。

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