MT4の出来高の表示と見方をFX自動売買の数値確認に役立てる

MT4の出来高は、FXのチャートでティックの回数を確認するための情報です。チャートの「出来高の表示」を有効にすると下部へ棒を出せますが、表示された数値は売買された通貨の数量や、自分が注文したロット数ではありません。
FX自動売買で数値を確かめるときは、何の出来高を、どの銘柄・時間足・日時で読んでいるかが大切です。現在の足は形成途中なので、チャートとEAを見たタイミングがずれるだけでも比較しにくくなります。
この記事ではWindows版MT4を対象に、標準の出来高表示とVolumesインジケーターの違い、棒の色と数値の読み方、確定足をiVolumeと照合する手順を整理します。表示確認を済ませてから、必要な値だけを比較できるようにしましょう。
- ティック回数と取引数量を区別して出来高の意味を読む
- チャート内の表示と別ウィンドウのVolumesを使い分ける
- 棒の色だけで売買方向を判断せず数値を確認する
- 確定足の日時を合わせてiVolumeの値と照合する
MT4の出来高を表示して意味と数値を読む

ティック回数と取引数量を分ける
まず区別したいのは、「価格更新が何回あったか」と「何ロットの注文が取引されたか」です。MT4のFXチャートで扱う出来高は前者のティック出来高です。英語でVolumeと表示されても、それだけで通貨単位やロット数を意味するわけではありません。
MetaQuotesのVolume配列の公式仕様では、現在のチャートの各足についてティック出来高を保持すると説明されています。出来高が500だった場合は、その足のティック出来高が500という読み方をします。500ロットの売買や500人の参加者が確認できた、と読み替えることはできません。
自分の注文数量は、チャートの棒とは別に扱います。たとえば注文のロット数を取得するMQL4の関数はOrderLotsです。同じ「volume」という言葉が説明に出てきても、足に付いたティック回数なのか、選択した注文の取引数量なのかを対象から見分けてください。
| 見たい情報 | 確認する対象 | 混同しない点 |
|---|---|---|
| その足のティック回数 | チャートの出来高・Volumes・iVolume | 取引ロット数へ換算しない |
| 自分の注文の数量 | 注文・口座履歴にあるロット数 | チャートの棒から注文量を推測しない |
| 価格が上がったか下がったか | ローソク足の始値と終値など | 出来高の色だけで方向を決めない |
ここで対象にしているのは、標準機能の時間足ごとの出来高です。追加の価格帯別インジケーターが独自に集計した値や、取引所の約定データとは、集計対象も表示の単位も分けて考えます。別のツールの数字をそのまま標準のVolumesと比較する前に、何を数えているか確認しましょう。

チャート内の出来高を表示する
ローソク足と同じ画面の下側に棒を出したい場合は、対象チャートの表示設定を使います。複数のチャートを開いているときは、操作前に銘柄名と時間足を見て、変更するチャートをクリックしてください。出来高の表示設定は、各チャートで個別に確認します。
チャートを右クリックして「プロパティ」を選びます。上部の「チャート」メニューから選ぶか、F8でも開けます。
「全般」にある「出来高の表示」にチェックを入れて確定します。英語表示ではCommon内のShow volumesに対応します。
価格の足と同じ横位置に出来高の棒が出ているか見ます。表示を消したいときは、同じ項目のチェックを外します。
表示と非表示の切り替えはCtrl+Lでもできます。これは出来高を画面へ出す操作であり、EAの売買条件に出来高を追加する操作ではありません。表示が切り替わったことと、自動売買ロジックが変更されたことを結び付けないようにします。
操作の根拠はMT4公式ヘルプのチャート設定です。同ヘルプには、スケールを固定しているとこの出来高表示が機能しないという条件もあります。チェック済みなのに棒が出ない場合は、後述の表示設定も確認してください。

