You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MT5拉取数据并为货币对列表生成多个Pandas DataFrame

解决方案

直接遍历Symbols列表,通过动态变量命名或字典存储就能实现需求,以下是两种实用实现方式:

方式一:动态生成Table_1、Table_2这类独立变量

import MetaTrader5 as mt5
import pandas as pd

mt5.initialize()  # 连接MetaTrader 5

Symbols = ['AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'AUDUSD', 'CADCHF', 'CADJPY', 'CHFJPY', 'GBPAUD', 'GBPCAD',
           'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'EURAUD', 'EURCAD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURNZD',
           'EURUSD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY']

# 遍历货币对列表,按顺序生成对应DataFrame
for idx, symbol in enumerate(Symbols, start=1):
    # 拉取日线级别最近100条数据
    rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_D1, 0, 100)
    # 生成DataFrame并筛选需要的列
    df = pd.DataFrame(rates)[["time", "open", "high", "low", "close"]]
    # 动态创建变量,比如AUDCAD对应Table_1,AUDCHF对应Table_2
    globals()[f"Table_{idx}"] = df

# 验证:打印Table_1的前5行
print(Table_1.head())

方式二:用字典统一管理所有DataFrame(更推荐)

动态生成独立变量虽然能满足需求,但后续批量操作、遍历这些变量会很麻烦,用字典存储更便于管理:

import MetaTrader5 as mt5
import pandas as pd

mt5.initialize()  # 连接MetaTrader 5

Symbols = ['AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'AUDUSD', 'CADCHF', 'CADJPY', 'CHFJPY', 'GBPAUD', 'GBPCAD',
           'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'EURAUD', 'EURCAD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURNZD',
           'EURUSD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY']

tables = {}
for idx, symbol in enumerate(Symbols, start=1):
    rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_D1, 0, 100)
    df = pd.DataFrame(rates)[["time", "open", "high", "low", "close"]]
    tables[f"Table_{idx}"] = df

# 验证:获取Table_3并打印前5行
print(tables["Table_3"].head())

核心说明

  • enumerate(Symbols, start=1)用来获取每个货币对的序号(从1开始),对应Table_N的数字部分
  • 若要调整数据量或时间周期,直接修改mt5.copy_rates_from_pos的最后两个参数即可
  • 字典存储的优势:后续批量处理所有DataFrame时更灵活,不会造成全局变量混乱

内容的提问来源于stack exchange,提问作者Hellfire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:20:35