市場ごとに高値と安値を色分けする|時間帯ブレイクアウト|MT4スクリプト
MT4チャートで、各市場の高値と安値を視覚的に区別したいのですが。
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
このページでわかること・できること
〇アジア、ヨーロッパ、アメリカ市場の高値と安値を色分けできるスクリプトについて
〇スクリプトのダウンロード
〇スクリプトのインストールと使い方
目次
各市場ごとに高値と安値を色分けできるスクリプト|Market Zone
MT4用スクリプト「Market Zone」を使えば、アジア市場、ヨーロッパ市場、アメリカ市場でチャートを色分けできる。
市場ごとに高値と安値が視認できるため、市場ごとのサポート、レジスタンスのブレイクアウトがわかりやすくなる。
Market Zoneダウンロード
スクリプトのインストール
ダウンロードしたスクリプトはMT4のデータフォルダからScriptsフォルダへ移動することでインストールできる。
ファイルの移動後はMT4の再起動でインストールが完了となる。
あわせて読みたい
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20320%20180'%3E%3C/svg%3E)
EAをMT4へセットする手順
EAをMT4へセットする手順はこちらの記事を参照。この手順はEAだけでなくインジケーター、スクリプトにも共通している。 セット手順 EAをセットしたいMT4のフォルダへEA…
Market Zoneの使い方
インストールが完了したスクリプトはMT4のナビゲーターから呼び出しが可能となる。
スクリプトの起動にはダブルクリック、またはチャートへドロップする。
「OK」をクリックで各市場ごとの長方形が描画される。
各市場の時間帯
アジア時間 3:00から9:00
ヨーロッパ時間 9:00から16:00
アメリカ時間 16:00から23:00
スクリプトの特徴
このスクリプトは、市場の異なる時間帯における高値と安値を取得し、それに基づいてチャート上に長方形を描画できる。
そのため、主に市場セッションごとの価格動向を分析するのに有効となる。
例えば、アジア市場、ヨーロッパ市場、アメリカ市場など、異なる市場セッションごとに重要な価格レベルを把握したい場合に活用できる。
これにより、各市場セッションのオープン時に価格のブレイクアウトを意識するトレードが容易になる。
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.00"
#property show_inputs
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
// Input parameters
input color asiaColor = clrBlue; // アジア時間
input color europeColor = clrYellow; // ヨーロッパ時間
input color americaColor = clrPink; // アメリカ時間
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
// 直近のデータの終了時刻を取得
datetime endTime = Time[0];
// 各期間の開始時刻と終了時刻を計算
datetime startTime1 = GetRecentTime(3, endTime);
datetime endTime1 = GetRecentTime(9, endTime);
datetime startTime2 = GetRecentTime(9, endTime);
datetime endTime2 = GetRecentTime(16, endTime);
datetime startTime3 = GetRecentTime(16, endTime);
datetime endTime3 = GetRecentTime(23, 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";
string rectangleName2 = "Rectangle2";
string rectangleName3 = "Rectangle3";
// チャート上に既に同じ名前のオブジェクトがある場合は削除
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 drawn successfully.");
}
//+------------------------------------------------------------------+
//| 直近の指定された時刻(hour)を計算する関数 |
//+------------------------------------------------------------------+
datetime GetRecentTime(int hour, datetime currentTime)
{
// 直近の指定された時刻を計算
datetime recentTime = currentTime - (currentTime % 86400) + hour * 3600;
// 計算した時間を返す
return recentTime;
}
//+------------------------------------------------------------------+
//| 長方形オブジェクトを作成する関数 |
//+------------------------------------------------------------------+
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 = 0;
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 = 0;
for (int i = 0; i < Bars; i++)
{
if (Time[i] >= startTime && Time[i] <= endTime)
{
if (Low[i] < lowest || lowest == 0)
{
lowest = Low[i];
}
}
}
return lowest;
}
//+------------------------------------------------------------------+
プログラムコードの詳細解説
- インプットパラメーター:
asiaColor
,europeColor
,americaColor
: 長方形の色を設定する。
デフォルトはそれぞれ青、黄色、ピンクが指定される。
- OnStart 関数:
- メインの実行関数であり、各市場セッションの高値と安値を取得し、それに基づいて長方形を描画する。
- 各市場セッションごとに開始時刻と終了時刻を計算し、その時間帯内の高値と安値を取得している。
CreateRectangle
関数を使用して、取得した高値と安値をもとに長方形を描画する。
- GetRecentTime 関数:
- 指定された時間(hour)を計算し、直近のその時間の時刻を取得。
- CreateRectangle 関数:
- 長方形オブジェクトを作成し、設定された色や枠線の太さなどを設定する。
- HighBetween 関数と LowBetween 関数:
- 指定された時間範囲内の高値と安値を取得する関数です。
High[i]
は i 番目のバーの高値を示し、Low[i]
は安値を示します。- 指定された時間範囲内で最も高い値と最も安い値を見つけて返す。
便利なMT4スクリプト集
-
ラウンドナンバーに自動で水平ラインを引く方法|MT4スクリプト
-
市場ごとに高値と安値を色分けする|時間帯ブレイクアウト|MT4スクリプト
-
取引履歴をすべてCSVファイルに出力するスクリプト|MT4
-
リスクゼロの損益分岐点でストップ注文するスクリプト|ブレイクイーブン
-
MT4を便利にするスクリプトまとめ
-
すべてのチャートを一括で閉じる方法|通貨ペア選択も可|MT4スクリプト
-
S/L・T/P注文を一括でキャンセルする方法|MT4スクリプト
-
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
ポジション全決済と売りのみ・買いのみ決済を選択できる一括決済スクリプト
-
すべて・または選択したチャートを一括で開く方法|MT4スクリプト
-
チャートのトレンドラインまたはオブジェクトすべてを一括で削除する方法
-
チャートのタイムフレーム(期間•時間枠)を一括で変更するスクリプト