MQL関数リファレンス

MQL5 テクニカル指標

CopyBuffer()

できること
インジケーターのハンドルから値を配列に読み出す
対応
MQL5

CopyBuffer() とは

MQL5 で、iMA()・iRSI()・iCustom() などで作ったインジケーターのハンドルから、指定したバッファの値を配列にコピーする関数です。MQL5 でインジケーターの値を読むときは、ほぼ必ずこの関数を使います。

CopyBuffer() の書式と引数

引数の組み合わせが違う 3 通りの書き方があります。

int CopyBuffer(
   int indicator_handle,
   int buffer_num,
   int start_pos,
   int count,
   double &buffer[]
)

int CopyBuffer(
   int indicator_handle,
   int buffer_num,
   datetime start_time,
   int count,
   double &buffer[]
)

int CopyBuffer(
   int indicator_handle,
   int buffer_num,
   datetime start_time,
   datetime stop_time,
   double &buffer[]
)
引数型省略時説明
indicator_handleint必須iMA() などが返したハンドル。
buffer_numint必須バッファの番号(0 から)。MACD なら 0 がメイン、1 がシグナル。
start_posint必須読み始めるバーの位置(0 が現在のバー、1 が確定したひとつ前のバー)。
countint必須読む本数。
bufferdouble &[]必須値を受け取る配列。
start_timedatetime必須読み始める時刻。
stop_timedatetime必須読み終える時刻。

戻り値

コピーできた本数。失敗したら -1。

CopyBuffer() の使い方(コード例)

int hMa = INVALID_HANDLE;

int OnInit()
{
   hMa = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_EMA, PRICE_CLOSE);
   return hMa == INVALID_HANDLE ? INIT_FAILED : INIT_SUCCEEDED;
}

void OnTick()
{
   double ma[];
   ArraySetAsSeries(ma, true);                 // ma[0] を新しいほうにする
   int n = CopyBuffer(hMa, 0, 0, 3, ma);       // 現在・1本前・2本前
   if(n < 3)
   {
      Print("まだ値がありません n=", n, " error=", GetLastError());
      return;
   }
   Print("EMA 現在=", ma[0], " 1本前=", ma[1], " 2本前=", ma[2]);
}

MetaEditor でコンパイルできることを確認済みです。

CopyBuffer() の注意点

  • 配列は、既定では 0 番が最も古いバーです。start_pos=1, count=2 でコピーすると、buffer[0] が2本前、buffer[1] が1本前になります。ArraySetAsSeries(buffer, true) にしておくと buffer[0] が新しいほう(1本前)になります。
  • インジケーターを作った直後は計算が終わっておらず、-1 が返ることがあります(エラー4806)。戻り値を確認し、足りなければ次のティックで読み直します。
  • 読み出す位置 start_pos は、MQL4 の shift と同じ数え方です(0 が最新)。

MQL4 と MQL5 の違い

MQL4 にはありません。MQL4 では iMA(…, shift) のように、インジケーター関数が値を直接返します。

CopyBuffer() でよく出るエラー

関連する関数

テクニカル指標の関数一覧

← 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