MARKET
MT4ツールを、数字で作る。— Team REI|平日の朝に「相場分析」を更新しています|

エラー4051(ERR_INVALID_FUNCTION_PARAMVALUE)― 渡した値がおかしい|MQLエラーコード

MQL4 / MQL5 両対応 たまに見るエラーコードERR_INVALID_FUNCTION_PARAMVALUE

エラー4051ERR_INVALID_FUNCTION_PARAMVALUE ― 関数に渡した値そのものが不正

関数に渡した値そのものが、その関数が受け付けられる範囲の外にあったときに出る。特定の1つの原因があるわけではなく、様々な関数で共通して出る「値がおかしい」の総称。

1主な原因

  • 配列の要素数や添字に、あり得ない値(負の数など)を渡した
  • 文字列操作系の関数に、範囲外の開始位置や長さを渡した
  • NULLを想定していない引数にNULLを渡した

2対処法

✓ どの引数が原因かを1つずつ絞り込む

複数の引数を持つ関数呼び出しをいきなり実行せず、怪しい引数だけ先にPrintで値を確認してから呼ぶと原因が特定しやすい。境界値(0・最大値・空文字)を渡すコードパスが無いか洗い出す。

3発生する例と直し方

// 悪い例:countがマイナスになり得るのに確認していない
int count = ArraySize(buf) - offset;
ArrayResize(buf, count);

// 直した例:先に範囲を確認してから呼ぶ
int count2 = ArraySize(buf) - offset;
if(count2 < 0)
{
   Print("offsetが配列サイズを超えています");
   return;
}
ArrayResize(buf, count2);

4MQL5では

🔁 差分

MQL5でも同じ4051として共通。4001番台以降のランタイムエラーは、MQL4・MQL5でほぼ共通の番号体系になっている。

5関連するエラー

REI-FX&BO OFFICIAL LINE

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

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

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

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