MARKET
9/25 8:27 時点|ドル円158.78▼-7 pips|ドル円 予想レンジ158.41 〜 159.23|ドル円 上の節目158.90▲|ドル円 下の節目157.80▼|ユーロドル1.1378▼-2 pips|ユーロドル 予想レンジ1.1351 〜 1.1408|ユーロドル 上の節目1.1403▲|ユーロドル 下の節目1.1359▼|きょうの指標重要指標なし|

iCustom ― 他のインジケーターの値を呼び出す|MQL4/MQL5リファレンス

MQLリファレンス›関数インジケーター呼び出しiCustom
MQL4 / MQL5 両対応インジケーター呼び出し要書き換え(MQL5)

iCustom他のインジケーターの値を呼び出す

別のインジケーターが計算した値を、EAや別のインジケーターから読む関数。MQL4とMQL5で「戻ってくるものの意味」が根本から変わるため、書き換えの実務ではこの関数がいちばん詰まりやすい。

1書式

double iCustom(
   string symbol, int timeframe,
   string name,           // インジケーターのファイル名
   ...,                   // インジケーター側のinput引数
   int mode,              // バッファ番号
   int shift              // 足の番号
);

MQL4は値をその場で返す。MQL5はハンドル(番号の切符)を返すだけで、実際の値はCopyBufferで改めて取りに行く2段構えになる。

2引数

引数 内容
symbol / timeframe 調べたい銘柄と時間足。NULL・0(またはPERIOD_CURRENT)でいまのチャート
name インジケーターのファイル名(拡張子なし)。サブフォルダに入っている場合は経路も含める
…(インジケーター側の引数) 呼び出す側のinput変数の並びと合わせる。ずれると違う設定で計算されてしまう
mode MQL4のみ 読みたいバッファの番号(0から)
shift MQL4のみ 何本前の足の値か

3戻り値

MQL4はバッファの値そのもの(double)。値が無ければEMPTY_VALUE。MQL5はインジケーターのハンドル(int)。失敗するとINVALID_HANDLE。値を読むには、このハンドルをCopyBufferに渡す。

4実際に動かした結果

MQL4は値が直接返る。MQL5はハンドル→CopyBufferの2段階

MQL4 iCustom(…) 値(double)

MQL5 iCustom(…) ハンドル CopyBuffer → 値

✓ 実測

自作インジケーターをEA側から呼んだときの挙動。

状況 結果
インジ側のOnCalculateが0を返すよう変えた MQL5側でCopyBufferが値を取れなくなった
ハンドルを毎ティック作り直した 処理が重くなった(ハンドルはOnInitで1回作れば足りる)

5使用例:MQL5でADX(14)の値を読む

int h = iCustom(_Symbol, PERIOD_CURRENT, "ADX", 14);
double buf[];
ArraySetAsSeries(buf, true);
if(CopyBuffer(h, 0, 0, 3, buf) > 0)
   Print("直近の値: ", buf[0]);

MetaEditor(MQL5)でコンパイル0エラー・0警告を確認済み。

6MQL4→MQL5の違い

🔁 差分

「値を直接受け取る」から「ハンドルを取ってから値を取りに行く」への転換。MQL4のコードで毎回iCustom(...)を呼んでいた箇所は、MQL5ではハンドルをOnInitで1回だけ作り、以降はCopyBufferだけを呼ぶ形に書き直す。

この転換に気づかず、iCustomを毎ティック呼んでハンドルを作り直すコードは、動きはするが重くなる。

7よくある罠

⚠ 実務で踏んだもの
  • 呼ばれる側のインジケーターがOnCalculateで0を返すと、iCustom側は値を読めない(MQL5は戻り値を「計算済みの本数」として扱うため)。詳しくは差分ノートを参照。
  • 呼び出す側の引数の並びが、呼ばれる側のinputの並びと1つでもずれると、気づかないまま違う設定で計算された値を受け取ることになる。エラーは出ない。

8関連する関数

CopyBufferIndicatorReleaseOnCalculate
公式リファレンス:MQL4 / MQL5(英語・要約は転載しません)

MORNING BRIEF平日 毎朝7時までに更新

今日はどこを見ればいいか。

ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。

朝刊を見る→
9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし
REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。