MT5 MT5 実行時エラー

4807

定数名
ERR_INDICATOR_WRONG_HANDLE
意味
インジケーターのハンドルが不正

MT5エラー4807とは

CopyBuffer() などに、無効なインジケーターハンドルを渡したときのエラーです。ハンドルの作成(iCustom など)に失敗して INVALID_HANDLE が入っているか、IndicatorRelease() で解放済みのハンドルを使っています。

ログの表示例

CopyBuffer failed, error 4807

「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。

MT5エラー4807の主な原因

  1. iCustom() / iMA() などが失敗して INVALID_HANDLE(-1)が返ったのに、確認せずに使っている
  2. ハンドルを作らずに(初期値 0 のまま)CopyBuffer() している
  3. IndicatorRelease() で解放したハンドルを使っている
  4. MQL4 の感覚で、iMA() の戻り値を「値」として使っている

MT5エラー4807の対処法

  1. ハンドルは OnInit() で1回だけ作り、INVALID_HANDLE なら INIT_FAILED を返す
  2. 値は CopyBuffer(ハンドル, バッファ番号, 開始位置, 本数, 配列) で取り出す
  3. 毎ティック iMA() を呼び直さない(ハンドルが増え続ける)

コード例(MQL5)

// インジケーターのハンドルは OnInit で1回だけ作る(4802・4806・4807 対策)(MQL5)
input string InpIndicator = "Examples\\MACD";   // MQL5\Indicators からの相対パス(拡張子なし)
int hMA  = INVALID_HANDLE;
int hInd = INVALID_HANDLE;

int OnInit()
{
   hMA  = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE);
   hInd = iCustom(_Symbol, _Period, InpIndicator);
   if(hMA == INVALID_HANDLE || hInd == INVALID_HANDLE)
   {
      Print("インジケーターを作成できません error=", GetLastError());   // 4802 など
      return INIT_FAILED;
   }
   return INIT_SUCCEEDED;
}

bool GetMA(int shift, double &value)
{
   if(BarsCalculated(hMA) < shift + 1) return false;   // まだ計算中(4806 を防ぐ)
   double buf[];
   if(CopyBuffer(hMA, 0, shift, 1, buf) != 1)
   {
      Print("CopyBuffer error ", GetLastError());
      return false;
   }
   value = buf[0];
   return true;
}

void OnDeinit(const int reason)
{
   if(hMA  != INVALID_HANDLE) IndicatorRelease(hMA);
   if(hInd != INVALID_HANDLE) IndicatorRelease(hInd);
}

MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。

関連するエラー

MT5 実行時エラーの解説一覧

← MQLエラー解説辞典で、ほかのエラーを番号・メッセージから探す

サイバーシグナルインジケーターと8大特典プレゼント

MT4/MT5自動売買EAサイバーラッシュ無料プレゼント

MT4/MT5自動売買EAサイバードラゴン無料プレゼント

グルグルトレイン(グルトレ)EAを無料プレゼント

ライントレードEAサイバートレナビを無料プレゼント

ゴトー日の東京仲値が狙える自動売買EA

LINE友だち追加

注目記事ランキング

  1. 1

    【サクソバンクチャート】月曜日の早朝から動く為替レート

  2. 2

    【MT4/MT5対応】チャート上に手書きできる描画インジケーターの無料配布

  3. 3

    【サンデーダウ・サンデードル円】土日に動く中東レートの表示方法と見方を解説

  4. 4

    【先着50名】グルトレEAを無料プレゼントしています!

  5. 5

    保護中: 【勝率UP!】曜日や日・月別為替相場の動きでFXを見極める

  6. 6

    【MT4/MT5対応】「sign_alert」シグナルアラートやメール送信するインジケーターの無料配布

  7. 7

    無料メールマガジン「マナブ式FX」|毎朝6時、今日の為替相場予想が届く

  8. 8

    【原油・金】WTIとゴールドの商品レート一覧と見やすいチャート

  9. 9

    VQインジケーターとは?MT4/MT5版を無料配布【設定例つき】

  10. 10

    【バイナリーオプション攻略法】全勝!+497,363円の利益が出た手法とは?

TOP
CLOSE