| import MetaTrader5 as mt5
|
| import pandas as pd
|
| from datetime import datetime
|
| from pathlib import Path
|
|
|
|
|
| symbols = ['DXYm','EURUSDm','GBPUSDm','USDJPYm','USDCADm','XAUUSDm']
|
| timeframe = mt5.TIMEFRAME_D1
|
| num_bars = 3650
|
| output_dir = Path("Datasource")
|
| output_dir.mkdir(exist_ok=True, parents=True)
|
|
|
|
|
| if not mt5.initialize():
|
| print("❌ MT5 Initialize failed")
|
| mt5.shutdown()
|
| exit()
|
|
|
|
|
| for symbol in symbols:
|
| print(f"Fetching {symbol} ...")
|
| rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, num_bars)
|
|
|
| if rates is None:
|
| print(f"❌ Failed to get rates for {symbol}")
|
| continue
|
|
|
|
|
| df = pd.DataFrame(rates)
|
| df['time'] = pd.to_datetime(df['time'], unit='s')
|
| df = df[['time', 'open', 'high', 'low', 'close', 'tick_volume']]
|
|
|
|
|
| csv_path = output_dir / f"{symbol}.csv"
|
| df.to_csv(csv_path, index=False)
|
| print(f"✅ Saved {csv_path}")
|
|
|
|
|
| mt5.shutdown()
|
| print("All done!")
|
|
|