FXMacroData REST API dirancang untuk dikonsumsi dari bahasa apa pun yang dapat membuat permintaan HTTP GET. Node.js dikirim dengan built-in fetch implementasi dari v18 ke depan, jadi tidak ada tambahan untuk menginstal untuk penggunaan dasar hanya kunci API Anda dan beberapa baris JavaScript. panduan ini berjalan Anda dari nol ke script multi-indikator yang bekerja dalam waktu kurang dari sepuluh menit.
Apa yang Akan Anda Bangun
Skrip Node.js mandiri yang mengotentikasi terhadap FXMacroData REST API, mengambil kebijakan tingkat dan inflasi data untuk beberapa mata uang G10 secara paralel, dan mencetak tabel ringkasan bersih ke konsol siap untuk drop ke setiap backend, serverless fungsi, atau pipa otomatisasi.
Persyaratan
- Node.js 18 atau lebih baru v18 memperkenalkan global
fetchAPI; v20+ direkomendasikan untuk produksi - npm (digabungkan dengan Node.js) hanya diperlukan jika Anda memilih untuk menambahkan paket opsional
- Kunci API FXMacroData daftar di /langganan dan menyalin kunci Anda dari dasbor
Periksa versi Node.js Anda:
node --version # should print v18.x.x or later
Langkah 1 Simpan Kunci API Anda dengan Aman
Jangan pernah hard-code kunci API dalam file sumber yang bisa berkomitmen untuk kontrol versi. Pendekatan yang paling aman adalah variabel lingkungan yang dibaca pada saat runtime.
Pada Linux / macOS, tambahkan ke profil shell Anda (~/.bashrc atau ~/.zshrc):
export FXMD_API_KEY="your_actual_api_key_here"
Pada Windows (PowerShell):
$env:FXMD_API_KEY = "your_actual_api_key_here"
Untuk proyek Node.js, a .env file dengan
Dotenv paket adalah alternatif yang populer lihat Langkah 6 untuk pengaturan tersebut.
Langkah 2 Memahami Bentuk API
Setiap titik akhir indikator FXMacroData mengikuti pola yang sama, yang membuatnya mudah untuk membangun pembantu pengambilan generik.
GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY
Tanggapan adalah JSON dengan tingkat atas data Setiap elemen membawa date, sebuah angka val, dan (untuk sebagian besar indikator) announcement_datetime yang menunjukkan detik nilai dirilis:
{
"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" }
]
}
Struktur yang bersih dan konsisten ini hampir tidak memerlukan transformasi sebelum digunakan dalam logika bisnis, database, atau API hilir.
Langkah 3 Panggilan Pertama Anda
Buat file bernama fxmd.js Ini mengambil suku bunga kebijakan US Federal Reserve untuk dua tahun terakhir menggunakan Node.js built-in fetchAku tidak tahu.
// 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}`);
Larilah:
FXMD_API_KEY=your_key node fxmd.js
Tingkat atas menunggu contoh di atas menggunakan tingkat atas awaitIni akan bekerja di
.mjs file atau kapan "type": "module" yang diatur di package.jsonUntuk modul CommonJS bungkus panggilan di async fungsi dan memanggilnya segera (lihat contoh lengkap di Langkah 5).
Langkah 4 Dapatkan beberapa indikator secara paralel
Promise.all ini adalah pola yang dapat digunakan kembali untuk menarik beberapa mata uang dan indikator sekaligus:
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})`
);
}
}
- Apa? .catch Per permintaan berarti satu tanggapan yang buruk tidak membatalkan seluruh batch berguna ketika menjalankan pekerjaan malam di mana data parsial masih dapat ditindaklanjuti.
Langkah 5 Skripsi siap produksi lengkap
Di bawah ini adalah skrip yang kompatibel dengan CommonJS dengan penanganan kesalahan yang tepat, daftar mata uang dan indikator yang dapat dikonfigurasi, dan output yang diformat untuk logging atau pengolahan hilir:
// 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);
});
Jalankan skrip:
FXMD_API_KEY=your_key node macro-snapshot.js
Hasil sampel:
=== 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)
...
Langkah 6 Menggunakan Dotenv untuk Pembangunan Lokal
Saat membangun proyek Node.js yang lebih besar lebih nyaman untuk menyimpan kunci API Anda di .env
file dan memuatnya secara otomatis dengan
Dotenv Paket:
npm install dotenv
Buatlah .env file di root proyek Anda (tambahkan ke .gitignore segera):
FXMD_API_KEY=your_actual_api_key_here
Tambahkan satu baris ke bagian atas skrip Anda:
require("dotenv").config(); // CommonJS
// or
import "dotenv/config"; // ES module
Sisanya naskah berbunyi process.env.FXMD_API_KEY sama seperti sebelumnya tidak ada perubahan lain yang diperlukan.
Dalam produksi (Cloud Fungsi, AWS Lambda, Vercel, Render, dll) menyuntik
FXMD_API_KEY sebagai variabel lingkungan aman melalui pengelola rahasia platform. .env File ke sumber kontrol.
Langkah 7 Jelajahi Katalog Indikator Lengkap
Gambar makro di atas mencakup tiga indikator, tetapi FXMacroData mengekspos lebih dari 80 deret waktu di 14 blok mata uang utama. getIndicator beberapa contoh nilai tinggi untuk pedagang FX:
-
Tingkat riil mengurangi
inflationdaripolicy_rateUntuk menghitung perbedaan suku bunga riil antara dua mata uang, pendorong inti arah FX jangka menengah. Dokumen suku bunga kebijakan USD untuk rincian titik akhir. -
Data tenaga kerja
unemploymentAku akan pergi.non_farm_payrolls, danaverage_hourly_earnings(USD) memberikan sinyal awal tentang fungsi reaksi bank sentral. -
Perasaan
consumer_confidenceAku akan pergi.pmi, danbusiness_confidencemenunjukkan indikator data yang kuat dengan satu sampai dua bulan dan dapat mendahului pergerakan mata uang sebelum muncul dalam keputusan suku bunga. -
Aliran perdagangan
trade_balanceAku akan pergi.exports, danimportsmenghubungkan pasangan mata uang komoditas (AUD, NZD, CAD) dengan pergeseran istilah perdagangan.
Lihat katalog penuh untuk mata uang apa pun di
https://fxmacrodata.com/api/v1/catalogue/{currency}?api_key=YOUR_API_KEY, atau jelajahi dokumen interaktif di api-data-docs.
Ringkasan
Anda sekarang memiliki semua yang Anda butuhkan untuk mengkonsumsi FXMacroData dari Node.js:
- Sebuah generik.
getIndicator(currency, indicator, startDate)helper yang menangani auth dan kesalahan pemeriksaan - Permintaan multi-indikator paralel melalui
Promise.alldengan isolasi kesalahan per permintaan - Skrip siap produksi yang dapat Anda jadwalkan, terapkan ke fungsi serverless, atau mengintegrasikan ke dalam Node.js backend yang ada
- Manajemen kunci API aman melalui variabel lingkungan atau
dotenv
Langkah selanjutnya yang alami: Jadwalkan skrip snapshot dengan pekerjaan cron atau pengelola tugas seperti n8n, mendorong hasil ke database, atau memberi makan mereka ke dalam algoritma perdagangan. struktur JSON yang sama bersih skrip membaca bekerja sama apakah Anda membangun React dashboard, Express API, atau Cloud Fungsi pemicu.
Untuk panduan khusus bahasa lebih lanjut lihat Panduan Memulai Cepat Bagian panduan Python dan R mencakup set indikator yang sama dengan alat khusus ekosistem untuk analisis dan visualisasi.