Spreadsheet tetap menjadi alat yang paling umum untuk analisis makro. Apakah Anda lebih suka Excel atau Google Sheets, menarik data bank sentral dan indikator ekonomi langsung ke dalam sel daripada menyalin nilai dengan tangan mengubah tabel statis menjadi bantuan keputusan yang memperbarui diri. Panduan ini menunjukkan kepada Anda cara menghubungkan FXMacroData ke kedua platform: Power Query dan VBA untuk Excel, dan Aplikasi Script untuk Google Sheet. Pada akhirnya, setiap nomor makro yang Anda pedulikan akan diperbarui secara otomatis tanpa meninggalkan spreadsheet Anda.
Apa yang akan Anda bangun
- Excel Power Query sebuah query yang mengambil indikator apa pun ke dalam tabel terstruktur dengan satu klik
- Excel VBA makro yang menulis nilai langsung ke dalam sel yang diberi nama, siap untuk rumus dan grafik
- Google Apps Script sebuah skrip yang menulis baris ke tab Sheets dan menyegarkan pada pemicu yang didorong waktu
Persyaratan
- Kunci API FXMacroData daftar di /langganan; kunci tingkat bebas mencakup banyak titik akhir indikator
- Excel 2016+ (untuk Power Query) atau Excel 365/Online Power Query dibangun di Windows / Mac dan tersedia secara online
- Akun Google akun dengan akses ke Google Sheets dan Apps Script (tidak diperlukan perangkat lunak tambahan)
- Keterampilan dasar dengan rumus Excel atau Google Sheets tidak perlu latar belakang pemrograman untuk bagian Power Query
BAGIAN 1 EXCEL
Bagian 1 Excel
Excel menawarkan dua rute untuk data API hidup: Power Query (tidak ada kode, bagus untuk analis) dan VBA (berbasis kode, paling baik ketika Anda perlu menulis nilai ke dalam sel tertentu atau memicu logika dari tombol atau acara).
- Langkah 1 -Langkah 1 Memahami bentuk titik akhir API
Setiap indikator FXMacroData mengikuti pola REST yang sama.
GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
Tanggapan JSON adalah objek datar dengan data array:
{
"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" }
]
}
Setiap rekaman membawa date (YYY-MM-DD), sebuah angka val, dan jika tersedia UTC tingkat dua announcement_datetimeKarena setiap indikator endpoint berbagi bentuk ini, satu fungsi Power Query atau satu pembantu VBA dapat melayani mereka semua. Dokumen API.
- Langkah 2 -
Langkah 2 Excel Power Query: impor melalui konektor Web
Power Query terintegrasi. Dari Web konektor dapat mengkonsumsi setiap titik akhir JSON REST tanpa kode sama sekali.
- Di Excel, klik Data → Dapatkan Data → Dari Sumber Lain → Dari Web.
-
Tempelkan URL Anda ke dialog ganti
YOUR_API_KEYdengan kunci sebenarnya:
https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01 - Klik Baiklah.. Power Query Navigator dibuka menunjukkan struktur JSON.
- Klik data Catat di navigator untuk memperluasnya, lalu klik Mengkonversi ke Tabel → Baiklah..
-
Gunakan Memperluas kolom tombol (ikon panah ganda) pada
Column1header untuk membongkar catatan bersarang ke kolom datar:dateAku akan pergi.valAku akan pergi.announcement_datetime. - Klik Tutup & Muat untuk menulis tabel ke dalam lembar baru.
Tip: Perbarui secara otomatis
Klik kanan pada tabel yang dimuat → Tabel → Properti Data Eksternal → memungkinkan Perbarui data saat membuka file dan mengatur Perbarui setiap N menit interval. Tabel makro Anda akan tetap saat ini setiap kali Anda membuka buku kerja.
- Langkah 3 -
Langkah 3 Excel Power Query: parameterisasi dengan fungsi yang dapat digunakan kembali
Setelah Anda memiliki kueri indikator tunggal bekerja, meningkatkannya ke fungsi M yang dapat digunakan kembali sehingga Anda dapat menarik kombinasi mata uang / indikator tanpa mengulangi langkah-langkah konektor Web.
- Di Query Editor, klik kanan pada query Anda di panel kiri → Buat FungsiAku tidak tahu.
- Sebutkan saja.
FetchMacroDataAku tidak tahu. - Mengganti tubuhnya dengan kode M di bawah ini:
// FetchMacroData — reusable Power Query function
// Parameters: currency (e.g. "usd"), indicator (e.g. "policy_rate"), apiKey, startDate
(currency as text, indicator as text, apiKey as text, startDate as text) =>
let
url = "https://fxmacrodata.com/api/v1/announcements/"
& currency & "/" & indicator
& "?api_key=" & apiKey
& "&start=" & startDate,
raw = Json.Document(Web.Contents(url)),
records = raw[data],
tbl = Table.FromList(records, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expand = Table.ExpandRecordColumn(tbl, "Column1",
{"date", "val", "announcement_datetime"},
{"Date", "Value", "AnnouncementDatetime"}),
typed = Table.TransformColumnTypes(expand, {
{"Date", type date},
{"Value", type number}
})
in
typed
- Tutup editor fungsi. Sekarang buat yang baru pertanyaan kosong untuk setiap indikator yang Anda butuhkan:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")
Setiap query memuat ke dalam tabelnya sendiri. Fungsi ini menangani panggilan HTTP, JSON parse, kolom rename, dan konversi tipe. Untuk menambahkan indikator baru, tambahkan satu query kosong tidak perlu wizard konektor. Cari slug indikator pada Dokumen API untuk pasangan mata uang apapun.
- Langkah 4 -
Langkah 4 Excel VBA: tulis nilai langsung ke dalam sel
VBA lebih cocok ketika Anda perlu menempatkan nilai ke dalam sel bernama tertentu, menghubungkannya ke rumus yang ada, atau memicu refresh dari tombol atau buku kerja-buka acara.
Buka editor VBA (Alt+F11), memasukkan modul baru (Masukkan → Modul), dan tempelkan:
Option Explicit
' ─────────────────────────────────────────────────────────────────
' FetchLatestIndicator
' Returns the most recent val for a given currency/indicator.
' Requires a reference to "Microsoft XML, v6.0" (VBA Editor →
' Tools → References → tick "Microsoft XML, v6.0").
' ─────────────────────────────────────────────────────────────────
Function FetchLatestIndicator(currency As String, indicator As String, _
apiKey As String) As Variant
Dim http As New MSXML2.XMLHTTP60
Dim url As String
Dim json As String
Dim dataArr As Variant
Dim parsed As Object
url = "https://fxmacrodata.com/api/v1/announcements/" & _
LCase(currency) & "/" & LCase(indicator) & _
"?api_key=" & apiKey & "&limit=1"
http.Open "GET", url, False
http.setRequestHeader "Accept", "application/json"
http.Send
If http.Status <> 200 Then
FetchLatestIndicator = CVErr(xlErrValue)
Exit Function
End If
' ── Minimal JSON parser (no external library needed) ──────────
' Locate the first "val": number pattern after "data":[{
Dim pos As Long
Dim valStr As String
json = http.responseText
pos = InStr(json, """val"":")
If pos = 0 Then
FetchLatestIndicator = CVErr(xlErrNA)
Exit Function
End If
pos = pos + Len("""val"":")
valStr = Mid(json, pos, 20)
' Trim to the actual number (stop at comma, space, or brace)
valStr = Split(Trim(valStr), ",")(0)
valStr = Split(valStr, "}")(0)
valStr = Trim(valStr)
FetchLatestIndicator = CDbl(valStr)
End Function
' ─────────────────────────────────────────────────────────────────
' RefreshMacroDashboard
' Writes the latest value of several indicators into named cells.
' Define Named Ranges (Formulas → Name Manager) matching the keys
' used in the pairs array below.
' ─────────────────────────────────────────────────────────────────
Sub RefreshMacroDashboard()
Dim apiKey As String
apiKey = "YOUR_API_KEY" ' ← replace with your key
Dim pairs(5, 1) As String
pairs(0, 0) = "usd" : pairs(0, 1) = "policy_rate"
pairs(1, 0) = "eur" : pairs(1, 1) = "policy_rate"
pairs(2, 0) = "gbp" : pairs(2, 1) = "policy_rate"
pairs(3, 0) = "usd" : pairs(3, 1) = "inflation"
pairs(4, 0) = "usd" : pairs(4, 1) = "unemployment"
pairs(5, 0) = "usd" : pairs(5, 1) = "gdp"
Dim i As Integer
Dim val As Variant
Dim nm As String
For i = 0 To 5
val = FetchLatestIndicator(pairs(i, 0), pairs(i, 1), apiKey)
nm = UCase(pairs(i, 0)) & "_" & pairs(i, 1)
On Error Resume Next
ThisWorkbook.Names(nm).RefersToRange.Value = val
On Error GoTo 0
Next i
MsgBox "Dashboard updated — " & Now(), vbInformation, "FXMacroData"
End Sub
Bagaimana cara menghubungkan ini ke tombol
Di lembar kerja, pergi ke Masukkan → Bentuk, menggambar persegi panjang bulat, klik kanan →
Atur Makro → pilih RefreshMacroDashboard. Satu klik memperbarui setiap indikator di dasbor Anda. Anda juga dapat mengeksekusi secara otomatis pada file terbuka dengan memanggilnya dari
Workbook_Open() di ThisWorkbook Modul kode.
BAGIAN 2 GOOGLE SHEETS
Bagian 2 Google Sheets
Google Apps Script adalah runtime JavaScript yang tertanam langsung ke dalam Google Workspace.
UrlFetchApp dan menulis hasil ke spreadsheet dengan SpreadsheetApp. Pemicu yang didorong waktu memungkinkan Anda menjadwalkan pembaruan otomatis .
Langkah 5 Buka editor skrip Aplikasi
- Buka. sheets.google.com dan membuat spreadsheet kosong baru.
- Klik Ekstensi → Aplikasi ScriptAku tidak tahu.
- Mengganti nama proyek menjadi FXMacroData Loader (bidang kiri atas).
- Hapus default
myFunction()tempat penjaga.
Simpan kunci API Anda dengan aman
Pergilah ke Pengaturan Proyek → Properti Skrip → Tambahkan propertiTambahkan properti bernama
FXMACRODATA_API_KEY dan paste kunci Anda sebagai nilai. kode di bawah ini membacanya pada saat runtime melalui PropertiesService.getScriptProperties() Kunci Anda tidak pernah muncul dalam file skrip.
- Langkah 6 -
Langkah 6 Tulis bantuan mengambil dan sheet writer
Tempelkan kode berikut di Code.gsTiga fungsi menangani mengambil, normalisasi, dan menulis:
// ── Config ──────────────────────────────────────────────────────
const BASE_URL = 'https://fxmacrodata.com/api/v1';
// List of {currency, indicator} pairs to load.
// Add or remove rows to customise your dashboard.
const INDICATORS = [
{ currency: 'usd', indicator: 'policy_rate' },
{ currency: 'usd', indicator: 'inflation' },
{ currency: 'usd', indicator: 'unemployment' },
{ currency: 'eur', indicator: 'policy_rate' },
{ currency: 'gbp', indicator: 'policy_rate' },
{ currency: 'aud', indicator: 'policy_rate' },
];
// ── Fetch helper with retry ─────────────────────────────────────
/**
* Fetches the latest N records for a currency/indicator pair.
* Retries up to maxRetries times with exponential back-off.
*
* @param {string} currency - e.g. 'usd'
* @param {string} indicator - e.g. 'policy_rate'
* @param {string} apiKey
* @param {number} limit - number of records to return (default 12)
* @param {number} maxRetries
* @returns {Array} array of {date, val, announcement_datetime} objects
*/
function fetchIndicator(currency, indicator, apiKey, limit = 12, maxRetries = 3) {
const url = `${BASE_URL}/announcements/${currency}/${indicator}`
+ `?api_key=${apiKey}&limit=${limit}`;
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
if (resp.getResponseCode() === 200) {
return JSON.parse(resp.getContentText()).data || [];
}
} catch (e) {
if (attempt < maxRetries - 1) {
Utilities.sleep(Math.pow(2, attempt) * 1000); // 1 s, 2 s, 4 s
}
}
}
return [];
}
// ── Sheet writer ────────────────────────────────────────────────
/**
* Writes all indicator rows to a sheet named 'MacroData'.
* Creates the sheet if it does not exist; clears it on each run
* so stale rows are removed.
*/
function refreshMacroData() {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
if (!apiKey) {
throw new Error('FXMACRODATA_API_KEY script property is not set.');
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('MacroData');
if (!sheet) {
sheet = ss.insertSheet('MacroData');
}
sheet.clearContents();
// Header row
const headers = ['Currency', 'Indicator', 'Date', 'Value', 'AnnouncementDatetime'];
sheet.appendRow(headers);
// Style header
const headerRange = sheet.getRange(1, 1, 1, headers.length);
headerRange.setBackground('#1e3a5f');
headerRange.setFontColor('#ffffff');
headerRange.setFontWeight('bold');
// Data rows
INDICATORS.forEach(({ currency, indicator }) => {
const records = fetchIndicator(currency, indicator, apiKey);
records.forEach(r => {
sheet.appendRow([
currency.toUpperCase(),
indicator,
r.date,
r.val,
r.announcement_datetime || ''
]);
});
});
// Auto-resize columns for readability
sheet.autoResizeColumns(1, headers.length);
}
- Langkah 7 -
Langkah 7 Jalankan dan verifikasi
- Klik Simpan ikon (floppy disk) di toolbar editor.
- Pilih
refreshMacroDatadi fungsi dropdown di sebelah Run tombol (▶). - Klik Larilah. Jalan pertama meminta izin untuk mengakses spreadsheet dan membuat permintaan HTTP eksternal klik Periksa izin → IzinkanAku tidak tahu.
- Pindah kembali ke spreadsheet. tab baru yang disebut MakroData seharusnya sekarang berisi baris seperti:
| Mata uang | Indikator | Tanggal | Nilai | Pengumuman Tanggal Waktu |
|---|---|---|---|---|
| USD | kebijakan_tingkat | 2025-03-19 | 4,25 | 2025-03-19T18:00:00Z |
| USD | inflasi | 2025-03-12 | 2.8 | 2025-03-12T12:30:00Z |
| USD | pengangguran | 2025-03-07 | 4.1 Pengobatan | 2025-03-07T13:30:00Z |
- Langkah 8 -
Langkah 8 Jadwalkan pembaruan otomatis dengan pemicu
Sebuah pemicu yang dikendalikan waktu memanggil. refreshMacroData pada jadwal tanpa tindakan manual.
- Di editor skrip aplikasi, klik Pemicu ikon (jam) di bilah sisi kiri.
- Klik + Tambahkan Trigger (di kanan bawah).
- Siap Pilih fungsi yang akan dijalankan →
refreshMacroDataAku tidak tahu. - Siap Pilih sumber acara → Waktu yang didorongAku tidak tahu.
- Siap Pilih jenis pemicu berbasis waktu → Waktu siang hariAku tidak tahu.
- Siap Pilih waktu hari → misalnya 7am 8am (sebelum European Open).
- Klik Simpan. pemicu muncul dalam daftar pemicu.
Tip: pemicu setiap jam untuk pemantauan hari rilis
Pada hari dengan rilis dampak tinggi US CPI, NFP, atau keputusan bank sentral beralih pemicu ke
Jam timer → setiap jam sehingga lembar menangkap pembacaan baru segera setelah API diperbarui (biasanya dalam hitungan detik dari rilis resmi).
inflasi Dan
daftar gaji non-pertanian
titik akhir membawa tingkat kedua announcement_datetime nilai sehingga Anda dapat menentukan persis kapan setiap pembacaan dipublikasikan.
- Langkah 9 -
Langkah 9 Tarik nilai terbaru ke dalam sel dengan fungsi khusus
Tambahkan fungsi di bawah ini ke Code.gs jika Anda ingin merujuk nilai makro langsung dalam rumus sel seperti GOOGLEFINANCE() tapi untuk data bank sentral:
/**
* Custom Sheets function: returns the latest value for a currency/indicator.
*
* Usage in a cell: =FXMD("usd","policy_rate")
*
* @param {string} currency e.g. "usd"
* @param {string} indicator e.g. "policy_rate"
* @customfunction
*/
function FXMD(currency, indicator) {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
const records = fetchIndicator(currency, indicator, apiKey, 1);
if (!records || records.length === 0) return null;
return records[0].val;
}
Setelah menyimpan, ketik =FXMD("usd","policy_rate") Sheets memanggil fungsi, mengambil dari API, dan mengembalikan nilai saat ini. menggabungkannya dengan label mata uang di sel yang berdekatan untuk membangun panel ringkasan yang kompak.
Indikator yang didukung
Setiap slug indikator dari katalog FXMacroData bekerja policy_rateAku akan pergi.
inflationAku akan pergi. unemploymentAku akan pergi. gdpAku akan pergi. pmiAku akan pergi.
retail_sales, dan banyak lagi.
Dokumen API untuk daftar lengkap per mata uang, atau gunakan
Dashboard FX untuk mengeksplorasi indikator secara visual.
- Ringkasan -
Ringkasan
Anda telah menghubungkan FXMacroData ke Excel dan Google Sheets:
- Excel Power Query fungsi M yang dapat diparameterkan yang memuat indikator apa pun ke dalam tabel terstruktur dan memperbarui file terbuka.
- Excel VBA makro yang menulis nilai terbaru dari setiap indikator ke dalam sel yang diberi nama, dapat ditugaskan ke tombol.
- Google Apps Script a
refreshMacroData()fungsi yang membangun tab MacroData penuh, ditambah=FXMD()Rumus khusus untuk pencarian per sel, keduanya diperbarui secara otomatis pada pemicu yang didorong waktu.
Dari sini, pertimbangkan lapisan dalam indikator lebih misalnya, menambahkan
inflasi inti
di samping inflasi, atau menarik
PMI Untuk memperbandingkan momentum pertumbuhan di berbagai wilayah. bentuk titik akhir yang konsisten berarti setiap penambahan adalah perubahan satu baris ke INDICATORS array atau panggilan fungsi M.