Pada akhir panduan ini Anda akan memiliki contoh kerja untuk setiap titik akhir publik di FXMacroData API dari seri pengumuman dan kalender rilis untuk posisi COT, harga logam mulia, nilai tukar mata uang asing, dan antarmuka GraphQL sehingga Anda dapat memilih alat yang tepat untuk setiap alur kerja data makro.
Persyaratan
- Akun FXMacroData fxmacrodata.com
- Kunci API Profesional untuk akses endpoint non-USD dan berbayar (permintaan USD gratis di sebagian besar endpoint)
curluntuk contoh baris perintah, atau Python 3.9+ denganrequestsperpustakaan- Keterampilan dasar dengan API REST dan respon JSON
| Keluarga titik akhir | Rute | Penulis |
|---|---|---|
| Pengumuman | /api/v1/umum/{mata uang}/{indikator} | USD gratis · Pro untuk orang lain |
| Kalender Rilis | /api/v1/kalender/{mata uang} | Bebas |
| Katalog Data | /api/v1/data_catalogue/{currency} | Bebas |
| Posisi COT | /api/v1/cot/{mata uang} | USD gratis · Pro untuk orang lain |
| Logam | /api/v1/komoditas/{indikator} | Kunci Pro selalu diperlukan |
| Nilai tukar Forex | /api/v1/forex/{base}/{quote} | Bebas |
| Sesi Pasar | /api/v1/market_session | Bebas |
| GraphQL | /api/v1/graphql | USD + katalog gratis · Pro untuk yang lain |
Tahap 1 Pengumuman: seri indikator historis
Endpoint pengumuman adalah inti dari FXMacroData. Ini mengembalikan seri waktu berstempel waktu yang ternormalized untuk setiap indikator makroekonomi yang didukung. Setiap baris membawa tanggal observasi, nilai yang dirilis, dan timestamp Unix yang tepat dari publikasi resmi memberikan presisi tingkat kedua untuk penelitian dan backtesting yang didorong oleh acara.
Permintaan USD bekerja tanpa kunci API. Untuk mata uang lain, tambahkan kunci Anda sebagai parameter kueri. Gunakan start_date Dan end_date (YYY-MM-DD) untuk mempersempit jendela; default adalah 365 hari terakhir.
# USD inflation series — no key needed
curl "https://fxmacrodata.com/api/v1/announcements/usd/inflation"
# AUD policy rate — Pro key required
curl "https://fxmacrodata.com/api/v1/announcements/aud/policy_rate?api_key=YOUR_API_KEY"
# EUR GDP with a custom date range
curl "https://fxmacrodata.com/api/v1/announcements/eur/gdp?start_date=2024-01-01&end_date=2026-03-01&api_key=YOUR_API_KEY"
{
"currency": "USD",
"indicator": "inflation",
"has_official_forecast": false,
"start_date": "2025-03-01",
"end_date": "2026-03-30",
"data": [
{
"date": "2026-02-01",
"val": 2.8,
"announcement_datetime": 1741082400,
"pct_change": -0.5,
"pct_change_12m": -6.7
}
]
}
- Apa? announcement_datetime field is a Unix timestamp (seconds, UTC) for the exact moment the data was officially published. Use it for event study alignment and to avoid look-ahead bias in backtests. Browse available indicator slugs for any currency with the data catalogue (Step 3) or at Dokumen data API.
Langkah 2 Kalender rilis: waktu pengumuman mendatang
Endpoint kalender mengembalikan timestamp pengumuman UTC yang dijadwalkan untuk setiap rilis makro mendatang untuk mata uang tertentu. Gunakan untuk menjadwalkan pengambilan yang ditargetkan yang ditembakkan ketika data baru dipublikasikan daripada jajak pendapat secara terus menerus pada interval tetap.
Tidak diperlukan kunci API. Filter ke indikator tertentu dengan opsional indicator parameter pertanyaan. kode mata uang khusus COMM mengembalikan jadwal rilis komoditas.
# All upcoming releases for USD
curl "https://fxmacrodata.com/api/v1/calendar/usd"
# Filter to a single indicator
curl "https://fxmacrodata.com/api/v1/calendar/usd?indicator=non_farm_payrolls"
# Commodity release schedule
curl "https://fxmacrodata.com/api/v1/calendar/COMM"
{
"currency": "USD",
"indicator": "non_farm_payrolls",
"data": [
{
"release": "non_farm_payrolls",
"announcement_datetime": 1746540600,
"requires_api_key": false
}
]
}
Mengkonversi timestamp ke waktu UTC yang dapat dibaca manusia dengan datetime.fromtimestamp(ts, tz=timezone.utc) di Python atau new Date(ts * 1000).toISOString() Untuk pola penjadwalan lengkap, lihat Cara Menggunakan Release Calendar API untuk Jadwal Indikator Fetch.
Langkah 3 Katalog Data: Temukan indikator yang tersedia
Sebelum menulis kode yang menargetkan indikator tertentu, query katalog untuk mengkonfirmasi apa yang tersedia untuk mata uang. Tanggapan memetakan setiap indikator slug ke nama yang dapat dibaca manusia, unit, frekuensi rilis, dan apakah bank sentral menerbitkan perkiraan resmi untuk itu.
# List all indicators for EUR — no key required
curl "https://fxmacrodata.com/api/v1/data_catalogue/eur"
# Include routing and auth discovery metadata per indicator
curl "https://fxmacrodata.com/api/v1/data_catalogue/usd?include_capabilities=true"
{
"gdp": {
"name": "GDP Growth",
"unit": "%QoQ",
"frequency": "Quarterly",
"has_official_forecast": false
},
"inflation": {
"name": "Inflation (CPI)",
"unit": "%YoY",
"frequency": "Monthly",
"has_official_forecast": false
},
"policy_rate": {
"name": "Policy Rate",
"unit": "%",
"frequency": "Meeting",
"has_official_forecast": true
}
}
Kunci tingkat atas dalam jawaban adalah persis {indicator} Slang untuk digunakan dalam panggilan pengumuman. Mata uang yang didukung termasuk USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, CNY, SGD, SEK, DKK, PLN, dan BRL. Pass include_coverage=true untuk mendapatkan jaringan ketersediaan lintas mata uang dalam satu tanggapan.
Langkah 4 Posisi COT: data spekulatif berjangka
Komitmen Endpoint Pedagang memberikan data posisi CFTC mingguan untuk kontrak berjangka FX. Ini menunjukkan total bunga terbuka dibagi antara non-komersial (spekulasi), komersial (hedger), dan peserta non-diterangkan indikator utama yang dilacak secara luas untuk pembalikan tren mata uang dan posisi penuh.
Mata uang yang didukung: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD. USD gratis; semua yang lain memerlukan kunci Pro.
# USD COT history — free
curl "https://fxmacrodata.com/api/v1/cot/usd"
# EUR COT with a custom date range
curl "https://fxmacrodata.com/api/v1/cot/eur?start_date=2025-01-01&api_key=YOUR_API_KEY"
{
"currency": "EUR",
"instrument": "EURO FX - CHICAGO MERCANTILE EXCHANGE",
"fx_overlay": { "pair": "EUR/USD" },
"start_date": "2025-01-07",
"end_date": "2026-03-25",
"data": [
{
"date": "2026-03-18",
"announcement_datetime": 1742493000,
"open_interest": 812345,
"noncommercial_long": 185000,
"noncommercial_short": 92000,
"noncommercial_net": 93000,
"commercial_long": 203000,
"commercial_short": 310000,
"commercial_net": -107000,
"nonreportable_long": 21000,
"nonreportable_short": 9000
}
]
}
- Apa? noncommercial_net Setiap baris juga membawa indikator posisi yang paling sering dikutip untuk pedagang FX. announcement_datetime untuk publikasi CFTC Jumat pukul 3:30 PM ET. Untuk konteks pasangan EUR lihat Docs suku bunga kebijakan EUR.
Langkah 5 Logam: harga emas, perak, dan platinum
Metals endpoint mengembalikan seri harga harian untuk logam mulia yang berasal dari The Royal Mint (LBMA fixes). Seri ini berguna sebagai input makro lintas aset, terutama untuk melacak aliran safe haven dan dinamika yang terkait dengan USD.
Kunci API Profesional selalu diperlukan untuk titik akhir ini. goldAku akan pergi. silverAku akan pergi. platinum.
# Gold LBMA PM Fix daily prices
curl "https://fxmacrodata.com/api/v1/commodities/gold?api_key=YOUR_API_KEY"
# Silver with a date range
curl "https://fxmacrodata.com/api/v1/commodities/silver?start_date=2025-01-01&api_key=YOUR_API_KEY"
# Platinum spot
curl "https://fxmacrodata.com/api/v1/commodities/platinum?api_key=YOUR_API_KEY"
{
"currency": "COMM",
"indicator": "gold",
"has_official_forecast": false,
"start_date": "2025-03-30",
"end_date": "2026-03-30",
"data": [
{
"date": "2026-03-28",
"val": 2870.00,
"pct_change": 1.2,
"pct_change_12m": 30.1
}
]
}
Bentuk respons identik dengan titik akhir pengumuman, sehingga Anda dapat menggunakan kembali kode parsing yang sama. announcement_datetime adalah null untuk seri harga harian dan hanya dipenuhi untuk acara publikasi bulanan resmi.
Langkah 6 Nilai tukar mata uang asing: seri harga spot harian
Forex endpoint mengembalikan data spot rate OHLC harian untuk pasangan mata uang yang didukung. Tidak diperlukan kunci API. Gunakan untuk menyelaraskan rilis indikator makro dengan nilai tukar kontemporer untuk backtesting atau aliran kerja visualisasi grafik.
Pass basis dan quote sebagai segmen jalur terpisah (misalnya /forex/eur/usd Untuk EUR/USD). indicators parameter kueri.
# EUR/USD daily rates — no key required
curl "https://fxmacrodata.com/api/v1/forex/eur/usd"
# AUD/JPY with a custom date range
curl "https://fxmacrodata.com/api/v1/forex/aud/jpy?start_date=2025-01-01"
# GBP/USD with technical indicators overlaid
curl "https://fxmacrodata.com/api/v1/forex/gbp/usd?indicators=sma_20,rsi_14"
{
"base": "EUR",
"quote": "USD",
"start_date": "2025-03-30",
"end_date": "2026-03-30",
"data": [
{
"date": "2026-03-28",
"close": 1.0832,
"open": 1.0821,
"high": 1.0867,
"low": 1.0798
}
]
}
Langkah 7 Sesi Pasar: keadaan sesi real-time
Endpoint sesi pasar mengembalikan status terbuka / dekat saat ini untuk semua empat sesi FX utama Sydney, Tokyo, London, dan New York bersama dengan jendela tumpang tindih aktif. Tidak diperlukan kunci API. Gunakan untuk gate otomatisasi sensitif waktu ke jendela likuiditas puncak atau untuk mengomentari grafik dengan batas sesi.
# Real-time snapshot — no key required
curl "https://fxmacrodata.com/api/v1/market_sessions"
# Historical snapshot for scheduling or testing
curl "https://fxmacrodata.com/api/v1/market_sessions?at=2026-03-28T12:00:00Z"
{
"now_utc": "2026-03-30T08:47:00Z",
"now_unix": 1743324420,
"is_market_day": true,
"sessions": [
{
"name": "London",
"is_open": true,
"seconds_to_close": 25200,
"currencies": ["EUR", "GBP", "CHF"],
"open_utc": "2026-03-30T07:00:00Z",
"close_utc": "2026-03-30T15:00:00Z"
}
],
"overlaps": [
{
"name": "London / New York",
"is_active": false,
"priority": "high",
"start_utc": "2026-03-30T12:00:00Z",
"end_utc": "2026-03-30T16:00:00Z",
"notable_pairs": ["EUR/USD", "GBP/USD", "USD/CHF"],
"duration_hours": 4
}
]
}
Tindih London/New York adalah jendela likuiditas tertinggi pada hari perdagangan dan adalah ketika rilis makro paling sering menyebabkan pergerakan spot terbesar. is_market_day: false untuk melewati otomatisasi di akhir pekan dan hari libur pasar utama.
Langkah 8 GraphQL: batch beberapa kueri dalam satu permintaan
FXMacroData mengekspos titik akhir GraphQL yang mencerminkan permukaan REST persis aturan otentikasi yang sama, nama lapangan yang sama dan data yang sama tetapi memungkinkan Anda untuk menyatakan hanya bidang yang Anda butuhkan dan menggabungkan beberapa kueri menjadi satu HTTP pulang pergi. dan Nilai mata uang dasar GBP dan kalender rilis AUD, yang satu POST bukan tiga GET.
Kirimkan POST Untuk https://fxmacrodata.com/api/v1/graphql dengan tubuh JSON yang berisi query kunci dan kunci API Anda sebagai parameter query URL. announcementsAku akan pergi. dataCatalogue, dan calendar.
# Single free USD query — no key required
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql" \
-H "Content-Type: application/json" \
-d '{
"query": "{ announcements(currency: \"USD\", indicator: \"inflation\") { currency indicator data { date val pctChange } } }"
}'
# Batched: EUR inflation + GBP policy rate in one request
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "query { eurCPI: announcements(currency: \"EUR\", indicator: \"inflation\") { data { date val } } gbpRate: announcements(currency: \"GBP\", indicator: \"policy_rate\") { data { date val } } }"
}'
{
"data": {
"eurCPI": { "data": [{ "date": "2026-02-28", "val": 2.3 }] },
"gbpRate": { "data": [{ "date": "2026-03-20", "val": 4.5 }] }
}
}
eurCPI: di atas) untuk menghindari konflik nama lapangan ketika batching beberapa announcements Setiap alias menjadi kunci terpisah di data respon objek.
GraphQL mengembalikan HTTP 200 bahkan ketika sebuah bidang query gagal kesalahan muncul di tingkat atas errors array di samping setiap data parsial yang berhasil. Selalu periksa untuk array itu sebelum memproses tanggapan. Untuk implementasi Python dan JavaScript lengkap dengan penanganan kesalahan dan pola batching, lihat Cara Query FXMacroData melalui GraphQL.
Langkah 10 Alur kerja Python dari ujung ke ujung
Cuplikan di bawah ini menarik bersama pola yang paling umum dalam urutan: menemukan indikator yang tersedia, memeriksa rilis yang dijadwalkan berikutnya, mengambil dua seri indikator dalam satu permintaan GraphQL, dan kemudian kondisional memeriksa keadaan sesi pasar sebelum rute output.
import requests
from datetime import datetime, timezone
BASE = "https://fxmacrodata.com/api/v1"
API_KEY = "YOUR_API_KEY"
def params(require_key: bool = True) -> dict:
return {"api_key": API_KEY} if require_key else {}
# 1. Discover available indicators for AUD (free)
catalogue = requests.get(f"{BASE}/data_catalogue/aud", params=params(False), timeout=10)
catalogue.raise_for_status()
print("AUD indicators:", list(catalogue.json().keys())[:5])
# 2. Check the next USD non-farm payrolls release timestamp (free)
cal = requests.get(f"{BASE}/calendar/usd", params={"indicator": "non_farm_payrolls"}, timeout=10)
cal.raise_for_status()
events = cal.json().get("data", [])
if events:
ts = events[0]["announcement_datetime"]
dt = datetime.fromtimestamp(ts, tz=timezone.utc)
print(f"Next NFP release: {dt.strftime('%Y-%m-%d %H:%M UTC')}")
# 3. Fetch EUR inflation + AUD policy rate in one GraphQL request (Pro key)
gql_query = """
query {
eurCPI: announcements(currency: "EUR", indicator: "inflation") {
data { date val pctChange }
}
audRate: announcements(currency: "AUD", indicator: "policy_rate") {
data { date val }
}
}
"""
resp = requests.post(
f"{BASE}/graphql",
params={"api_key": API_KEY},
json={"query": gql_query},
timeout=15,
)
resp.raise_for_status()
payload = resp.json()
if "errors" in payload:
raise RuntimeError(payload["errors"])
data = payload["data"]
eur_latest = data["eurCPI"]["data"][-1]
aud_latest = data["audRate"]["data"][-1]
print(f"EUR CPI {eur_latest['date']}: {eur_latest['val']}%")
print(f"AUD Rate {aud_latest['date']}: {aud_latest['val']}%")
# 4. Check market sessions before triggering a trade alert (free)
sessions_resp = requests.get(f"{BASE}/market_sessions", timeout=10)
sessions_resp.raise_for_status()
session_data = sessions_resp.json()
if session_data["is_market_day"]:
for overlap in session_data.get("overlaps", []):
if overlap["is_active"] and overlap["priority"] == "high":
print(f"High-liquidity window active: {overlap['name']}")
else:
print("Market closed — skipping alert")
Apa yang telah Anda capai
- ✓ Mengambil seri indikator historis dengan timestamp rilis yang tepat dari Pengumuman titik akhir
- ✓ Menanyakan jadwal rilis mendatang dari ✓ Kalender Rilis titik akhir
- ✓ Menemukan slug indikator yang tersedia per mata uang dengan Katalog Data titik akhir
- ✓ Memulihkan posisi berjangka spekulatif dari COT titik akhir
- ✓ Mengambil seri harga logam mulia dari Logam titik akhir
- ✓ Data makro yang diselaraskan dengan kurs spot dari Nilai tukar Forex titik akhir
- ✓ Memeriksa status sesi langsung dari Sesi Pasar titik akhir
- ✓ Pertanyaan indikator berganda yang disusun dalam satu perjalanan pulang pulang dengan GraphQL titik akhir
Apa yang bisa Anda bangun selanjutnya
Anda sekarang memiliki contoh kerja untuk setiap titik akhir publik di FXMacroData API.
- Ganti panggilan REST berurutan dengan batching GraphQL. Di mana saja Anda membuat tiga atau lebih permintaan GET independen, satu GraphQL POST dapat menggantikannya. Cara Query FXMacroData melalui GraphQLAku tidak tahu.
- Posisi COT lapisan atas perbedaan tingkat. Gabungkan net spekulatif dari titik akhir COT dengan seri suku bunga kebijakan untuk membangun sinyal makro komposit di seluruh alam semesta mata uang G8.
- Menyelaraskan harga logam dengan rilis mata uang. Pasang emas dari titik akhir logam dengan seri pengumuman AUD atau USD untuk melacak korelasi safe-haven dan dolar dari waktu ke waktu.
Tim FXMacroData