Dukascopy Historical Data

If you are a programmer, you can use the unofficial jforexapi or scrape the Dukascopy JSON endpoint. However, the easiest coding method is using the dukascopy Python library:

# Example pseudo-code
from dukascopy import Dukascopy

data = Dukascopy().get_instrument('EUR/USD', 'M1', start='2020-01-01', end='2020-12-31') print(data.head()) dukascopy historical data

| Feature | Dukascopy | OANDA | Forex.com | DTE (DTN IQFeed) | | :--- | :--- | :--- | :--- | :--- | | Tick Data | Free (Yes) | Paid (API) | No | Paid ($) | | Goes back to | 2003 | 2005 | 2010 | 2000 | | Cost | Free | $0.10 per 100k ticks | Free (Daily only) | $70+/month | | Spread Accuracy | True ECN | True ECN | Brokered Marks | True ECN | If you are a programmer, you can use

Verdict: For the retail trader who cannot afford Bloomberg or Reuters data feeds ($2,000+/month), Dukascopy is the undisputed king of free historical data. | Feature | Dukascopy | OANDA | Forex

| Feature | Description | |--------|-------------| | Depth | Tick-level data available for most instruments. | | Coverage | 20+ years of FX data (e.g., EUR/USD from 2003). | | Accuracy | Ticks are sourced from actual trades and quotes. | | Free tier | Non-commercial users can export data via JForex without cost. | | No survivorship bias | Includes delisted instruments historically. |

  • Instrument Coverage: Includes over 60 currency pairs (EUR/USD, GBP/JPY, etc.), major precious metals (Gold, Silver), commodities (Brent, WTI), and CFDs on indices.
  • Bid & Ask Prices: Unlike some free sources that provide only the midpoint, Dukascopy data includes separate bid and ask columns, essential for realistic backtesting of spreads and slippage.
  • Date Range: Historical data is typically available from 2003 onwards for major pairs, offering nearly two decades of market history.