MetaQuotes-Demo server is for update MT5 to the beta build and to test beta builds.
And the trading account with the broker should be used for any other cases (because MetaQuotes is not a broker).
And the trading account with the broker should be used for any other cases (because MetaQuotes is not a broker).
Good investigation. As Sergey noted, MetaQuotes-Demo is a beta/demo server, so history depth and continuity are not guaranteed there: whole-day gaps like your Oct 1-2 are common and often never backfill, so a broker account is indeed the more reliable data source for research. On the copy_rates_range() side, partial days are often a local caching issue rather than missing server data. The Python module pulls history through the terminal, so open the XAUUSD M1 chart on that account and press Home / scroll back to force the terminal to download the bars, and check Tools - Options - Charts - Max bars in history. Also remember the terminal works in server time (usually EET, GMT+2/+3), so a "complete UTC day" does not line up with the terminal's day: request a wider range and filter by the bar timestamps yourself. To locate exactly where history stops, loop copy_rates_from_pos with increasing position until it returns fewer bars than requested; that pinpoints the gap boundary.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hello,
I am investigating historical M1 data availability for XAUUSD on the MetaQuotes-Demo server in MetaTrader 5.
I requested complete, closed UTC days using the Python MT5 copy_rates_range() function, but received incomplete data:
October 1–2, 2026: 0 M1 bars
October 5, 2026: 803 bars (01:00–14:22 UTC)
October 6, 2026: 322 bars (01:00–06:21 UTC)
October 7, 2026: 443 bars (01:00–08:22 UTC)
Could you please confirm whether the missing XAUUSD M1 historical bars are available on MetaQuotes-Demo?
If the data exists, why might copy_rates_range() return only part of a completed UTC day? Is additional history synchronization required, or is there a server-side history limitation?
Thank you for your help.