如何用Python获取指定日期范围内按分钟间隔的历史外汇汇率?
实现方案
你只需要按分钟生成目标时间区间的所有时间点,挨个查询对应汇率后格式化输出即可,完整实现代码如下:
from forex_python.converter import CurrencyRates import datetime import time # 初始化汇率转换器 c = CurrencyRates() # 自定义配置:货币对、时间范围 base_currency = "CAD" target_currency = "USD" currency_pair = f"{base_currency} - {target_currency}" # 注意datetime参数顺序为 年、月、日、时、分(24小时制) start_dt = datetime.datetime(2007, 8, 1, 13, 15) end_dt = datetime.datetime(2007, 8, 1, 13, 20) # 打印表头 print(f"{'Rate':<8}{'DateTime':<25}{'Currency'}") current_dt = start_dt while current_dt <= end_dt: try: # 获取对应时间点汇率 rate = c.get_rate(base_currency, target_currency, current_dt) # 格式化时间为 月-日-年 时:分pm/am 格式 formatted_dt = current_dt.strftime("%m-%d-%Y %I:%M%p").lower() # 保留3位小数输出,和示例格式对齐 print(f"{rate:<8.3f}{formatted_dt:<25}{currency_pair}") except Exception: # 无对应时间汇率时返回N/A占位 formatted_dt = current_dt.strftime("%m-%d-%Y %I:%M%p").lower() print(f"{'N/A':<8}{formatted_dt:<25}{currency_pair}") # 时间步进1分钟 current_dt += datetime.timedelta(minutes=1) # 大时间范围查询可开启下方延时,避免请求频繁被限制 # time.sleep(0.1)
补充说明
- 你可以自行修改代码里的货币对、起始/结束时间参数适配自己的需求,时间格式化的规则也可以根据需要调整
strftime的参数。 - 如果需要把结果导出为正式表格文件,可以引入pandas库,把所有查询结果存为列表后转成DataFrame,调用
to_csv()或to_excel()方法即可导出对应格式的文件。 - forex-python的数据源对太久远的历史数据覆盖有限,如果查询非常早期的时间点返回N/A属于正常情况。
内容的提问来源于stack exchange,提问作者NewInPython
相关产品推荐
相关产品推荐

