直接回答 : FX時間帯とは、東京・ロンドン・ニューヨークという世界3大外国為替市場それぞれの取引時間帯のことで、市場が重なる時間ほど参加者と取引量が増え、値動き(ボラティリティ)が大きくなる傾向がある。
FX市場には中央の取引所がなく、世界各地の銀行・機関投資家が参加する店頭取引(OTC)で成り立っている。とはいえ実質的な取引の中心地は、東京・ロンドン・ニューヨークの3市場に集約される。BIS(国際決済銀行)の2025年4月調査によると、世界のFX取引量は1日あたり9.6兆ドルに達し、そのうちロンドンが約38%、ニューヨークが約19%を占める(出典: BIS Triennial Central Bank Survey 2025年4月)。この2拠点だけで世界取引量の半分以上を占めていることになる。
市場 日本時間・目安(夏時間) 日本時間・目安(冬時間) 特徴 東京市場 8:00〜17:00 8:00〜17:00 ボラティリティは相対的に低め。JPY・AUD・NZD関連の流動性源 ロンドン市場 16:00〜翌2:00 17:00〜翌3:00 世界最大の取引量(約38%)。EUR/GBP中心に明確なトレンドが出やすい ニューヨーク市場 21:00〜翌6:00 22:00〜翌7:00 米指標発表が集中。USD絡みの取引が全体の約89%(BIS 2025年調査) ロンドン×NY オーバーラップ 21:00〜翌2:00 22:00〜翌3:00 1日で最もボラティリティが高い時間帯
※夏時間(サマータイム)と冬時間で1時間ずれる。欧州・米国で切り替え日程が異なる年もあるため、正確な日程は各年の公式発表を確認してほしい。実装・運用の際は使用ブローカーのサーバー時間を必ず確認すること。
東京市場 は流動性が安定している一方、ロンドン・NYと比べるとボラティリティは低めだ。値幅が取りにくい分、スキャルピングよりレンジ戦略が機能しやすい時間帯とされる。
ロンドン市場 は世界最大の取引量を誇り、欧州の主要銀行・機関投資家が参入するため東京時間に比べて明確なトレンドが出やすい。EUR/USD・GBP/USDが最も活発になる時間帯だ。
ニューヨーク市場 は米国の経済指標発表が集中する時間帯だ。ドルが絡む取引が全体の約89%(BIS 2025年4月調査)を占めるため、米指標発表時の値動きはどの通貨ペアにも波及しやすい。
ロンドン・NY両市場が重なるオーバーラップ時間帯 は、両市場の参加者が同時に取引するため1日の中で最もボラティリティが高くなる。トレンドの継続やブレイクを狙う戦略と相性が良い一方、値動きが大きい分、根拠の薄いエントリーはダメージも大きくなりやすい。オーバーラップ時間帯の具体的な立ち回り方はロンドン・NY時間帯完全攻略ガイド で詳しく解説している。
直接回答 : 東京時間はUSD/JPY・AUD/JPYなど円絡みのペア、ロンドン時間はEUR/USD・GBP/USD、オーバーラップ時間帯はほぼすべての主要ペアで流動性が最大になる。
時間帯とその市場に関連の深い通貨が重なるタイミングを狙うと、スプレッドが締まりやすく、意図した値幅を取りやすい。逆に、その市場が閉まっている時間帯にマイナー通貨を取引すると、スプレッドが広がり不利になりやすい。
時間帯(JST夏時間) 動きやすいペア 理由 東京(8:00〜16:00) USD/JPY・AUD/JPY 円・資源国通貨絡みの流動性が高い ロンドン(16:00〜21:00) EUR/USD・GBP/USD 欧州通貨の流動性ピーク オーバーラップ(21:00〜翌2:00) EUR/USD・GBP/JPY・USD/JPY 全主要ペアで流動性最大 NY後半〜深夜(翌2:00〜8:00) いずれも非推奨 3市場とも閉場に近く流動性が急速に低下
通貨ペアごとの時間帯別の詳しい立ち回り(ロンドンフィックス前後の値動きパターンなど)はロンドン・NY時間帯完全攻略ガイド を参照してほしい。
直接回答 : FXで避けるべき時間帯は「深夜帯(3市場とも閉場に近い日本時間2:00〜8:00頃)」「経済指標発表前後」「週末・祝日のギャップ発生タイミング」の3つだ。いずれも流動性の低下・スプレッド拡大・想定外の値動きを伴いやすい。
問題になるのは、NYクローズ後から東京オープン前にあたる日本時間 午前2:00〜8:00 だ。この時間帯は三大市場のいずれも閉まっており、値動きはほぼ止まる。ところがスプレッドは逆に広がる。板が薄いから当然で、発注しても希望値からずれた価格で約定するスリッページが常態化しやすい。
スキャルピング系の取引にとって、スプレッド2〜3pipの拡大は1回の取引の期待値をそのまま消し飛ばす。この時間帯の新規エントリーを避けるだけで、期待値が大幅に改善するケースは珍しくない。
FOMC・米雇用統計・CPIなどの重要経済指標の発表前後は、スプレッドが数倍から十数倍に瞬間拡大する。約定はするが、スリッページが極端に大きくなるため、エントリー時に想定していたリスクリワードが崩壊しやすい。
対処の目安は発表5分前から新規エントリーを見送る ことだ。より慎重な立ち回りでは30分前から見送り、発表後も値動きが落ち着くまで様子見するケースがある。
金融機関が週末に市場を閉めている間も、地政学的イベントや要人発言は止まらない。その結果、月曜の始値が金曜の終値から大きくずれた「窓開け」が生じることがある。
ポジションを週末に持ち越すと、この窓開けをそのまま受ける。スキャルピング・デイトレード系の取引では、金曜の深夜(サーバー時間で21:00前後)までにポジションをクローズし、新規エントリーも控える という考え方が一般的だ。年末年始(12月25日〜1月3日頃)も同様に流動性が低下し、窓開けリスクが通常より高くなる。
リスク注意 : 金融庁は流動性リスクとして「スプレッドが広くなって意図した取引ができなくなったり」する可能性を公式サイトで説明している(出典: 金融庁 fsa.go.jp/ordinary/iwagai/ )。時間帯を選ぶことはこのリスクを軽減する工夫であるが、完全な排除はできない。実際の取引は自己責任で判断してほしい。
ここまでは手動トレードでも共通する基礎知識だ。EA(自動売買)を使っている場合は、こうした時間帯の特性をコードとして組み込んでおくことで、深夜帯のスリッページや指標発表のスパイクを機械的に避けられる。以下はMQL4・MQL5それぞれの実装コード(コピペ可)と、バックテストでの効果検証・過剰最適化を避ける運用ポイントだ。
EA開発自体が初めての場合は先に「MQL4・MQL5プログラミング入門:EA開発を始める初心者が最初に知るべきこと 」を参照してほしい。
Photo by Fotis Fotopoulos on Unsplash
直接回答(「MQL4 時間帯フィルター コード 書き方」への回答) : MQL4の時間帯フィルターはTimeHour(TimeCurrent())でサーバー時間の「時」を取得し、if (!IsTradeTime()) return;をOnTick()先頭に置くパターンで実装する。日付をまたぐ場合はStartHour > EndHourの条件分岐が必須。
MQL4でEAに時間帯フィルターを設定する際に使う主な関数は以下の2つだ。
Hour(): プログラム起動時点のサーバー時間の「時」を0〜23の整数で返す。実行中に値は更新されないため、OnTick()内での時間判定には不向き
TimeHour(TimeCurrent()): TimeCurrent()で最新ティック時刻を取得し、TimeHour()でその「時」の部分を取り出す。OnTick()内で呼び出すたびに最新の時刻を返すため、時間帯フィルターに適している
DayOfWeek(): 曜日を0(日曜)〜6(土曜)で返す
前提として押さえておきたいのは、TimeCurrent()が返すのはブローカーのサーバー時間 であって、日本時間ではないという点だ。ほとんどのブローカーはGMT+2(冬時間)またはGMT+3(夏時間)でサーバーを運用している。日本時間(GMT+9)との差は冬時間(GMT+2)で7時間、夏時間(GMT+3)で6時間——この変換を意識してパラメーターを設定することが、実装の第一のポイントになる。
例えば日本時間の午前2:00は、GMT+2のサーバーでは前日の17:00だ。ここを間違えると、フィルターが意図した通りに機能しない。
もう一点。Hour()はプログラム起動時の値で固定され、実行中に更新されない仕様だ。OnTick()ハンドラ内で常に最新の時刻を参照するにはTimeHour(TimeCurrent())を使う必要がある。MQL5ではTimeTradeServer()でよりシンプルに解決できる(後述)。
コピー#property strict
input int StartHour = 3; // 取引開始時間(ブローカーサーバー時間)
input int EndHour = 21; // 取引終了時間(ブローカーサーバー時間)
input int FridayCloseHour = 21; // 金曜日の取引停止時間(サーバー時間)
// 時間フィルター判定関数
bool IsTradeTime() {
// 金曜日の指定時間以降は取引禁止
if (DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= FridayCloseHour) {
return false;
}
int h = TimeHour(TimeCurrent()); // 最新ティック時刻からサーバー時間の「時」を取得
if (StartHour < EndHour) {
// 日付をまたがない場合(例: 3時〜21時)
return (h >= StartHour && h < EndHour);
} else {
// 日付をまたぐ場合(例: 22時〜翌6時)
return (h >= StartHour || h < EndHour);
}
}
// OnTick()内での使い方
void OnTick() {
if (!IsTradeTime()) {
return; // 取引時間外はエントリーしない
}
// 以下にエントリーロジックを記述
}
注意 : このコードサンプルは動作の参考を示すものであり、動作を保証するものではありません。実際の取引への適用は自己責任で行ってください。バックテストで十分に検証した上で使用することを推奨します。
上記コードではinput修飾子を使ってStartHour・EndHour・FridayCloseHourをパラメーター化している。MT4の「EAの設定」画面から時間を変えられるので、ソースコードを触らずに調整できる点が地味に便利だ。StartHour < EndHourの条件分岐は、日付をまたぐフィルター(例: 22時〜翌6時の夜間稼働)に対応するために必須で、この分岐がないとStartHour=22, EndHour=6のような設定で常にfalseが返ってしまう。
EAのバックテスト設定全般については「EAバックテストのスプレッド設定:適切な値の決め方と実務的な考え方 」も合わせて参照してほしい。
直接回答(「MQL5 時間フィルター EA 実装」への回答) : MQL5ではTimeTradeServer()でMqlDateTime構造体に時刻を格納し、timeStruct.hourとtimeStruct.day_of_weekを参照する。MQL4のTimeHour(TimeCurrent())と異なりティック到達を待たずにサーバー時刻を推定取得できるため、閑散時間帯でも正確な判定ができる。
MQL5で時間帯フィルターを実装するとき、MQL4との最大の違いは**TimeTradeServer()関数の存在だ。MQL4のTimeCurrent()はティック受信時刻に依存するが、MQL5のTimeTradeServer()はティックが届かない時間帯でも推定サーバー時刻を取得できる。つまり 閑散時間帯でのフィルター判定の信頼性がMQL5の方が高い**ということだ。
比較項目 MQL4 MQL5 サーバー時間取得 TimeHour(TimeCurrent())TimeTradeServer()ティック依存 あり(TimeCurrent()はティック依存) なし(TimeTradeServer()はティック非依存) GMT差取得 手動計算が必要 TimeGMTOffset()で取得可能時刻構造体 なし(個別関数で取得) MqlDateTime構造体でまとめて取得
コピー#property strict
input int InpStartHour = 3; // 取引開始時間(ブローカーサーバー時間)
input int InpEndHour = 21; // 取引終了時間(ブローカーサーバー時間)
input int InpFridayCloseHour = 21; // 金曜日の取引停止時間(サーバー時間)
// 時間フィルター判定関数(MQL5版)
bool IsTradeTime() {
MqlDateTime timeStruct;
TimeTradeServer(timeStruct); // ティックに依存しないサーバー時間を取得
int h = timeStruct.hour;
int dow = timeStruct.day_of_week; // 0=日曜, 1=月曜, ..., 5=金曜, 6=土曜
// 金曜日の指定時間以降は取引禁止
if (dow == 5 && h >= InpFridayCloseHour) {
return false;
}
if (InpStartHour < InpEndHour) {
return (h >= InpStartHour && h < InpEndHour);
} else {
return (h >= InpStartHour || h < InpEndHour);
}
}
// OnTick()内での使い方
void OnTick() {
if (!IsTradeTime()) {
return;
}
// エントリーロジック
}
MQL4版との構造上の違いはほぼIsTradeTime()の内部だけだ。パラメーター名にInpプレフィックスをつけているのはMQL5の慣習に合わせたもので、動作的な意味はない。
注意 : このコードサンプルは動作の参考を示すものであり、動作を保証するものではありません。実際の取引への適用は自己責任で行ってください。
MQL5の時間フィルターをさらに深く学ぶ場合は「MQL5時間フィルターEA実装ガイド【セッション・夏冬時間完全対応】 」も参照してほしい。夏冬時間(GMTオフセット変動)への対応方法まで解説している。
直接回答(「経済指標 前後 EA 停止 実装」への回答) : MQL5ではCalendarValueHistory()でMT5ビルトインカレンダーを参照し、重要度CALENDAR_IMPORTANCE_HIGHのイベント前後30分・60分を動的に停止できる。MQL4では公式APIがないため、時間ブロック型の静的フィルターが現実的。
ここまでの実装は「決まった時間帯を除外する」静的なフィルターだ。より高度な実装として、経済指標カレンダーを取得して指標発表の前後だけEAを自動停止する動的フィルターがある。
コピー// MQL5 組み込みカレンダー参照の骨格(簡略版)
bool IsHighImpactEventNear(int minutesBefore = 30, int minutesAfter = 60) {
MqlCalendarValue values[];
datetime from = TimeCurrent() - minutesBefore * 60;
datetime to = TimeCurrent() + minutesAfter * 60;
// 対象通貨のイベントを取得(例: USDとJPY)
if (CalendarValueHistory(values, from, to, "USD") > 0) {
for (int i = 0; i < ArraySize(values); i++) {
MqlCalendarEvent event;
if (CalendarEventById(values[i].event_id, event)) {
// 重要度が高いイベント(HIGH)のみフィルター
if (event.importance == CALENDAR_IMPORTANCE_HIGH) {
return true;
}
}
}
}
return false;
}
このアプローチのメリットは、指標発表がない日は通常通り稼働できる点だ。デメリットは、カレンダーデータの更新タイミングや予定外の臨時発表に対応できないこと、MT5専用の実装になることだ。
MQL4環境では公式のカレンダーAPIが存在しないため、外部のForex Factoryなどからテキストファイルを取得して読み込む実装が一般的だが、実装コストが高い。現実的な妥協点として「重要指標が多い時間帯(例: 米NY時間の主要指標は日本時間21:30が多い)を固定でブロックする」静的アプローチをベースにしつつ、手動でEAを止める運用ルールを組み合わせる方法が実用的だ。
直接回答 : 時間帯フィルターのバックテスト検証では「歴史データのタイムゾーン確認」「取引回数100回以上の確保」「アウトオブサンプル期間での検証」の3点が最重要チェック項目だ。
歴史データのタイムゾーン確認 : ブローカーの歴史データはサーバー時間で記録されている。2015年以前の古いデータは日本時間で記録されているケースがあり、フィルターの時間帯が意図した通りに機能しない可能性がある。バックテスト環境とフィルターのサーバー時間が一致しているかを確認しておくこと。
取引回数の確保 : 時間帯フィルターを追加するとエントリー回数が減る。統計的に意味のある結果を得るには最低100回以上の取引回数 が必要だ。フィルターを厳しくしすぎて取引回数が20〜30回になってしまうと、バックテスト結果がノイズに支配される。
過剰最適化のリスク : 時間帯フィルターは過剰最適化が最も起きやすいパラメーターの一つだ。「3〜21時の稼働が最も成績が良かった」という結果は、特定の歴史データに過学習しているだけという可能性がある。アウトオブサンプル(最適化に使っていない期間)での検証が必須だ。
過剰最適化の一般論については「EAのカーブフィッティングとは?過剰最適化の見抜き方と回避手順を徹底解説 」で詳しく解説している。
以下は参考として示す架空の数値例だ。実際の効果はEAのロジック・通貨ペア・期間によって大きく異なる。
設定 勝率 プロフィットファクター 最大ドローダウン フィルターなし 52% 1.15 18% 深夜2:00〜8:00除外 55% 1.32 12% 上記 + 金曜21時以降除外 57% 1.41 10%
免責 : 上記の数値は過去の参考データに基づく例示であり、将来の運用成果を一切保証しません。FX取引には元本損失のリスクが伴います。
検証手順の目安は以下の通り。
ベースラインを取る : フィルターなしで十分な期間(最低1年、理想は3〜5年)のバックテストを実施
単一フィルターを追加 : まず深夜帯フィルターのみ追加して比較
金曜フィルターを追加 : 次に金曜フィルターを加えて比較
取引回数を確認 : 各ステップで100回以上の取引回数を維持しているか確認
アウトオブサンプル検証 : 最適化期間外のデータで同じフィルターを適用して結果を確認
バックテスト全体の設定方法・合格基準については「EA バックテスト やり方 完全解説|MT4/MT5 設定から合格基準の読み方まで 」を参照してほしい。
時間帯フィルターの実装・検証には相応の工数がかかる。ブローカーのサーバー時間の確認、パラメーターの調整、バックテストの繰り返し——これらをゼロから一人でこなすのは、正直かなり時間のかかる作業だ。
Hedgrow FXでは、時間帯フィルターを含む基本的なリスク管理ロジックが組み込まれたEAを提供している。深夜フィルター・金曜フィルター・重要指標前後の停止ロジックが設定済みの状態で使い始められる。月額1,980円のサービス内で時間帯フィルターEA設定の無料サポート も受けられる。自分のEAに組み込む際のサーバー時間の確認作業や、バックテストの解釈についても対応しているので、実装詰まりのサポートとして活用してほしい。
FX時間帯とは、東京・ロンドン・ニューヨークという世界3大市場それぞれの取引時間帯とその特性のことです。市場が開いている時間帯ほど参加者が多く流動性が高い一方、複数の市場が閉まる時間帯は流動性が薄くスプレッドが広がりやすくなります。時間帯によって値動きの性質が変わるため、どの時間に取引するかはFXの基礎知識のひとつです。
ロンドン市場とニューヨーク市場が同時に開いているオーバーラップ時間帯(日本時間夏時間21:00〜翌2:00頃)です。BIS(国際決済銀行)2025年4月調査によると、ロンドン単独で世界取引量の約38%、ニューヨーク単独で約19%を占めるため、両者が重なる時間帯は1日で最も参加者と資金が集中し、ボラティリティが高くなります。
東京時間はボラティリティが相対的に低くレンジ戦略が機能しやすい時間帯です。ロンドン時間は欧州の機関投資家が参入し、EUR/USD・GBP/USDで明確なトレンドが出やすくなります。ニューヨーク時間は米国の経済指標発表が集中し、ドル絡みの値動きがあらゆる通貨ペアに波及します。それぞれ流動性の担い手と動きやすい通貨ペアが異なる点が最大の違いです。
3市場ともほぼ閉まっている日本時間午前2:00〜8:00頃の深夜帯、重要経済指標の発表前後(発表5分〜30分前は特に注意)、そして週末・祝日をまたぐ窓開けが起きやすいタイミングです。いずれも流動性の低下やスプレッド拡大、想定外の値動きを伴いやすく、初心者は特に注意が必要です。
多くのケースでプロフィットファクターと最大ドローダウンが改善します。流動性が低い時間帯や指標発表前後のスプレッド拡大による損失を除外できるためです。ただし取引回数は減少し、月間の絶対利益額は変わらないかむしろ下がる可能性があります。アウトオブサンプル期間での検証を必ず行ってください。
ブローカーのサーバー時間を返しますが、プログラム起動時点の値で固定されます。日本時間ではありません。多くのブローカーはGMT+2(冬時間)またはGMT+3(夏時間)でサーバーを運用しており、日本時間(GMT+9)との差は冬時間で7時間、夏時間で6時間あります。OnTick()内では TimeHour(TimeCurrent()) の使用を推奨します。
国内ブローカーでMT4口座を使っている場合はMQL4実装が現実的です。MT5環境ではMQL5のTimeTradeServer()が使えるため、ティック依存のない推定サーバー時刻の取得が可能で、フィルターの信頼性が高くなります。新規EA開発ならMQL5を推奨します。
FX時間帯を理解することは、手動トレードでもEA運用でも共通する「基礎インフラ」だ。整理すると:
東京時間 : ボラティリティ低め。レンジ戦略が機能しやすい
ロンドン時間 : 世界最大の取引量(約38%)。EUR/USD・GBP/USDでトレンドが出やすい
ニューヨーク時間 : 米指標発表が集中。ドル絡みの取引が約89%を占める
オーバーラップ時間帯 : 1日で最もボラティリティが高い時間帯。根拠のないエントリーは厳禁
避けるべき時間帯 : 深夜帯(日本時間2:00〜8:00頃)・指標発表前後・週末ギャップ
EA運用者 : TimeHour(TimeCurrent())(MQL4)・TimeTradeServer()(MQL5)でサーバー時間基準の時間帯フィルターを実装し、日本時間との差(冬時間7時間・夏時間6時間)を必ず考慮する
「何時から何時に取るか」を決めることは、「何時から何時は取らないか」を決めることでもある。時間帯の特性を理解し、避けるべき時間帯の新規エントリーをカットするだけで、期待値が大きく改善するケースは珍しくない。
ロンドン・NY時間帯のより詳しい立ち回りはFX「ロンドン・ニューヨーク時間帯」完全攻略ガイド を、EA開発の基礎はMQL4・MQL5プログラミング入門 をあわせて参照してほしい。
免責事項 : 本記事はFX取引に関する一般的な情報提供を目的としており、投資を推奨するものではありません。FX取引には元本割れを含む損失リスクが伴います。取引を行う際は自己責任のもと、余剰資金の範囲内で行ってください。記事内の統計データはBIS(2025年4月調査)・金融庁の公開情報に基づきますが、将来の相場を保証するものではありません。コードサンプルの動作は保証しておらず、実際のEA運用への適用は自己責任で行ってください。夏時間・冬時間の切り替え日程は毎年変わるため、最新情報は各機関の公式サイトでご確認ください。