【無料MT4スクリプト】市場ごとの高値・安値を色分け表示|時間帯ブレイクアウトを視覚化するMarket Zoneの使い方

Market Zoneのアイキャッチ

MT4チャートに「アジア・ヨーロッパ・アメリカ」各市場の時間帯ごとの高値・安値ゾーンを色分け表示できたら、トレード判断がもっと視覚的でわかりやすくなります。

この記事では、無料で使えるMT4スクリプト「Market Zone」を使って、各市場の価格帯を自動的にチャートに描画する方法を詳しく解説します。ブレイクアウト戦略やレンジ戦略などに活かせる視覚ツールとして、初心者から上級者まで活用できる内容です。

▼このツールは無料でダウンロードしてすぐ使えます
(インストール手順や設定方法も画像付きで解説)

💡今すぐ使ってみたい方はこちら

以下のボタンから、MT4対応の無料スクリプト「Market Zone」をダウンロードできます。チャートにセットするだけで、各市場時間帯ごとの高値・安値ゾーンが自動で色分けされます。

▼Market Zoneの無料ダウンロードはこちら

Market Zoneを使用して市場を簡単に色分けできる
目次

Market Zoneとは?|市場ごとの高値と安値を視覚的に色分けできるMT4スクリプト

FX市場は24時間動いていますが、アジア・ヨーロッパ・アメリカといった市場の切り替わりによって値動きの特徴やボラティリティが大きく変化します
「Market Zone」は、こうした市場時間帯ごとにチャート上の高値・安値を自動で色分け表示するMT4対応の無料スクリプトです。

チャートにゾーンごとの価格帯が長方形で描画されるため、市場ごとの重要なサポート・レジスタンスの可視化やブレイクアウトポイントの発見に役立ちます。視覚的に明確な価格帯を把握できるため、裁量トレードや戦略の立案にも活用しやすいツールです。

Market Zoneの概要とできること

「Market Zone」は、以下のような機能を備えた視覚補助型スクリプトです。

  • アジア・ヨーロッパ・アメリカ市場の時間帯を色分けしてチャート上に表示
  • ✅ 各市場の高値・安値を自動計算し、範囲を長方形で描画
  • ✅ 表示する日数・時間帯・色の変更も自由にカスタマイズ可能
  • ✅ 裁量トレードでのブレイクアウト・反発戦略の判断補助に最適

市場ごとの動きを視覚的に整理することで、分析効率の向上や無駄なエントリーの抑制にもつながります。

対象となる市場と時間帯(アジア・欧州・米国)

初期設定では、以下の時間帯がそれぞれの市場として設定されています(日本時間):

市場時間帯特徴
アジア市場3:00〜9:00比較的落ち着いたレンジ傾向
欧州市場9:00〜16:00トレンド発生しやすく値動き活発
米国市場16:00〜23:00経済指標などで大きな変動あり

これらの時間帯はスクリプトのパラメーターから変更可能なので、自身のブローカー時刻やトレードスタイルに合わせて最適化できます。

Market Zoneのダウンロードと導入手順

Market Zoneは無料で利用できるMT4対応のスクリプトです。ここでは、安全かつ確実に導入できるよう、ダウンロード・インストール・初期設定の手順をわかりやすく解説します。

スクリプトのダウンロード方法

以下のボタンから、Market Zoneスクリプト(.ex4ファイル)を無料でダウンロードできます。

ダウンロードしたファイルは、MT4のスクリプトフォルダへ移動することで利用可能になります。ファイルの安全性は確認済みですが、信頼できる環境でのみご利用ください

MT4へのインストール方法と注意点

  1. MT4を起動し、「ファイル」>「データフォルダを開く」を選択
  2. MQL4フォルダ内のScriptsを開きます
  3. ダウンロードしたMarket Zone.ex4ファイルをそこにコピーします
  4. MT4を再起動します
データフォルダのスクリプトフォルダ
データフォルダのスクリプトフォルダ

インストール後は、MT4のナビゲーターウィンドウからスクリプトを選択し、任意のチャートにドラッグ&ドロップすることで起動できます。

注意点:

  • 「自動売買」をONにしておく必要はありません(スクリプト型のため)
  • 既存のインジケーターと重なった場合は、描画オブジェクトが見づらくなる場合があります

パラメーター設定の概要とカスタマイズの例

Market Zoneでは、以下のようなパラメーターを自由に設定できます。

