Session/Time Filters
Market Session Filter (MT5): London, NY, and Overlap Setup | AlfaTactix
📖 9 min read
📝 1,740 words
🏷️ Session/Time Filters
In this page: what Market Session is, how it works, when to use it, a practical example, and a bonus tip.
Use Market Session in a real strategy—no code required
Create a free account to save your progress and add this filter (and others) to strategies in minutes. Backtest, then export to MQL5.
Filter Explanation
Market Session Filter Explanation
The Market Session Filter is a powerful time-based trading filter that allows you to filter trades based on specific global trading sessions (London, New York, Tokyo, Sydney, etc.). Different trading sessions have distinct characteristics that significantly impact trading conditions, liquidity, volatility, spread costs, and market participation levels. Understanding session dynamics is crucial for optimizing trade timing, as liquidity and volatility vary dramatically throughout the 24-hour trading day. Research by market microstructure scholars like Harris (2003) demonstrates that session-based filtering can improve strategy performance by 15-25% by focusing on optimal market conditions.
How Market Sessions Work:
The forex market operates 24 hours a day, five days a week, across four major trading sessions. Each session represents different geographic regions and trading centers, with unique characteristics driven by local market participants, economic activity, and liquidity providers:
London Session (08:00-16:00 GMT):
- Highest liquidity for GBP and EUR pairs, accounting for approximately 35% of total daily forex volume
- Major volatility during European trading hours, with significant price movements during the opening hours (08:00-12:00 GMT)
- Overlap with New York session (12:00-16:00 GMT) creates the highest liquidity period globally, with volumes 30-40% higher than individual sessions
- Tightest spreads for EUR/USD, GBP/USD, EUR/GBP during active hours (typically 0.5-1 pip)
- Best for scalping, intraday trading, and breakout strategies targeting European currency pairs
- High institutional participation from European banks and hedge funds
New York Session (13:00-21:00 GMT):
- Highest liquidity for USD pairs, accounting for approximately 20% of total daily forex volume
- Overlaps with London session creating peak liquidity (12:00-16:00 GMT), the most liquid 4-hour window globally
- High volatility during US market hours, especially during the first two hours (13:00-15:00 GMT) when US traders enter
- Best for trend following, breakout strategies, and swing trading focused on USD pairs
- Significant correlation with US equity market movements and economic data releases
- Highest news-driven volatility, with major US economic releases occurring during this session
Tokyo Session (00:00-09:00 GMT):
- Lower volatility compared to London/New York, but still significant for JPY pairs
- Good liquidity for JPY pairs (USD/JPY, EUR/JPY, GBP/JPY), accounting for approximately 25% of daily volume during Asian hours
- Asian market participants dominate, with Japanese banks and institutional traders being primary liquidity providers
- Suitable for range trading strategies, carry trades, and strategies focused on Asian currency pairs
- Lower spread volatility compared to European/US sessions, with spreads remaining relatively stable
- Less news-driven movement, making it favorable for technical analysis-based strategies
Sydney Session (22:00-07:00 GMT):
- Lowest liquidity among major sessions, accounting for approximately 5-7% of total daily forex volume
- Primarily for AUD and NZD pairs (AUD/USD, NZD/USD, AUD/NZD)
- Lower volatility, with fewer large price movements compared to other sessions
- Best for position trading and longer-term strategies
- Can experience sudden volatility spikes during Australian/New Zealand economic releases
- Wide spreads during quiet periods, sometimes 3-5 pips for major pairs
Using Market Session Filters:
Market session filters help traders optimize entry timing by focusing on sessions with optimal conditions for their specific strategy:
-
Liquidity Optimization: Trade during high-liquidity sessions for better execution quality and tighter spreads. Liquid markets reduce slippage and transaction costs significantly. Research shows that trading during high-liquidity sessions can reduce transaction costs by 30-50% compared to low-liquidity periods.
-
Volatility Targeting: Different sessions exhibit different volatility patterns. Target sessions with higher volatility for better profit potential in breakout strategies, or lower volatility for range trading. The London-New York overlap shows 40-60% higher volatility than average, ideal for momentum strategies.
-
Spread Minimization: Avoid low-activity periods when spreads are wider. During session overlaps (e.g., London-New York), spreads are typically at their tightest. The London-New York overlap consistently shows spreads 30-50% tighter than individual sessions.
-
Market Participation: Trade when major market participants (banks, institutions, hedge funds) are active. This ensures genuine price movements rather than market manipulation during thin markets. Session filters help avoid "phantom" breakouts that occur during low-participation periods.
-
Time-Based Strategy Alignment: Align your trading strategy with session characteristics. Trend strategies work better during high-liquidity sessions, while range strategies may work better during low-volatility sessions. Breakout strategies perform best during session overlaps when volatility and liquidity peak simultaneously.
Session Overlaps:
The most liquid periods occur during session overlaps, when multiple major markets are simultaneously active:
-
London-New York Overlap (12:00-16:00 GMT): Highest liquidity globally, tightest spreads (often 0.3-0.5 pip for EUR/USD), highest volatility, accounting for 40-50% of total daily volume. This 4-hour window is considered prime trading time for most strategies.
-
Tokyo-London Overlap (08:00-09:00 GMT): Good liquidity for EUR/JPY and GBP/JPY pairs, moderate volatility, suitable for cross-currency pair trading strategies.
-
Sydney-Tokyo Overlap (00:00-02:00 GMT): Moderate liquidity for Asian pairs (AUD/JPY, NZD/JPY), lower volatility, suitable for carry trade strategies and Asian-focused pairs.
Advantages:
-
Provides objective time-based filtering regardless of market conditions, making it ideal for optimizing trade timing based on liquidity and volatility patterns.
-
Works across all forex pairs and timeframes, as session dynamics apply universally to the forex market. The 24-hour nature of forex makes session filtering particularly effective.
-
Helps avoid low-liquidity periods when execution quality degrades, spreads widen, and slippage increases. Session filters can reduce trading costs by 20-40% compared to unfiltered approaches.
-
Can be combined with other filters (e.g., ATR, volume) for enhanced precision, creating sophisticated multi-factor entry conditions.
-
Adapts to different trading strategies - scalping strategies benefit from high-liquidity sessions, while position trading can use lower-volatility sessions.
Limitations:
-
Session times can vary due to daylight saving time changes (DST), requiring periodic adjustments. Some platforms automatically adjust, while others require manual configuration.
-
Market conditions can override session characteristics - major news events can create volatility during typically quiet sessions, while calm markets can reduce liquidity during typically active sessions.
-
Different brokers may have slightly different session definitions based on their liquidity providers, though standard GMT-based definitions are most common.
-
Should be combined with other analysis tools for optimal results. Session filters work best when combined with volatility filters, trend analysis, and market condition filters.
-
Over-reliance on session filters may cause missed opportunities during off-hours when legitimate moves occur due to news or other factors.
In summary, the Market Session filter is an essential tool for forex traders focused on optimizing entry timing based on liquidity and volatility patterns, helping maximize execution quality while minimizing transaction costs. For further reading, refer to Harris's comprehensive work "Trading and Exchanges: Market Microstructure for Practitioners" (2003), Investopedia's forex trading sessions guide, academic research on market microstructure and session effects published in journals such as the Journal of Financial Markets, and institutional research on forex liquidity patterns by major banks and trading platforms.
Practical Example
Practical Example: Using Market Session Filter
The Market Session Filter is a time-based filter used to ensure trades are entered only during specific trading sessions when liquidity and volatility conditions are optimal. In a trading strategy, the market session filter helps optimize execution quality and reduce transaction costs by focusing on periods when spreads are tightest and market participation is highest.
Scenario: You're creating a breakout strategy for GBP/USD on a 1-hour chart. You want to trade only during the London and New York sessions when liquidity is highest, spreads are tightest (typically 0.5-1 pip vs 2-3 pips during low activity), and execution quality is optimal.
Strategy Logic:
- Filter trades to execute only during London session (08:00-16:00 GMT) or New York session (13:00-21:00 GMT)
- Prioritize entries during London-New York overlap (12:00-16:00 GMT) when liquidity peaks globally
- Skip all trades outside these sessions to avoid low-liquidity periods with wider spreads and higher slippage
- Close positions or reduce exposure before session close (16:00 GMT) to avoid low-liquidity periods during session transitions
Backtrader Example:
import backtrader as bt
from datetime import datetime, time
class MarketSessionFilterStrategy(bt.Strategy):
params = dict(
london_start=time(8, 0), # 08:00 GMT
london_end=time(16, 0), # 16:00 GMT
newyork_start=time(13, 0), # 13:00 GMT
newyork_end=time(21, 0), # 21:00 GMT
use_overlap=True # Prioritize London-New York overlap
)
def __init__(self):
self.order = None
def is_london_session(self, dt):
"""Check if current time is in London session"""
current_time = dt.time()
return self.p.london_start <= current_time <= self.p.london_end
def is_newyork_session(self, dt):
"""Check if current time is in New York session"""
current_time = dt.time()
return self.p.newyork_start <= current_time <= self.p.newyork_end
def is_in_session(self, dt):
"""Check if current time is in any allowed session"""
in_london = self.is_london_session(dt)
in_newyork = self.is_newyork_session(dt)
if self.p.use_overlap:
# Include both sessions
return in_london or in_newyork
else:
# Only include non-overlapping periods
return in_london or in_newyork
def next(self):
current_dt = self.data.datetime.datetime(0)
# Market session filter: only trade during allowed sessions
if not self.is_in_session(current_dt):
return # Skip trade if outside allowed sessions
if not self.position:
# Your entry logic here (e.g., breakout detection)
if self._breakout_detected():
# Additional check: prioritize overlap period
if self.p.use_overlap:
in_overlap = (self.is_london_session(current_dt) and
self.is_newyork_session(current_dt))
if in_overlap:
# Peak liquidity period
self.buy()
elif self.is_london_session(current_dt) or self.is_newyork_session(current_dt):
# Still in session, but not overlap
self.buy()
else:
self.buy()
else:
# Exit logic (e.g., stop-loss, take-profit, or opposite signal)
if self._exit_condition():
self.close()
def _breakout_detected(self):
# Add your breakout detection logic here
# Example: price breaks above 20-period high
return False
def _exit_condition(self):
# Add your exit logic here
return False
# Usage
cerebro = bt.Cerebro()
cerebro.addstrategy(MarketSessionFilterStrategy)
Expected Outcome: By using the Market Session filter, your strategy ensures you're trading during optimal market conditions with:
- Tight Spreads: Spreads are typically 0.5-1 pip during high-liquidity periods vs 2-3 pips during low activity, reducing transaction costs by 50-70%
- Better Execution: Faster fills with minimal slippage during liquid periods, improving entry and exit prices
- Reduced False Signals: High liquidity reduces the likelihood of price manipulation and false breakouts, improving win rate by 10-20%
- Improved Risk-Reward: Lower transaction costs improve overall strategy profitability, with cost savings potentially adding 15-25% to net returns according to backtesting studies
💡 Bonus Tip
For GBP/USD, the London session (08:00-16:00 GMT) is particularly important as it's when GBP pairs show the most activity. The London-New York overlap (12:00-16:00 GMT) offers the best execution conditions with spreads often below 1 pip and highest volatility. Consider using session filters in combination with ATR filters - only trade during high-liquidity sessions when volatility is also expanding for maximum effectiveness. This multi-factor approach is documented in institutional trading research and can significantly improve strategy performance.
Using the Market Session filter ensures your strategy aligns with optimal market conditions, improving execution quality and overall performance over time.
Use Market Session in a real strategy—no code required
Create a free account to save your progress and add this filter (and others) to strategies in minutes. Backtest, then export to MQL5.
Continue learning