月平均汇率计算

2026年9月 USD/IDR 平均汇率为 17,742.56,是22个每日观测值的平均,从9月1日的 17,744.7 到9月30日的 17,891.1。只需请求一次当月每日汇率再求平均。

用 API 计算平均值

使用你要平均的月份的每日观测值。把返回的汇率相加,再除以观测值个数,每个观测值权重相同。请求以 USD 为基准货币,请求的货币为 IDR。把平均值用于表格或发票计算时,请在结果旁保留这个货币对。

  1. 获取密钥并设置环境变量 在 narwhalapi.com/signup 获取免费密钥,然后放入环境变量 NARWHAL_API_KEY。脚本会读取该变量,并在 Authorization 请求头中以 Bearer 令牌的形式发送密钥。
  2. 设置月份和货币 对每日观测值端点使用该月的起止日期。脚本中的请求以 USD 为基准,选取2026年9月的 IDR。其 limit 足以容纳该月的观测值行数。
  3. 请求汇率并计算平均值 脚本会请求观测值,把每个日期与汇率放在一起,并计算算术平均。它先输出观测值个数和平均值,再输出带日期的第一个和最后一个观测值。计算时从每个观测值内的 rates 读取汇率,转成数字后再相加。日期与这个数字一起保留,所以输出的第一行和最后一行仍带有日期。
    Python,2026年9月平均值
    import os
    import requests
    
    r = requests.get(
        "https://api.narwhalapi.com/v1/fx/rates/USD/observations",
        params={
            "currencies": "IDR",
            "start_date": "2026-09-01",
            "end_date": "2026-09-30",
            "limit": 100,
        },
        headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"},
        timeout=10,
    )
    r.raise_for_status()
    days = [(d["date"], float(d["rates"][0]["rate"])) for d in r.json()["observations"]]
    print(len(days), "days, average", round(sum(v for _, v in days) / len(days), 2))
    print("first", days[0], "last", days[-1])
  4. 结合结果查看日期 请把返回的第一个和最后一个日期与你请求的月份对照查看。把这些日期和观测值个数与平均值一起保存,结果的期间就很明确,背后的每日数据行也可以追溯。

一个月的每日观测值行数不会超过100行,所以请求的 limit 足以完成这次计算。时间范围更长时,请沿 next_cursor 获取其余观测值。更长范围的平均值需要该范围内的全部观测值,第一次响应可能只包含其中一部分。

在表格中计算平均值

手动计算一个月时,把每日汇率粘贴到 B 列,并把观测日期放在旁边。使用你要平均的那个月的行。2026年9月 USD/IDR 示例有22个观测值,所以汇率落在这个公式使用的区域内。

对2026年9月的每日汇率求平均
=AVERAGE(B2:B23)

该公式对这个区域内的汇率取简单平均。与 Python 计算相同,每个每日观测值的贡献相等。粘贴汇率时请保留日期列,这样可以确认单元格代表的月份,以及包含的第一个和最后一个观测值。

在较长的列表中按月求平均时,使用 AVERAGEIFS。用观测日期选出应计入每个平均值的月份的汇率。这样可以把一长串带日期的观测值放在一起,同时用各月自己的行分别计算平均值。

不同情况应选哪种方法

情况最合适的方法原因
手动计算一个月表格AVERAGE 计算当月每日汇率的平均值
多个月份或多种货币对起止日期循环的脚本对每个请求的月份或货币重复每日观测值的计算
符合审计要求的政策汇率会计政策规定的汇率所需方法取决于该政策

表格和脚本计算的是每日观测值的平均值。政策汇率可能要求其他方法,例如月末汇率的平均值或加权平均。在把结果用作发票汇率之前,请先确定你的账务需要哪种方法。

月平均汇率要把周末算进去吗?

不要。数据只包含观测日,周末没有数据行。通常的做法是对这些观测日求平均。请用返回的行数作为这个算术平均的除数。如果改用日历天数,计算就会变化,因为总和里只有返回的每日观测值。平均值要与确实有汇率的日期对应。

我的账务需要哪种平均值?

这取决于你的会计政策;请向会计师确认政策规定了哪种汇率和方法。每日观测值的算术平均是常见选择之一。有些会计规则要求使用月末汇率的平均值或加权平均。这些方法选用的汇率或权重不同,所以仅凭每日平均值无法确定账务应采用哪个汇率。

如果响应的起始日期晚于我请求的月份怎么办?

所有账户都可读取完整历史。在将结果视为完整的月度平均值之前,请先查看返回的第一个日期。如果响应从月中开始,返回的观测值只覆盖该部分。

计算示例:2026年9月 USD/IDR

对于2026年9月,取当月22个每日 USD/IDR 观测值的平均。第一个观测值日期为2026年9月1日,最后一个为2026年9月30日。把每日汇率相加,除以观测值个数,再把得到的平均值用于发票计算。

2026年9月计算数值
每日观测值22
2026年9月1日的汇率17,744.7
2026年9月30日的汇率17,891.1
每日观测值的算术平均17,742.56
发票金额USD 8,000
按月平均汇率开具发票计算:8,000 × 17,742.56 = 141,940,480 IDR

发布于。

后续步骤