Market Zoneパラメーター
Market Zoneのパラメーター
パラメーター名初期設定説明
asiaColorBlue(青)アジア市場のゾーン色
europeColorYellow(黄)ヨーロッパ市場のゾーン色
americaColorPink(ピンク)アメリカ市場のゾーン色
asiaStartHour3アジア市場の開始時間(日本時間)
asiaEndHour9アジア市場の終了時間
europeStartHour9ヨーロッパ市場の開始時間
europeEndHour16ヨーロッパ市場の終了時間
americaStartHour16アメリカ市場の開始時間
americaEndHour23アメリカ市場の終了時間
numDays5過去にさかのぼって表示する日数

時間帯の設定は、取引するFX業者のサーバー時刻や個人のトレードスタイルに合わせて調整が可能です。色の設定も自由に変更できるため、視認性や好みに応じて最適な表示を実現できます

Market Zoneの使い方|チャートへの表示方法と活用イメージ

Market Zoneのスクリプトをインストールしたら、次は実際にチャート上へ表示させてみましょう。設定や操作はとてもシンプルで、初心者の方でもすぐに使いこなせます。

ナビゲーターからの呼び出しとセット方法

  1. MT4左側の「ナビゲーターウィンドウ」を開く
  2. 「スクリプト」カテゴリ内にある「Market Zone」を探します
  3. 任意のチャートへドラッグ&ドロップするか、ダブルクリックで起動

スクリプトを実行すると、設定した日数分の市場ゾーン(アジア・欧州・米国)が自動的に描画されます。

✅ スクリプトの性質上、一度の実行ごとに描画されるため、毎日または必要時に再実行する仕様です。定期的な表示更新が必要な場合は注意してください。

色分けゾーンの見方と高値・安値ラインの確認

表示されるゾーンは、各市場の始まりと終わりの時間帯における高値と安値の範囲で描かれた長方形です。

対応市場表示される範囲
アジア市場例:3:00~9:00の高安
欧州市場例:9:00~16:00の高安
ピンク米国市場例:16:00~23:00の高安

このゾーンが、サポートライン・レジスタンスラインとして機能することが多く、ブレイクや反発の判断材料になります。

📌 重要ポイント:ローソク足のヒゲ部分も含めて高値・安値を算出しているため、ゾーンの端にタッチした後の値動きに注目するのが効果的です。

時間帯の設定変更と色のカスタマイズ

Market Zoneのパラメーターは、起動時のダイアログから簡単に変更可能です。

  • 市場ごとの時間帯(例:アジア市場 3:00〜9:00 など)を変更したい場合は、asiaStartHoureuropeEndHour などの数値を編集
  • 色を変えたい場合は、asiaColor などで任意のカラーに設定可能

💡 カラー変更のコツ:背景が白系なら「薄めの色」、背景が黒系なら「濃い色」を選ぶと視認性が向上します。

自分のトレード環境やスタイルに合わせて調整しながら、見やすいチャート環境を構築していきましょう。

Market Zoneを活用したトレード戦略の考え方

Market Zoneで色分けされた各市場ゾーンは、**その時間帯に形成された高値と安値という“意識されやすい価格帯”**を示しています。このゾーンを活用することで、ブレイクアウトや反発の戦略判断がしやすくなり、トレードの精度を高めることが可能です

ゾーンブレイクアウトを狙う基本戦略

たとえば、アジア時間に形成されたゾーンを欧州時間以降に上抜け・下抜けしたタイミングは、ブレイクアウトの初動とされ、エントリーポイントとなることがあります。

Market Zoneチャート
Market Zoneを使ってブレイクアウトを狙う

✅ エントリーの基本パターン

  • アジア時間のゾーン上限を欧州開始後に上抜け → 買いエントリー
  • 欧州ゾーンの下限を米国時間に下抜け → 売りエントリー

このように、時間帯ごとの切り替わりでゾーンを突破する動きは、トレンドの転換や継続の起点になることが多いため、順張り戦略に向いている手法です。

⚠ 注意点:ブレイク直後は「ダマシ」の可能性もあるため、上位足のトレンド確認や、ブレイク後のローソク足の形状確認が推奨されます。

反発・レンジ狙いのトレード戦略

値動きがゾーン内にとどまる場面では、ゾーン内での高値・安値を活用した逆張り戦略も有効です。

✅ 反発狙いの基本パターン

  • アジア時間のゾーン内で上下動を繰り返す → レンジトレード
  • ゾーンの上限・下限での反発を確認後に逆張りエントリー

このアプローチは、特にボラティリティの低い時間帯や、経済指標発表前の静かな相場で有効です。

💡 補足:ゾーン内の価格帯でピンバーやインサイドバーが出現した場合、反転のシグナルとみなしてエントリーの判断材料にできます。

他インジケーターとの併用方法と注意点

