FXMacroData REST API 设计为任何可以执行 HTTP GET 请求的语言使用. fetch 简单的应用程序是从v18开始,所以没有什么额外的安装基本使用只是你的API键和几行JavaScript. 这本指南让你从零到一个工作的多指标脚本在不到十分钟.
你将要建造什么
一个自主Node.js脚本,可以对FXMacroData REST API进行认证,并行获取多个G10货币的政策利率和通胀数据,并将清洁的总结表打印到控制台准备进入任何后端,无服务器功能或自动化管道.
预先要求
- 诺德.js 18 或更高版本 v18引入了全球性
fetch建议使用API;v20+ - 没有 (与Node.js捆绑) 只需要如果您选择添加可选包
- 一个FXMacroData API 键 登记在 订阅 复制你的钥匙从仪表板
检查你的Node.js版本:
node --version # should print v18.x.x or later
步骤1 安全存储您的API密钥
永远不要在源文件中硬编码API密钥,这些密钥可能被提交到版本控制中.最简单的安全方法是运行时读取环境变量.
在Linux/macOS上,添加到你的shell配置文件 (~/.bashrc 没有 ~/.zshrc没有
export FXMD_API_KEY="your_actual_api_key_here"
在Windows (PowerShell) 上:
$env:FXMD_API_KEY = "your_actual_api_key_here"
对于Node.js项目来说,一个 .env 文件与
没有 对于此设置请参见步骤6.
步骤2 了解API的形状
每个FXMacroData指标终点都遵循相同的模式,这使得构建一个通用获取辅助器变得非常简单.以下是基本结构:
GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY
答案是JSON,具有顶级的 data 每个元素都带有一个 date一个数字 val并且 (对于大多数指标) announcement_datetime 标记出该值发布的第二秒:
{
"data": [
{ "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
{ "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
{ "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
]
}
这种清洁,一致的结构在商业逻辑,数据库或下游API中使用之前几乎不需要转换.
步骤3 您的第一次呼叫
创建一个名为 fxmd.js 然后添加下面的. 这会通过Node.js的内置来获取过去两年的美国联邦储备政策利率. fetch没有人知道.
// fxmd.js — requires Node.js 18+
const API_KEY = process.env.FXMD_API_KEY;
const BASE = "https://fxmacrodata.com/api/v1";
async function getIndicator(currency, indicator, startDate) {
const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
url.searchParams.set("api_key", API_KEY);
if (startDate) url.searchParams.set("start", startDate);
const res = await fetch(url.toString());
if (!res.ok) {
throw new Error(`API error ${res.status}: ${await res.text()}`);
}
const json = await res.json();
return json.data ?? [];
}
// Fetch the Fed policy rate
const data = await getIndicator("usd", "policy_rate", "2023-01-01");
console.log(`Latest USD policy rate: ${data[0]?.val}% on ${data[0]?.date}`);
运行它:
FXMD_API_KEY=your_key node fxmd.js
顶级等待 上面的例子使用了顶级 await这样就行了.
.mjs 文件或什么时候 "type": "module" 设置在你的 package.json. 在CommonJS模块中,将调用包装在一个 async 直接调用 (见步骤5中的完整示例).
步骤4 并行获取多个指标
Promise.all 查看此图片,查看下列几个指标的图片:
const CURRENCIES = ["usd", "eur", "gbp", "aud", "jpy"];
const INDICATORS = ["policy_rate", "inflation"];
const START = "2024-01-01";
// Build a flat list of [currency, indicator] pairs
const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));
// Fire all requests in parallel
const results = await Promise.all(
pairs.map(([currency, indicator]) =>
getIndicator(currency, indicator, START)
.then(data => ({ currency, indicator, latest: data[0] ?? null }))
.catch(err => ({ currency, indicator, latest: null, error: err.message }))
)
);
// Print a quick summary
for (const row of results) {
if (row.error) {
console.log(`${row.currency.toUpperCase()} ${row.indicator}: ERROR — ${row.error}`);
} else if (row.latest) {
console.log(
`${row.currency.toUpperCase()} ${row.indicator}: ${row.latest.val} (${row.latest.date})`
);
}
}
没有什么. .catch 在执行部分数据仍可操作的夜间工作时有用.
步骤5 完成制作-准备好剧本
下面是一个完整的CommonJS兼容脚本,具有适当的错误处理,可配置的货币和指标列表,以及用于记录或下游处理的输出格式:
// macro-snapshot.js — CommonJS, Node.js 18+
"use strict";
const API_KEY = process.env.FXMD_API_KEY;
const BASE = "https://fxmacrodata.com/api/v1";
if (!API_KEY) {
console.error("Error: FXMD_API_KEY environment variable is not set.");
process.exit(1);
}
// ── Configuration ──────────────────────────────────────────────────────────
const CURRENCIES = ["usd", "eur", "gbp", "cad", "jpy", "aud", "nzd", "chf"];
const INDICATORS = ["policy_rate", "inflation", "unemployment"];
const START_DATE = "2024-01-01";
// ───────────────────────────────────────────────────────────────────────────
async function getIndicator(currency, indicator, startDate) {
const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
url.searchParams.set("api_key", API_KEY);
if (startDate) url.searchParams.set("start", startDate);
const res = await fetch(url.toString());
if (!res.ok) {
const body = await res.text().catch(() => "");
throw new Error(`HTTP ${res.status}${body ? ": " + body.slice(0, 120) : ""}`);
}
const json = await res.json();
return Array.isArray(json.data) ? json.data : [];
}
async function main() {
const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));
const results = await Promise.all(
pairs.map(async ([currency, indicator]) => {
try {
const data = await getIndicator(currency, indicator, START_DATE);
return { currency, indicator, latest: data[0] ?? null, error: null };
} catch (err) {
return { currency, indicator, latest: null, error: err.message };
}
})
);
// Group by currency for readable output
const byCurrency = {};
for (const row of results) {
if (!byCurrency[row.currency]) byCurrency[row.currency] = [];
byCurrency[row.currency].push(row);
}
console.log("\n=== FXMacroData Macro Snapshot ===\n");
for (const [currency, rows] of Object.entries(byCurrency)) {
console.log(` ${currency.toUpperCase()}`);
for (const row of rows) {
if (row.error) {
console.log(` ${row.indicator.padEnd(20)} — error: ${row.error}`);
} else if (row.latest) {
console.log(
` ${row.indicator.padEnd(20)} ${String(row.latest.val).padStart(8)} (${row.latest.date})`
);
} else {
console.log(` ${row.indicator.padEnd(20)} — no data`);
}
}
console.log();
}
}
main().catch(err => {
console.error("Fatal:", err.message);
process.exit(1);
});
运行脚本:
FXMD_API_KEY=your_key node macro-snapshot.js
样本输出:
=== FXMacroData Macro Snapshot ===
USD
policy_rate 4.25 (2025-03-19)
inflation 2.40 (2025-04-10)
unemployment 4.20 (2025-04-04)
EUR
policy_rate 2.40 (2025-04-17)
inflation 2.20 (2025-04-16)
unemployment 6.10 (2025-03-31)
GBP
policy_rate 4.50 (2025-03-20)
inflation 2.60 (2025-03-26)
unemployment 4.40 (2025-04-15)
...
步骤6 使用Dotenv为地方发展
在构建一个较大的Node.js项目时,将API密钥存放在一个 .env
文件并自动加载它
没有 包装:
npm install dotenv
创建一个 .env 在您的项目根中添加文件 (添加到 .gitignore 立即):
FXMD_API_KEY=your_actual_api_key_here
在脚本的顶部添加一行:
require("dotenv").config(); // CommonJS
// or
import "dotenv/config"; // ES module
剧本的其余部分是 process.env.FXMD_API_KEY 没有其他变化.
在生产中 它们的使用方法包括:
FXMD_API_KEY 通过平台的秘密管理器. .env 文件转移到源控制.
步骤7 探索完整的指标目录
上面的宏观快照涵盖了三个指标,但FXMacroData显示了超过80个时间序列,涵盖14个主要货币区块. getIndicator 帮助他们所有人只是交换货币和指标. 几个高价值的例子,为外汇交易者:
-
实际利率 减去
inflation没有policy_rate计算两种货币之间的实际利率差异,这是中期外汇方向的核心驱动因素. 美元政策利率文件 对于终点的细节. -
劳动力数据 没有
unemployment没有人知道.non_farm_payrolls没有average_hourly_earnings给出了关于央行反应功能的早期信号. -
感觉 没有
consumer_confidence没有人知道.pmi没有business_confidence它们可以在汇率决定之前先于汇率变动. -
贸易流动 没有
trade_balance没有人知道.exports没有imports链接商品货币对 (AUD,NZD,CAD) 与交易条件的变化.
查看任何货币的完整目录
https://fxmacrodata.com/api/v1/catalogue/{currency}?api_key=YOUR_API_KEY您可以在 鱼数据文件现在我们要做什么?
总结
现在你有了需要从Node.js消耗FXMacroData的一切:
- 一个通用
getIndicator(currency, indicator, startDate)帮助处理auth和错误检查的助手 - 通过 通过
Promise.all具有每次请求错误隔离 - 一个可计划,部署到无服务器函数或集成到现有Node.js后端的生产准备脚本
- 通过环境变量或
dotenv
计划快照脚本使用cron工作或任务运行器,如 没有通过JSON,您可以将结果推向数据库,或将其输入到交易算法中.无论您是构建一个反应仪表板,一个快速API还是云函数触发器,脚本读取的相同的清洁JSON结构都是一样的.
更多的语言指南请参阅 快速开始指南 部分 Python 和 R 步骤涵盖了同样的指标,并使用了特定生态系统的分析和可视化工具.