大宗商品价格汇率换算:按你的货币取得报价

2026 年 10 月 24 日,以印尼盾计价的黄金现货价格,一次请求得到的是每金衡盎司 Rp 72,145,300,约合每克 Rp 2,319,525。黄金可以直接按任何受支持的币种请求;其他大宗商品以美元报价,因此需要乘以汇率。

使用 API 完成操作

用大宗商品代码选择金属或原油,再用币种代码选择其报价币种。黄金支持直接请求印尼盾。白银、铂金、钯金、铜、WTI 和 Brent 的现货价格以美元报价,因此要换算成印尼盾,还需要 USD/IDR 汇率。

现货大宗商品和外汇价格对所有账户都是实时的,这既适用于直接请求黄金,也适用于换算所用的价格。显示印尼盾金额时,请同时标明价格时间,以及该金额是每金衡盎司还是每克。

  1. 获取你的 API 密钥 获取免费密钥,并保存在环境变量 NARWHAL_API_KEY 中。向 https://api.narwhalapi.com 发送请求时,用 Authorization: Bearer YOUR_KEY 附上它;大宗商品请求和外汇请求使用同一个账户和密钥。
  2. 选择报价币种 要获取以印尼盾计价的黄金,请请求 GET /v1/commodities/spot/XAU/IDR;对于白银,请请求其美元现货价格和 GET /v1/fx/rates/USD?currencies=IDR。黄金代码之后的币种决定直接报价的币种,而外汇请求提供换算白银所需的汇率。
  3. 计算印尼盾价格 使用 Python 脚本直接读取 IDR 计价的黄金,并把白银的美元价格乘以 USD/IDR 汇率。它还会把黄金报价除以每金衡盎司的克数,得出四舍五入后的每克价格。
    Python,以印尼盾计价的黄金和白银
    import os
    import requests
    
    H = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    API = "https://api.narwhalapi.com/v1"
    GRAMS_PER_TROY_OUNCE = 31.1034768
    
    # Gold is quoted in every FX currency we serve, so ask for rupiah directly.
    gold = requests.get(f"{API}/commodities/spot/XAU/IDR", headers=H, timeout=10).json()
    print(
        "gold IDR per oz  ",
        gold["price"],
        "->",
        round(float(gold["price"]) / GRAMS_PER_TROY_OUNCE),
        "per gram",
    )
    
    # Silver is quoted in US dollars only: convert with the USD/IDR rate.
    silver = float(
        requests.get(f"{API}/commodities/spot/XAG/USD", headers=H, timeout=10).json()[
            "price"
        ]
    )
    idr = float(
        requests.get(
            f"{API}/fx/rates/USD", params={"currencies": "IDR"}, headers=H, timeout=10
        ).json()["rates"][0]["rate"]
    )
    print("silver IDR per oz", round(silver * idr), "=", silver, "x", idr)
  4. 价格要带上单位 把黄金的输出理解为每金衡盎司和每克的印尼盾价格,把白银的输出理解为每盎司的印尼盾价格。货币换算改变的是白银报价的币种;对黄金另行做的除法改变的则是其重量单位。

脚本从每个大宗商品响应中读取 price,并从外汇响应的 rates 数组中读取 rate。黄金的每克金额在除法之后四舍五入,白银的印尼盾金额则在乘法之后四舍五入。输出的白银计算过程包含该乘法所用的美元价格和汇率。

API 错误使用 application/problem+json,包含 status、code、detail 和 request_id。如果请求返回错误,请先查看其中的 code 和 detail,再决定是否用该响应进行价格计算。

在表格中或无需代码获取价格

如果想不写代码查看黄金价格,请打开 Narwhal 黄金价格页面,其中以多种币种显示黄金价格。当你想直接读取本币计价的黄金价格,而不想自己编写大宗商品和外汇请求时,可以走这条路径。

在表格中使用 =XAUUSD * USDIDR,两个单元格都用 API 的数据填入。XAUUSD 存放以美元计价的黄金价格,USDIDR 存放美元兑印尼盾的汇率。两者的乘积就是相同重量单位下的印尼盾黄金价格。这是黄金的换算路径;API 也支持直接请求 IDR 计价的黄金。

不同情况应选哪种方法

情况最合适的方法原因
按受支持币种计价的黄金直接指定币种黄金现货支持外汇覆盖列表中的所有币种
其他大宗商品的本币价格将美元现货价格乘以 USD/本币汇率其他大宗商品的现货报价仅有美元
特定时间点的价格两边都使用相同时间戳的 K 线大宗商品价格和汇率必须对应同一时间

为什么直接获取和换算得到的印尼盾黄金价格不同?

因为两个报价的时间戳不同。以 2026 年 10 月 24 日的示例为例,印尼盾黄金直接报价的时间戳是 2026 年 10 月 23 日 20:59 UTC,而外汇汇率的时间戳是 2026 年 10 月 23 日 00:00 UTC。因此,把美元黄金报价乘以该汇率,所用的时间点与印尼盾直接报价不同。

在 2026 年 10 月 24 日的示例中,USD 3,996.00 的黄金乘以 USD/IDR 18,107.8,得到 Rp 72,358,769,比直接报价 Rp 72,145,300 高 0.3%。请选定一种方法并始终沿用。若要得到特定时间点的价格,请对两边使用相同时间戳的 K 线。

USD/IDR 汇率是乘还是除?

把美元计价的大宗商品价格乘以 USD/IDR 汇率,就得到印尼盾价格。在 2026 年 10 月 24 日的示例中,USD/IDR 18,107.8 表示 1 美元可兑换 18,107.8 印尼盾。请把汇率理解为每美元兑多少印尼盾,再乘以大宗商品报价中的美元数额。

货币换算和重量换算要分开进行。乘以 USD/IDR 得到的是以大宗商品报价重量单位计的印尼盾价格。要把黄金价格表示为每克,请把每金衡盎司的价格除以每金衡盎司的克数 31.1034768。

黄金可以直接请求哪些币种?

黄金支持 外汇覆盖范围列表中的币种。请在现货请求中,把列表里的币种代码放在 XAU 之后。出现 404 currency_not_supported 表示该大宗商品没有该币种的报价。

该币种列表适用于黄金的直接报价。白银、铂金、钯金、铜、WTI 和 Brent 现货仍然只有美元报价。对这些大宗商品,请使用美元报价,并乘以美元兑你所需币种的汇率。

实例:以印尼盾计价的黄金和白银

2026 年 10 月 24 日,黄金的直接报价为每金衡盎司 Rp 72,145,300。以这个印尼盾金额为起点,除以每金衡盎司的 31.1034768 克,再把结果四舍五入到最接近的印尼盾,就得到每克 Rp 2,319,525。

对于 2026 年 10 月 24 日的白银,从每盎司 USD 53.9171 的现货价格开始,乘以 USD/IDR 汇率 18,107.8,再四舍五入到最接近的印尼盾。结果为每盎司 Rp 976,320。

2026 年 10 月 24 日的计算数值四舍五入后的结果
黄金(每克)Rp 72,145,300 / 31.1034768每克 Rp 2,319,525
白银(每盎司)USD 53.9171 × 每 1 USD 兑 18,107.8 IDR每盎司 Rp 976,320

发布于。

后续步骤