Market Zoneは単体でも視覚的なサポートになりますが、以下のようなインジケーターと併用することで分析の信頼性を高めることができます

組み合わせインジケーター使い方の例
ボリンジャーバンドゾーン上限とバンド上限の重なりで逆張り
RSI・ストキャスゾーン内での買われすぎ・売られすぎ判断
移動平均線(MA)ゾーンブレイク後のトレンド方向の確認

ただし、判断材料が多すぎるとエントリーが遅れたり、迷いが生じる原因にもなります。
大切なのは、自分のトレードルールに沿って「ゾーンをどう使うか」を明確にしておくことです。

🎯 ポイント:Zoneは“チャートの背景”として意識する補助ツール。主役は自分の戦略とルールであり、Zoneはその補強役です。

チャート整理に便利|オブジェクト一括削除ツールとの併用

Market Zoneを使ってチャート上に市場ごとのゾーンを描画すると、時間が経つにつれてオブジェクト(長方形)が増えて視認性が下がることがあります。
そんなときに便利なのが、描画済みのオブジェクトをまとめて削除できる補助スクリプト「DeleteAll-or-Trendline」です。

不要なラインやゾーンを手作業で消す必要がなく、ワンクリックでスッキリ整理できるため、日々のチャート管理が圧倒的に効率化します。

DeleteAll-or-Trendlineを使えばチャートのオブジェクトを簡単に削除できる

DeleteAll-or-Trendlineの概要

「DeleteAll-or-Trendline」は、MT4上に描画されたオブジェクトを一括で削除できる無料スクリプトです。名前の通り、すべてのオブジェクトを削除するか、トレンドラインだけを選んで削除するかを切り替え可能で、用途に応じて柔軟に使えます。

主な機能:

  • ✅ チャート上の全オブジェクトを一括削除
  • ✅ トレンドラインのみを選択削除(モード切替式)
  • ✅ Market Zoneの描画ゾーンやインジケーターのライン整理に最適

🎈 スクリプトは軽量で、実行後すぐに結果が反映されます。特に複数チャートを並行して分析している方におすすめです。

「DeleteAll-or-Trendline」についてはこちらからどうぞ

Market Zoneとの併用で管理効率アップ

Market Zoneは日数分のゾーンを描画するため、長期間使用するとチャートが視覚的に煩雑になることがあります
その際に「DeleteAll-or-Trendline」を併用すれば、ワンクリックでゾーンごとの長方形オブジェクトを削除でき、次の分析や描画更新がスムーズに行えます

✅ おすすめの活用例:

  • 毎朝チャートを開く前に、前日のゾーンを一括削除して再描画
  • トレード終了後にチャートを整理して記録・振り返り用に保存

Market ZoneとDeleteAll-or-Trendlineをセットで使うことで、視認性の高いチャート環境を常に保ち、トレード判断に集中できる環境づくりが可能になります。

この記事で紹介したスクリプトのように、取引効率を上げる無料ツールをお探しの方へ
当サイトの無料EA一覧ページでは、実用性の高い自動売買ツールを多数紹介しています。

👉 無料EAを探す

Market ZoneのMQL4ソースコードと技術解説

Market Zoneは、MQL4で記述されたスクリプトとして提供されており、チャート上に高値・安値ゾーンを描画する処理がすべてコードに組み込まれています。このセクションでは、学習者向けにコードの構造と主要処理の役割をわかりやすく解説します。

コード全文(学習用)

#property show_inputs
#property strict
//+------------------------------------------------------------------+
// Input parameters
input color asiaColor = clrBlue;       // アジア時間の色
input color europeColor = clrYellow;   // ヨーロッパ時間の色
input color americaColor = clrPink;    // アメリカ時間の色

// 各市場の開始時刻と終了時刻をパラメーター化
input int asiaStartHour = 3;           // アジア時間の開始時刻
input int asiaEndHour = 9;             // アジア時間の終了時刻
input int europeStartHour = 9;         // ヨーロッパ時間の開始時刻
input int europeEndHour = 16;          // ヨーロッパ時間の終了時刻
input int americaStartHour = 16;       // アメリカ時間の開始時刻
input int americaEndHour = 23;         // アメリカ時間の終了時刻

