快速启动:使用Node.js连接到FXMacroData banner image

By Language

Quick Start Guides

快速启动:使用Node.js连接到FXMacroData

在Node.js中在几分钟内启动FXMacroData. 涵盖内置的获取API,异步/等待模式,多指标请求以及用于抽取中央银行数据的现成脚本.

其他语言版本 English

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 步骤涵盖了同样的指标,并使用了特定生态系统的分析和可视化工具.

AI Answer-Ready

Key Facts

Page
Quick Start Nodejs FXmacrodata
Section
Articles
Canonical URL
https://fxmacrodata.com/articles/quick-start-nodejs-fxmacrodata
Source
FXMacroData editorial and official publisher references
Last Updated
2026-04-22 12:37 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains Quick Start Nodejs FXmacrodata with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.

Blogroll