別ウィンドウのVolumesと色を読む
出来高だけを独立した領域で見たい場合は、標準のVolumesインジケーターを使います。「挿入」から「インディケータ」のボリューム系項目を開き、Volumesを選びます。ナビゲーター内のインディケーター一覧から、Volumesを対象チャートへドラッグする方法もあります。項目の表記は表示言語で異なります。
チャート内へ棒を重ねる設定と、別ウィンドウへ指標を追加する操作は別です。両方を有効にすると、似た棒が二つの場所に出ても不思議ではありません。見やすい方へ整理するときも、「チャート内の表示を消した」のか「インジケーターを削除した」のかを区別すると戻しやすくなります。
別窓に出すVolumesは、色の読み方も確認します。MetaQuotesが公開したMT4用Volumesのソースでは、前の足よりティック出来高が多い場合と、それ以外の場合で棒を色分けしています。この公開コードの初期色は緑と赤で、同じ値の場合は後者に入る実装です。これは公開サンプルの仕様であり、利用中の版や変更済みの指標は設定と提供元の説明も確認してください。
したがって、緑の棒を「買い注文が多い」、赤の棒を「売り注文が多い」とは読みません。色が出来高の増減を示す指標と、価格の上昇・下落を示すローソク足では、見ている条件が異なります。色を変更している場合は、緑・赤という呼び名だけに頼らず、数値と前後の足を比べます。
例として、時間順にティック出来高が300、450、320という三本の足を考えます。二本目は前の足より多く、三本目は前の足より少ないという関係です。ここには始値や終値の情報がないため、この数字だけで値上がり・値下がりは決まりません。数値は読み方を示す仮例で、実際の相場の記録ではありません。

棒の高さより対象足の数値を確かめる
棒は増減を見渡すには便利ですが、照合するときは数字に戻します。画面の大きさや表示範囲が違うチャート同士で、棒が似た高さだから同じ値、と決めないでください。出来高を調べたいローソク足へマウスポインターを合わせ、データウィンドウの日時とVolume欄を一緒に読みます。
Windows版では「表示」からデータウィンドウを開きます。Ctrl+Dでの切り替えも使えます。ここで必要なのは、情報欄の全項目を覚えることより、選んでいる足の日時を確かめ、その足の出来高を読むことです。欄の基本操作はMT4のデータウィンドウの見方で詳しく整理しています。
標準のVolumeと、追加したVolumesの項目が両方表示される場合は、どちらの欄を読んだかも区別します。カスタム指標が追加されていると、似た名前で別の計算値が並ぶことがあります。まず標準の足の出来高を基準にし、独自指標の名前が付いた数値を無条件に同じものと見なさない方が確実です。
対象足へポインターを置いても、必要な欄だけ見当たらない場合は、データウィンドウ内の右クリックから表示項目を確認します。データウィンドウの公式ヘルプには、出来高などの情報欄を表示・非表示にできることと、指標側の設定でその値を出さないこともできると説明されています。
表示されないときは設定を順に確認する
最初に、「棒が見えない」のか「数値の欄がない」のかを分けます。前者はチャートや指標の表示、後者はデータウィンドウの表示項目を確認する問題です。見えないという一つの症状から、データの消失やEAの異常と決め付けないようにしましょう。
| 状態 | 先に確認する場所 | 確認後の考え方 |
|---|---|---|
| チャート内の棒がない | 出来高の表示、スケール固定、Volumesの色 | 別窓の指標を追加したかとは分けて確認 |
| 別窓のVolumesがない | 対象チャートのインディケータ一覧 | 追加先や削除の有無を確認 |
| 特定の時間足だけ指標がない | 指標設定の表示選択・Visualization | 対象時間足を表示対象にしているか確認 |
| 数値の欄だけない | データウィンドウの表示項目、指標の表示設定 | 欄の非表示と数値ゼロを区別 |
棒の色が背景と近い場合は、見えていないだけの可能性もあります。チャート内の出来高はチャートのプロパティ、別窓の指標はその指標のプロパティで、該当する色を確認します。複数の設定をまとめて変えず、一つずつ確認すると、表示が戻った理由を把握しやすくなります。
指標の追加・編集・削除や、時間足ごとの表示選択は公式ヘルプのテクニカル指標に説明があります。出来高を見る目的なら、表示に関係する項目を確認すれば足ります。注文許可、口座の認証、EAの取引パラメーターを変更する必要はありません。
MT4の出来高をFX自動売買の参照値と照合する