input int numDays = 5;                 // 遡る日数

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
    // 現在の時間を基準に過去のデータを取得
    datetime endTime = Time[0];

    // 過去numDays日分をループで処理
    for (int day = 0; day < numDays; day++)
    {
        // 各日付のタイムスタンプを取得
        datetime dayEndTime = endTime - day * 86400; // 86400秒 = 1日

        // 最新の日(今日)は現在の日付を基準に、過去の日は1日前の日付を基準にする
        datetime startTime1 = GetTimeForDay(asiaStartHour, day, endTime);
        datetime endTime1 = GetTimeForDay(asiaEndHour, day, endTime);
        datetime startTime2 = GetTimeForDay(europeStartHour, day, endTime);
        datetime endTime2 = GetTimeForDay(europeEndHour, day, endTime);
        datetime startTime3 = GetTimeForDay(americaStartHour, day, endTime);
        datetime endTime3 = GetTimeForDay(americaEndHour, day, endTime);

        // 各期間の高値と安値を計算
        double highestPrice1 = HighBetween(startTime1, endTime1);
        double lowestPrice1 = LowBetween(startTime1, endTime1);
        double highestPrice2 = HighBetween(startTime2, endTime2);
        double lowestPrice2 = LowBetween(startTime2, endTime2);
        double highestPrice3 = HighBetween(startTime3, endTime3);
        double lowestPrice3 = LowBetween(startTime3, endTime3);

        // 長方形のオブジェクト名を生成(過去の日付を含めたユニークな名前にする)
        string rectangleName1 = "Rectangle1_" + IntegerToString(day);
        string rectangleName2 = "Rectangle2_" + IntegerToString(day);
        string rectangleName3 = "Rectangle3_" + IntegerToString(day);

        // チャート上に既に同じ名前のオブジェクトがある場合は削除
        if (ObjectFind(0, rectangleName1) >= 0)
            ObjectDelete(0, rectangleName1);
        if (ObjectFind(0, rectangleName2) >= 0)
            ObjectDelete(0, rectangleName2);
        if (ObjectFind(0, rectangleName3) >= 0)
            ObjectDelete(0, rectangleName3);

        // 長方形オブジェクトを作成
        CreateRectangle(rectangleName1, startTime1, highestPrice1, endTime1, lowestPrice1, asiaColor);
        CreateRectangle(rectangleName2, startTime2, highestPrice2, endTime2, lowestPrice2, europeColor);
        CreateRectangle(rectangleName3, startTime3, highestPrice3, endTime3, lowestPrice3, americaColor);
    }

    Print("Rectangles for past ", numDays, " days drawn successfully.");
}

//+------------------------------------------------------------------+
//| 日付と時間を基に正確な時刻を計算する関数                          |
//+------------------------------------------------------------------+
datetime GetTimeForDay(int hour, int day, datetime currentTime)
{
    // 現在の日付の場合、時間をそのまま使用
    if (day == 0)
        return currentTime - (currentTime % 86400) + hour * 3600;

    // 過去の日付の場合、過去の時間を計算
    return currentTime - day * 86400 - (currentTime % 86400) + hour * 3600;
}

//+------------------------------------------------------------------+
//| 長方形オブジェクトを作成する関数                                  |
//+------------------------------------------------------------------+
void CreateRectangle(string name, datetime startTime, double startPrice, datetime endTime, double endPrice, color rectangleColor)
{
    if (!ObjectCreate(0, name, OBJ_RECTANGLE, 0, startTime, startPrice, endTime, endPrice))
    {
        Print("Error creating rectangle: ", GetLastError());
        return;
    }
    ObjectSetInteger(0, name, OBJPROP_COLOR, rectangleColor); // 色
    ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);              // 枠線の太さ
    ObjectSetInteger(0, name, OBJPROP_STYLE, STYLE_SOLID);    // 枠線のスタイル
    ObjectSetInteger(0, name, OBJPROP_BACK, true);            // 背景に描画するか
}

//+------------------------------------------------------------------+
//| 指定された時間範囲内の高値を取得する関数                          |
//+------------------------------------------------------------------+
double HighBetween(datetime startTime, datetime endTime)
{
    double highest = -DBL_MAX;
    for (int i = 0; i < Bars; i++)
    {
        if (Time[i] >= startTime && Time[i] <= endTime)
        {
            if (High[i] > highest)
            {
                highest = High[i];
            }
        }
    }
    return highest;
}

//+------------------------------------------------------------------+
//| 指定された時間範囲内の安値を取得する関数                          |
//+------------------------------------------------------------------+
double LowBetween(datetime startTime, datetime endTime)
{
    double lowest = DBL_MAX;
    for (int i = 0; i < Bars; i++)
    {
        if (Time[i] >= startTime && Time[i] <= endTime)
        {
            if (Low[i] < lowest)
            {
                lowest = Low[i];
            }
        }
    }
    return lowest;
}
//+------------------------------------------------------------------+

主要関数と処理の流れ解説(OnStart/描画/時間計算など)

