市場ごとに高値と安値を色分けするMT4ツール|時間帯ブレイクアウト
MT4チャートで各市場ごとの時間帯を色分けして見やすくしたいです。
各市場の高値と安値がわかりやすくなるようにできますか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~
このページでわかること・できること
〇アジア、ヨーロッパ、アメリカ市場の高値と安値を色分けできるスクリプトについて
〇スクリプトのダウンロードとインストール
〇スクリプトの使い方
各市場ごとに高値と安値を色分けできるスクリプト|Market Zone
MT4用スクリプト「Market Zone」を使えば、アジア市場、ヨーロッパ市場、アメリカ市場と、ゾーンに分けてチャートを色分けできる。
市場ごとに高値と安値が視認できるため、市場ごとのサポート、レジスタンスのブレイクアウトがわかりやすくなる。各市場の時間帯はパラメーターから設定でき、ゾーンの色分けは自由に作成できる。
各市場が色分けされて、視覚的にわかりやすくなればゾーンのブレイクアウトなども狙いやすくなりますね。
Market Zoneのダウンロード
こちらのリンクからMT4用スクリプト「Market Zone」をダウンロードできる。スクリプトは.ex4ファイルのため、MT4のデータフォルダ「Scripts」へ移動することでインストールできる。
スクリプトのインストール
ダウンロードしたスクリプトはMT4のデータフォルダからScriptsフォルダへ移動することでインストールできる。
ファイルの移動後はMT4の再起動でインストールが完了となる。
外部のファイルをMT4へセットする手順については、以下の記事で詳しく解説している。
市場ごとに色分けする|Market Zoneの使い方
インストールが完了したスクリプトはMT4のナビゲーターから呼び出しが可能となる。
スクリプトの起動にはダブルクリック、またはチャートへドロップする。
「OK」をクリックして各市場ごとの長方形が描画される。
各市場デフォルトの時間帯設定
時間は任意で変更が可能
アジア時間 3:00から9:00
ヨーロッパ時間 9:00から16:00
アメリカ時間 16:00から23:00
トレードでゾーンブレイクアウトを狙う
市場ごとにゾーンが明確になりましたが、具体的にどうやってトレードしましょうか?
ゾーンでつけた高値と安値は意識されやすいポイントです。
その意識ポイントを生かしてトレードする、というイメージでいいと思います。
意識ポイントをブレイクしたらついていく、反発したらついていく、みたいな感じですか。
そうですね、それでもいいですが、エントリーが遅くなればストップが広くなりますね。
じゃあ、ゾーンが意識されるであろうという前提で、ブレイクを狙ったエントリー、またはレンジを狙ったエントリーをすると良さそうですね。
ということは、短期足でタイミングを計ると良さそうです。
ブレイクを狙うか?レンジを狙うか?の二択ではなく、上位足でトレンドの有無、方向などを確認し、どちらの方に優位性があるか。事前に戦略を立てておくと、ゾーンを使ったトレードが生かせそうですね。
ゾーン単体で判断するのではなく、インジケーターを合わせて使うと良い感じになりそうです。
判断材料が増えれば良い、というわけではありません。値の動きがどうなろうと、事前に準備したトレードルールを遂行するだけ、という状態にしておくのがトレードでは大切ですね。
この会話では、市場ごとのゾーンを活用したトレード手法について話し合っている。ゾーンの高値と安値は意識されやすいポイントであり、それを活用してトレードすることが重要だとしている。ブレイクや反発に基づいたエントリーが有効だが、エントリーが遅くなるとストップが広がるリスクもある。また、短期足でのタイミング計測に加えて、上位足でトレンドの有無や方向を確認し、優位性がどちらにあるかといった判断を事前にしておくことが重要だと強調している。ゾーンとインジケーターの併用も有効だが、最も大切なのは、あらかじめ決めたトレードルールに従い、値動きに左右されずに遂行することである。
オブジェクト一括削除でMarket Zoneを便利に使う
Market Zoneで各市場の高値と安値を表示し、その後チャートをクリアにしたい場合はオブジェクト一括削除のスクリプトが便利だ。動画で使用している「DeleteAll-or-Trendline」は、すべてのオブジェクトを一括で削除できるスクリプトである。このスクリプトはすべてのオブジェクトを削除できるほか、トレンドラインだけ削除といった使い方もできる便利なツールだ。Market Zoneを分析で使う場合には、「DeleteAll-or-Trendline」もあわせて入手することをおすすめする。DeleteAll-or-Trendlineの入手は以下の記事を参照。
スクリプトの特徴
このスクリプトは、市場の異なる時間帯における高値と安値を取得し、それに基づいてチャート上に長方形を描画できる。
そのため、主に市場セッションごとの価格動向を分析するのに有効となる。
例えば、アジア市場、ヨーロッパ市場、アメリカ市場など、異なる市場セッションごとに重要な価格レベルを把握したい場合に活用できる。
これにより、各市場セッションのオープン時に価格のブレイクアウトを意識するトレードが容易になる。
Market Zoneのソースコード
//+------------------------------------------------------------------+
//| Market Zone.mq4 |
//| Copyright 2024, FX-Bonus.net |
//| https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link "https://fx-bonus.net/"
#property version "1.03"
#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;
}
//+------------------------------------------------------------------+
ソースコードの詳細解説
- インプットパラメーター:
asiaColor
,europeColor
,americaColor
: 長方形の色を設定する。
デフォルトはそれぞれ青、黄色、ピンクが指定される。
- OnStart 関数:
- メインの実行関数であり、各市場セッションの高値と安値を取得し、それに基づいて長方形を描画する。
- 各市場セッションごとに開始時刻と終了時刻を計算し、その時間帯内の高値と安値を取得している。
CreateRectangle
関数を使用して、取得した高値と安値をもとに長方形を描画する。
- GetRecentTime 関数:
- 指定された時間(hour)を計算し、直近のその時間の時刻を取得。
- CreateRectangle 関数:
- 長方形オブジェクトを作成し、設定された色や枠線の太さなどを設定する。
- HighBetween 関数と LowBetween 関数:
- 指定された時間範囲内の高値と安値を取得する関数です。
High[i]
は i 番目のバーの高値を示し、Low[i]
は安値を示します。- 指定された時間範囲内で最も高い値と最も安い値を見つけて返す。
便利なMT4スクリプト集
-
海外FXのEA_MT4
ラウンドナンバーに自動で水平ラインを引く|MT4スクリプト
-
海外FXのEA_MT4
市場ごとに高値と安値を色分けするMT4ツール|時間帯ブレイクアウト
-
海外FXのEA_MT4
取引履歴をすべてCSVファイルに出力するスクリプト|MT4
-
海外FXのEA_MT4
リスクゼロの損益分岐点でストップ注文するスクリプト|ブレイクイーブン
-
海外FXのEA_MT4
MT4を便利にするスクリプトまとめ
-
海外FXのEA_MT4
すべてのチャートを一括で閉じる方法|通貨ペア選択も可|MT4スクリプト
-
海外FXのEA_MT4
MT4でSL・TP注文を一括でキャンセルする方法
-
海外FXのEA_MT4
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
海外FXのEA_MT4
MT4一括決済スクリプト|全決済と売り買い決済の選択もできる
-
海外FXのEA_MT4
すべてのチャートを一括で開くMT4スクリプト
-
海外FXのEA_MT4
チャートのトレンドラインやオブジェクトを一括で削除する方法
-
海外FXのEA_MT4
MT4チャートの時間足を一括で切替えるツール
まとめ
この記事では、MT4用のスクリプト「Market Zone」を使用して、アジア、ヨーロッパ、アメリカの各市場ごとに高値と安値を色分けして視覚的にわかりやすく表示する方法を解説している。このスクリプトを使うことで、トレーダーは各市場の動きを簡単に確認し、市場ごとの重要な価格帯やブレイクアウトを把握するのが容易になる。色分けはパラメーター設定で自由にカスタマイズ可能で、各市場の時間帯もユーザーの取引スタイルに合わせて調整できる。例えば、アジア市場は午前3時から9時、ヨーロッパ市場は午前9時から午後4時、アメリカ市場は午後4時から午後11時までの時間帯で表示される。また、スクリプトは簡単にMT4へインストールでき、ダブルクリックまたはチャートにドラッグすることで利用が可能である。さらに、Market Zoneで表示したオブジェクトを一括削除する「DeleteAll-or-Trendline」などの便利な補助ツールも紹介しており、チャート管理を効率的に行える。このスクリプトを活用することで、市場ごとのサポートやレジスタンスを把握し、効果的なトレード判断ができるようになる。視覚的な補助によって、初心者から上級者まで幅広いトレーダーに役立つツールである。Market Zoneを利用して、より効率的かつ効果的な取引を目指すことができる。