現在足より確定足から比べる
画面とプログラムの値を比べる最初の対象には、一つ前の確定足が扱いやすいです。現在足はまだ形成中なので、足が終わるまでティック出来高が更新されます。形成中の値を読んだ直後に別の場所を確認すると、対象が同じでも取得時点の違いが入り込むためです。
MQL4の時系列では、現在足が0、一つ前の足が1という位置関係です。公式のVolume配列の説明でも、最新の足をインデックス0としています。足を一つ前へずらす指定をshiftと呼び、直近の確定足なら通常はshift=1として扱います。履歴が不足していないことも前提になります。
ただし、「1番の足」という番号だけを覚えておけばよいわけではありません。新しい足が始まると、それまでの現在足が1番になり、以前の1番は2番へ移ります。しばらく時間を置いてもう一度比べるときは、同じshiftが別の足を指していることがあります。照合の基準には日時も必要です。
| 対象 | shiftの例 | 出来高を読むときの注意 |
|---|---|---|
| 形成中の現在足 | 0 | 値の取得時点が違えば比較しにくい |
| 一つ前の確定足 | 1 | その足の開始日時も合わせて確認する |
| さらに過去の足 | 2以降 | 経過後も同じ番号になるとは限らない |
確定足を選ぶのは、売買判断として優れていると断定するためではありません。ここでは、画面とプログラムの数値が同じ対象を見ているか調べるためです。実際のEAが現在足を参照する設計なら、その仕様を勝手に確定足へ変えず、まず何番の足を使うか把握します。

iVolumeの引数と返り値を確認する
MQL4のiVolumeは、銘柄・時間足・shiftを指定して、その足のティック出来高を取得する関数です。iVolumeの公式仕様で、返り値はlong型とされています。名前にVolumeが入っていても、選択した注文のロット数を返す関数ではありません。
現在のチャートの直近確定足を読む指定は、iVolume(NULL, 0, 1)です。NULLは現在の銘柄、時間足の0は現在のチャートの時間足、最後の1は一つ前の足を表します。たとえばチャートがM15ならM15、H1ならH1が対象です。別の時間足を明示するコードとは、前提が異なります。
画面側で選んだ足の日時を確認するには、同じ引数のiTimeも組み合わせます。以下は、現在のチャートの一つ前の足について、開始日時とティック出来高を一回表示する確認用スクリプト例です。注文処理は含みません。この記事の例は実機でのコンパイル・動作を未検証なので、使う場合はデモ環境で確認してください。
#property strict
void OnStart()
{
if(iBars(NULL, 0) < 2) { Print("History not ready"); return; }
datetime current = iTime(NULL, 0, 0);
ResetLastError();
datetime barTime = iTime(NULL, 0, 1);
long ticks = iVolume(NULL, 0, 1);
int err = GetLastError();
if(barTime == 0 || err != 0 || current != iTime(NULL, 0, 0))
{ Print("Check history or retry. error=", err); return; }
Print("symbol=", Symbol(), " period=", Period(),
" bar=", TimeToString(barTime, TIME_DATE|TIME_MINUTES),
" ticks=", ticks);
}
この例では履歴が少ない状態を先に除き、値の取得中に新しい足へ変わった場合も再確認に回します。出力するのは銘柄、時間足、対象足の開始日時、ティック回数です。実際のEAへ組み込む場合には、そのEAの参照時間足やデータ準備処理に合わせた実装確認が必要です。
iVolumeは、ローカル履歴が読み込まれていないときにも0を返すと公式資料に記載されています。ゼロが出ただけで「その時間に市場の取引がなかった」と判断してはいけません。エラー情報や履歴の準備状態を確認し、対象足を画面で確認できる状態からやり直します。