Market Zoneの処理は、以下のような構成で動作しています:


OnStart()関数(スクリプトの起点)

この関数はスクリプト実行時に一度だけ呼び出され、描画対象となる各市場の時間帯と価格範囲を計算し、それをもとにゾーンを描画する流れを担っています。

主な処理内容:

  • 表示対象の日数(numDays)をループ
  • 各市場の開始・終了時間をGetTimeForDay()で取得
  • 対象時間内の高値・安値を計算(HighBetween() / LowBetween()
  • CreateRectangle()でゾーンを描画

GetTimeForDay()関数(市場時間の算出)

この関数では、過去の日数分をさかのぼって正確な市場開始・終了時間を計算します。MQL4では時間処理にズレが生じやすいため、このような関数での補正が重要です。


CreateRectangle()関数(ゾーンの描画処理)

指定された開始・終了時間と高値・安値をもとに、チャート上に長方形オブジェクトを描画します。色や太さ、背景描画などのプロパティもここで設定されます。


HighBetween() / LowBetween()関数(価格範囲の抽出)

各市場ゾーン内における最も高い価格(高値)と最も低い価格(安値)を抽出する関数です。バーを1本ずつチェックし、条件に合致した最高値・最安値を返します。


✅ 処理全体のイメージ図(概要)

[OnStart]
└ 各市場の日付ごとに処理
├ GetTimeForDay → 時間算出
├ High/LowBetween → 高値・安値取得
└ CreateRectangle → 長方形を描画

このように、ゾーンの生成はすべてコードで自動化されており、スクリプト実行のたびに最新の市場状況に基づいた描画が行われます

安全にスクリプトを使うために|MT4初心者向けの注意点

Market Zoneは便利なツールですが、MT4に外部スクリプトを導入する場合には、いくつかの基本的な安全対策を意識することが大切です。ここでは、初心者の方にもわかりやすく、スクリプトの安全な利用方法と注意点を解説します。

スクリプト利用前のバックアップ

外部スクリプトをMT4に追加する前には、念のためMT4の設定やチャートテンプレートのバックアップを取ることを推奨します。

✅ バックアップするべき項目

  • 現在のチャート設定(テンプレート保存)
  • 自動売買の設定状況
  • MQL4/ScriptsIndicatorsフォルダの構成

これにより、万が一表示エラーやチャートレイアウトの崩れが発生しても、すぐに元の状態に戻すことが可能です。

自動売買設定とインジケーター干渉リスク

Market Zoneはスクリプト型であり、自動売買(EA)とは異なるため、「自動売買の許可」は不要です。

ただし、以下の点には注意が必要です:

  • 他のインジケーターやスクリプトと同じチャートに重ねすぎると描画が重なり、視認性が低下する可能性があります
  • 描画オブジェクトの数が増えると、チャートが重くなる・応答が遅くなることもあります

必要に応じて、オブジェクトの一括削除スクリプトを活用し、表示環境を常に整えることが大切です。

情報利用上の注意

当サイトで紹介しているスクリプトは、トレード判断を補助する目的で提供しています。あくまで「投資判断の最終責任は利用者ご自身にある」ことをご理解ください。

  • 本ツールは将来の利益を保証するものではありません
  • ご利用は、ご自身の裁量と責任において実施してください
  • 必ず、デモ口座等で十分な動作確認と検証を行った上で、本番環境に導入してください

まとめ|Market Zoneで時間帯ごとの値動きを直感的に把握しよう

Market Zoneは、アジア・ヨーロッパ・アメリカといった主要市場ごとの高値・安値ゾーンを色分けしてチャートに表示できる無料スクリプトです。
価格帯の視覚化によって、ブレイクアウトの判断や反発ゾーンの特定がより直感的に行えるようになり、裁量トレードの精度向上に貢献します。

また、パラメーター設定で時間帯や色を自由にカスタマイズできるため、自分のトレードスタイルに最適なチャート環境を構築できるのも大きな特長です。
さらに、不要になった描画オブジェクトを一括で整理できる補助ツール「DeleteAll-or-Trendline」と併用することで、効率的でストレスのない分析環境を実現できます。


✅ この記事で紹介したこと

  • 市場ごとの高値・安値ゾーンを自動描画する方法
  • MT4への安全な導入手順とカスタマイズ例
  • 実践的なトレード戦略(ブレイクアウト・レンジ反発)
  • 他インジケーターとの組み合わせや注意点

Market Zoneは、視覚的な補助ツールとして初心者から上級者まで幅広く活用可能です。分析の精度を高めたい方、時間帯別の価格変動に注目したい方は、ぜひ一度お試しください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次