Forex Blog

First-hand Forex trading experience and information about foreign exchange market that will be useful to traders


Forex Hourly Statistics for Major Currency Pairs

January 11, 2012 (Last updated on May 2, 2018) by

Update 2012-01-21: It looks like there was a major error in the MetaQuotes hourly data for the currency pairs. The first several years of data was only one hour per day, and that day was 00:00 server time or exactly 23:00 GMT. That’s why there was such a high peak in the last day’s hour average bar. I am now updating all the pictures and the respective descriptions to fit the real market statistics. The statistics script is also updated to let the user skip first N bars in the chart.

In theory, the hourly statistics of the currency pairs should be pretty consistent in Forex. Some pairs should be traded more actively during the European session, some during the US trading session, and others during the Asian session. Of course, the conjunctions of the sessions should be even more active for some of the currency pairs.

Fortunately, the availability of the MQL coding language and the simple accessibility of the H1 data for any currency pair in the MetaTrader 5 platform make it really easy to test the above assumptions. I’ve created a script that would gather the (High — Low) values and calculate the average for every hour of the day. Then I applied it to several major and cross currency pairs to find out the most active and the stillest hours of the day for them.

The results turned out to be quite surprisingusual. Although I have expected to see the peak of activity for most currency pair during the time when both Europe and the USA are trading, I haven’t expected at all to see the highest hourly average between 23:00 and 0:00 GMT. This hour beat any other hour on all but one currency pair that I’ve checked. The only explanation that I have is that it coincides with the weekly Forex market opening and the beginning of the Asian session, making it very volatile.

Below, you will find my statistics for the following 11 currency pairs: EUR/USD, GBP/USD, USD/JPY, USD/CAD, USD/CHF, AUD/USD, NZD/USD, EUR/GBP, AUD/JPY, EUR/JPY, GBP/JPY. But you can easily get the same histogram charts for any other currency pair. Just follow these instructions:

  1. Download my HLStats script.
  2. Attach it to the H1 chart of the currency pair of your choice.
  3. As a result, you’ll get a file called stats.csv in MQL5/Files/ folder of your MetaTrader 5.
  4. Download my hourly statistics table for MS Excel.
  5. Copy the data from the file into the Pips column in the Excel table.
  6. The chart will redraw itself automatically.

EUR/USD shows the logical pattern — the first area of volatility is the first few hours of the European trading session and then peaks when the US session opens with Europe still in game. The last hour trading still beats them all with almost 40 pips of average difference between the hour’s High and Low levels. The peak hours are colored the same way in all the presented statistics charts: the European session beginning is red, the US one is green and the three most active hours of the Asian sessions are light blue.

EUR/USD Hourly Statistics

GBP/USD is very similar to EUR/USD, except for that the European start is visibly shifted one hour forward and this peak is closer to the US/Euro cross-session. But the 23:00 hour average is even higher here.

GBP/USD Hourly Statistics

USD/JPY is less active during the European and the US Forex sessions, but peaks most prominently during the last hour of GMT day. is almost as active during the Asian session hours as during the European one but peaks during the US session.

USD/JPY Hourly Statistics

Unsurprisingly, USD/CAD shows a uniform peak during the US trading session and doesn’t rise much during the European FX session open hours. Even the 23:00 average is below the 4 most active hours of the US session.

USD/CAD Hourly Statistics

USD/CHF looks quite similar to EUR/USD and there’s nothing unexpected here — after all, Switzerland is very close to the eurozone, both economically and timezone-wise.

USD/CHF Hourly Statistics

AUD/USD is surprisingly similar to EUR/USD too. Except that its first 23 hours are smoother than in EUR/USD and the last hour goes farther up. its volatility distribution is much smoother.

AUD/USD Hourly Statistics

NZD/USD hourly volatility picture is a much smoother version of USD/JPY. Looks like the first hour of the Asian market session accounts for the biggest changes in this pair.

NZD/USD Hourly Statistics

EUR/GBP is a purely European currency pair and this is easy to spot on the chart below. The first three hours of the European session beat the first three hours of the US session. Which is a rare trait among the FX pairs.

EUR/GBP Hourly Statistics

AUD/JPY is similar to USD/JPY, but with more weight given to the last hour of the day (in GMT timezone) and less weight given to the usual European and US peaks.

AUD/JPY Hourly Statistics

EUR/JPY isn’t very different from the chart above, but is less smooth during the first 23 hours shows higher volatility during the colored active session hours.

EUR/JPY Hourly Statistics

GBP/JPY looks almost identical to EUR/JPY and is provided just for “completeness”. Though the European session here is slightly stronger than with the EUR/JPY chart.

GBP/JPY Hourly Statistics

But how do I use this data? That’s a good question there. Some of the uses I could think of are:

  • Breakouts during pair’s still hours are more likely to end up as fake-outs.
  • If I were to go scalping, I would choose the pair’s most active hours for that.
  • 23:00 GMT bar offers some interesting opportunities in almost any pair.
  • USD/CAD is really hot during the US trading session, which can and should be exploited.

If you want to share your opinion, observations, conclusions or simply to ask questions regarding the hourly Forex stats, feel free to post them using the form below.

15 Responses to “Forex Hourly Statistics for Major Currency Pairs”

  1. Jason

    Man love the volatility stuff. Great work. Keep it coming.


  2. caesar

    I really liked what you have done here. I found this blog accidentally while looking for additional historical forex data in order to make sure I am using accurate data. have got the same results regarding the usd-chf pair using different approach. I wish I have found this page before completing my analysis which would save me lots of time. I would love to share information and strategy.


    admin Reply:

    Feel free to share anything you want :-).


  3. Víctor

    When I select “Attach to char” in the notifications appear “script HLStats (EURUSD,H1) loaded successfully”, but when I accept the configuration values (PipsMultiplier, GMT_Difference, BarsToCount) appears “script HLStats (EURUSD,H1) removed”. The script is located at the MQL5/Scripts folder. What I’m doing wrong?


    admin Reply:

    Why? It is normal behavior. The script finished working and was removed.


  4. Dave

    Can you provide a mql4 version that will work with the current MT4 build? Thank You.


    Andriy Moraru Reply:

    I never created an MT4 version of the script, but you could try running this MT5 version in MT4.


  5. Luis Ricardo

    I tested your script in the different pairs to the H1 chart, but it always saves the same result for all tested pairs. What could I be doing wrong?


    Andriy Moraru Reply:

    The results should be different. Make sure you are not keeping the CSV file open while running the script. Otherwise, it will not be able to write the file.


  6. Roberto Pereira

    Hello, could you adjust the script to calculate the daily statistics? I would like to know how many pips on average some currency pairs make per day.


    Andriy Moraru Reply:

    You can find such a script in this post:


  7. Roberto Pereira

    How would you program this script to calculate the average size of the wicks? I use this information to choose a good size for stop loss.


    Andriy Moraru Reply:

    Yeah, you would need to copy Close[] and Open[] timeseries too. Then, in the script’s main cycle, you would need to check whether it was a bullish candle or a bearish one, and sum either High-Open or High-Close and either Close-Low or Open-Low differences. The counter (n[hour]) should also be increased twice instead of once. As a result, it will calculate the average of all hourly candle wicks.


  8. Natan

    Do you have a script or indicator that shows the average pips for each session?


    Andriy Moraru Reply:

    No, sorry. But you could probably modify the script from the post to calculate the average pips per a defined trading session.


Leave a Reply

required (will not be published)