同じ日時の足で画面と突き合わせる
照合は、銘柄と時間足を合わせるところから始めます。コードが現在チャートを参照する例なら、実行したチャートの銘柄名と時間足を確認してください。似た銘柄名でも末尾記号が違うものを選んでいたり、隣にある別時間足のチャートを見ていたりすると、数字だけ比較しても原因が分かりません。
- 出力にある銘柄名と、画面で開いている銘柄名を一致させる
- 出力の時間足と画面の時間足を一致させる
- 出力された足の開始日時と同じ足を画面で選ぶ
- その足のVolume欄を読み、出力されたticksと比較する
iTimeが返すのは足の時刻であり、現在の時計の時刻ではありません。iTimeの公式仕様では、現在チャートの足の開始時刻をTime配列で保持することも説明されています。画面上の日時と対応を調べる段階では、まずMT4で表示された日時どうしをそのまま比べると、変換による取り違えを減らせます。
例として、出力が「M15の10:00の足、ticks=420」だったとします。これは説明用の仮の数字です。画面で10:15の足や、現在時刻に近い足を選ぶのではなく、10:00開始の足へ合わせて420かを確認します。別の時間帯の足の棒が似た高さでも、比較対象の代わりにはなりません。
新しい足が始まったあとに確認を続ける場合は、「一つ前の足」ではなく、出力に残った開始日時を探します。日時から位置を求める実装にはiBarShiftがあり、指定時刻の足がない場合に近い足を返すか、-1を返すかを選べます。iBarShiftのexact指定も確認し、存在しない足を別の足で代用して一致したように扱わないでください。
一致したときに確認できるのは、その環境・対象足について画面と参照値が対応したことです。それだけでEA全体の売買条件が正しいことや、実際の取引で利益が出ることまでは確かめられません。表示値の照合を、ロジックや注文処理の検証と分けて扱います。
一致しないときは比較条件へ戻る
値が違う場合は、先に比較条件を表の順で見直します。出来高の閾値を変えたり、履歴を上書きしたりする前に、何を読んでいたかを整理する方が原因を絞りやすいです。特に「同じ通貨ペア」という説明だけでは、時間足・開始日時・配信元まで同じとは限りません。
| 比較する条件 | 確認する内容 |
|---|---|
| 銘柄 | 末尾記号を含む正確な銘柄名が同じか |
| 時間足 | 画面とコードが同じ時間足を見ているか |
| 対象足 | shiftだけでなく開始日時が同じか |
| 値の取得時点 | 現在足を別々のタイミングで読んでいないか |
| データの出所 | 同じ口座接続先・履歴を使っているか |
| 表示項目 | 標準のティック出来高と独自指標の値を混ぜていないか |
履歴データの出所も大切です。MT4公式のヒストリーセンターの説明には、ダウンロードした履歴が取引サーバーの履歴と異なる場合があると記載されています。別端末や、外部CSVを取り込んだ過去チャートと照合する場合は、同じ銘柄名・日時でもデータまで同一とは決め付けないでください。
インポートしたデータを使っているなら、出来高の列を取り込んだかも確認対象です。インポート画面にはVolumesを取り込む設定があります。過去データの準備そのものが必要な場合は、MT4のヒストリカルデータの入れ方と確認事項へ進み、本記事での表示照合とは作業を分けてください。
現在の気配値を受け取れているかを調べたい場合も、出来高の数値照合とは目的が異なります。受信状況の確認はMT4のティックチャートで気配値を確認する方法で扱っています。過去の出来高が読めたことだけで、現在の通信や発注許可まで正常とは判断しないようにします。

出来高をEAの条件に使うときは、配信元・時間足・参照する足が違えば、同じ閾値の意味も変わり得ます。ある環境で決めた数字を、別の環境へ理由なく移さないことが大切です。まず定義した条件どおりの値を取得できるかを確認し、その後で必要な検証へ進みます。
たとえば「出来高が一定以上なら判定する」という仕様を確かめる場合にも、現在足か確定足かで判定の時点が変わります。さらに値がゼロのときの処理や、履歴が準備できていないときに判定を見送るかも別の条件です。棒の見た目を見て済ませず、EAがどの値をいつ読む設計なのかを明確にしてください。
MT4の出来高は定義と確定足から確認する
MT4のFXチャートの出来高は、取引数量へ換算するための数字ではなく、足ごとのティック出来高として読みます。チャート内へ表示する設定と、別ウィンドウへ追加するVolumesを区別すれば、設定を見直す場所も整理できます。別窓の色は価格の上下や買い・売りの数量と結び付けず、前の足との数値比較として確認しましょう。
FX自動売買の参照値と照合するときは、まず直近の確定足を選び、銘柄・時間足・開始日時をそろえます。画面のVolumeとiVolumeの値が一致するかを確認し、違う場合はshift、取得時点、履歴の出所へ戻る順序です。ゼロを取引なしと即断しないことも忘れないでください。
最初の作業は、対象チャートへ出来高を表示し、一つの確定足の日時と数値を読むところまでで十分です。表示の意味を理解してから参照値を照合すると、見た目の違いとデータの違いを分けて、次に確認すべき点を判断しやすくなります。
