用你的貨幣查詢大宗商品價格

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

發布於 。

後續步驟