Spreadsheets bleiben das häufigste Werkzeug für Makroanalyse. Ob Sie Excel oder Google Sheets bevorzugen, das Ziehen von Live-Zentralbank- und Wirtschaftsindikatordaten direkt in eine Zelle anstatt Werte von Hand zu kopieren verwandelt eine statische Tabelle in eine selbst aktualisierende Entscheidungshilfe. Diese Anleitung zeigt Ihnen, wie Sie FXMacroData mit beiden Plattformen verbinden: Power Query und VBA für Excel und Apps Script für Google Sheet. Am Ende wird jede Macro-Nummer, die Ihnen wichtig ist, automatisch aktualisiert, ohne Ihre Tabelle zu verlassen.
Was du bauen wirst
- Excel-Power-Abfrage eine Abfrage, die jeden Indikator mit einem Klick in eine strukturierte Tabelle holt
- Excel VBA ein Makro, das Werte direkt in benannte Zellen schreibt, bereit für Formeln und Diagramme
- Google Apps Skript wird verwendet ein Skript, das Zeilen auf einen Tab "Blätter" schreibt und auf einem zeitgesteuerten Trigger aktualisiert
Voraussetzungen
- FXMacroData-API-Schlüssel melden Sie sich an /abonnierenDie freien Schlüssel decken viele Indikatorenendpunkte ab .
- Excel 2016+ (für Power Query) oder Excel 365/Online Power Query ist in Windows/Mac integriert und online verfügbar
- Google-Konto jedes Konto mit Zugriff auf Google Sheets und Apps Script (keine zusätzliche Software erforderlich)
- Grundlegende Kenntnisse von Excel-Formeln oder Google Sheets kein Programmierergehäuse für den Abschnitt Power Query erforderlich
Teil 1 EXCEL
Teil 1 Excel
Excel bietet zwei Wege für Live-API-Daten: Leistungsaufforderung (keine Codes, ideal für Analysten) und VBA (code-driven, am besten, wenn Sie Werte in bestimmte Zellen schreiben oder Logik aus einer Schaltfläche oder einem Ereignis auslösen müssen).
- Schritt 1 -Schritt 1 Verständnis für die Form des API-Endpunktes
Jeder FXMacroData-Indikator folgt dem gleichen REST-Muster.
GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
Die JSON-Antwort ist ein flaches Objekt mit einem data - Das ist nicht wahr .
{
"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" }
]
}
Jede Platte trägt eine date (JJJ-MM-DD), eine Zahlenzahl val, und soweit verfügbar eine UTC der zweiten Ebene announcement_datetime. Da jeder Indikatorendpunkt diese Form teilt, kann eine Power Query-Funktion oder ein VBA-Helfer alle bedienen. API-Dokumentation- Ich weiß .
- Schritt 2 -
Schritt 2 Excel Power Query: Importieren über Web-Connector
Die Power Query ist eingebaut. Aus dem Internet Der Connector kann jeden JSON REST Endpunkt ohne Code verbrauchen.
- In Excel klicken Sie auf Daten → Daten erhalten → aus anderen Quellen → aus dem Internet- Ich weiß .
-
Fügen Sie Ihre URL in den Dialog ersetzen
YOUR_API_KEYmit Ihrem eigentlichen Schlüssel:
https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01 - Klicken Sie - Ich weiß .. Power Query Navigator öffnet sich und zeigt die JSON-Struktur.
- Klicken Sie auf Daten Aufzeichnen Sie in dem Navigator, um es zu erweitern, und klicken Sie dann auf Umwandlung in Tabelle - Ich weiß. - Ich weiß .- Ich weiß .
-
- Verwenden Sie die ... Spalte erweitern Schaltfläche (Doppelpfeil-Symbol) auf der
Column1Überschrift, um die verschachtelten Datensätze in flache Spalten zu entpacken:date- Ich weiß .val- Ich weiß .announcement_datetime- Ich weiß . - Klicken Sie Schließen und beladen Die Tabelle in ein neues Blatt zu schreiben.
Tipp: Automatische Aktualisierung
Mit der rechten Maustaste auf die geladene Tabelle → Tabelle → Eigenschaften externer Daten → aktivieren Daten beim Öffnen der Datei aktualisieren und ein Alle N Minuten aktualisieren Ihre Makrotabelle bleibt jedes Mal aktuell, wenn Sie die Arbeitsmappe öffnen.
- Schritt 3 -
Schritt 3 Excel Power Query: Parametrieren mit einer wiederverwendbaren Funktion
Sobald die Abfrage mit einem Indikator funktioniert hat, können Sie sie in eine wiederverwendbare M-Funktion umwandeln, damit Sie jede Währungs-/Indikatorkombination ziehen können, ohne die Schritte des Web-Konnektors zu wiederholen.
- In der Abfrage-Editor, mit der rechten Maustaste auf Ihre Abfrage im linken Panel → Funktion erstellen- Ich weiß .
- Nennen Sie es .
FetchMacroData- Ich weiß . - Der Körper wird durch den folgenden M-Code ersetzt:
// 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
- Schließen Sie den Funktionseditor. Jetzt erstellen Sie einen neuen Leere Abfrage für jeden Indikator, den Sie benötigen:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")
Jede Abfrage lädt in ihre eigene Tabelle. Die Funktion behandelt den HTTP-Aufruf, JSON-Parse, Spaltenumbenennung und Typkonvertierung. Um einen neuen Indikator hinzuzufügen, fügen Sie eine leere Abfrage hinzu kein Connector-Assistent erforderlich. Finden Sie Indikatorschläger auf der API-Dokumentation für jedes Währungspaar.
- Schritt 4 -
Schritt 4 Excel VBA: Werte direkt in Zellen schreiben
VBA ist besser geeignet, wenn Sie Werte in bestimmte benannte Zellen platzieren, sie mit vorhandenen Formeln verknüpfen oder die Aktualisierung von einem Button oder einem geöffneten Arbeitsmappenereignis auslösen müssen.
Öffnen Sie den VBA-Editor (Alt+F11), ein neues Modul einfügen (Einfügen → Modul), und fügen Sie Folgendes ein:
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
Wie man das an einen Knopf anschließt
Auf dem Arbeitsblatt geht es zu Einfügen → Formen, zeichnen Sie ein abgerundetes Rechteck, klicken Sie mit der rechten Maustaste darauf →
Makro zuweisen → wählen RefreshMacroDashboard. Ein Klick erneuert jeden Indikator in Ihrem Dashboard. Sie können ihn auch automatisch auf der geöffneten Datei ausführen, indem Sie ihn von
Workbook_Open() In der ... ThisWorkbook Code-Modul.
Teil 2 GOOGLE SHEETS
Teil 2 Google-Blätter
Google Apps Script ist eine JavaScript-Laufzeit, die direkt in Google Workspace eingebettet ist. Sie läuft serverseitig auf der Infrastruktur von Google, so dass nichts zu installieren ist.
UrlFetchApp und schreiben Sie die Ergebnisse in die Tabelle mit SpreadsheetAppZeitgesteuerte Auslöser lassen automatische Aktualisierungen planen.
Schritt 5 Öffnen Sie den Apps Script Editor
- - Mach auf . Die Daten werden von der Website der Kommission übermittelt. und erstellen Sie eine neue leere Tabelle.
- Klicken Sie Erweiterungen → Apps Script- Ich weiß .
- Das Projekt wird umbenannt in FXMacroData-Lader (oberst links)
- Löschen Sie die Standardvorgabe .
myFunction()Platzhalter.
Speichern Sie Ihren API-Schlüssel sicher
Geht zu ... Projekt-Einstellungen → Skript-Eigenschaften → Eigenschaft hinzufügenFügen Sie eine Eigenschaft mit dem Namen hinzu
FXMACRODATA_API_KEY Der Code unten liest es in der Laufzeit über PropertiesService.getScriptProperties() Ihr Schlüssel erscheint nie in der Skriptdatei.
- Schritt 6 -
Schritt 6 Schreiben Sie den Abrufhelfer und den Blattschreiber
Fügen Sie den folgenden Code ein Code.gsDie drei Funktionen befassen sich mit Abrufen, Normalisieren und Schreiben:
// ── 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);
}
- Schritt 7 -
Schritt 7 Ausführen und Überprüfen
- Klicken Sie auf Speichern Symbol (Flasche) in der Werkzeugleiste des Editors.
- Wählen Sie aus
refreshMacroDatain der Funktions-Rolldown-Fläche neben der Schaltfläche Ausführen (▶). - Klicken Sie Lauf !. Der erste Lauf bittet um die Erlaubnis zum Zugriff auf die Tabelle und die Durchführung externer HTTP-Anfragen klicken Überprüfung der Berechtigungen → Berechtigung- Ich weiß .
- Schalten Sie zurück zur Tabelle. Makrodaten sollte jetzt Zeilen wie: enthalten
| Währung | Indikator | Datum | Wert | AnkündigungDatum und Uhrzeit |
|---|---|---|---|---|
| USD | Zinssatz | 2025-03-19 | 4.25 | 2025-03-19T18:00:00Z |
| USD | Inflation | 2025-03-12 | 2.8 | 2025-03-12T12:30:00Z |
| USD | Arbeitslosigkeit | 2025-03-07 | 4.1 | 2025-03-07T13:30:00Z |
- Schritt 8 -
Schritt 8 Planen Sie die automatische Aktualisierung mit einem Auslöser
Ein zeitgesteuertes Auslöser ruft . refreshMacroData Sie werden auf einem Zeitplan ohne manuelle Aktionen durchgeführt.
- Klicken Sie im Apps Script Editor auf Auslöser Symbol (Uhr) in der linken Seitenleiste.
- Klicken Sie + Hinzufügen von Trigger (unten rechts).
- Setzt . Wählen Sie aus, welche Funktion ausgeführt werden soll - Ich weiß.
refreshMacroData- Ich weiß . - Setzt . Auswählen der Ereignisquelle - Ich weiß. Zeitgesteuert- Ich weiß .
- Setzt . Auswahl des Zeitauslösers - Ich weiß. Tagesschalter- Ich weiß .
- Setzt . Zeit des Tages auswählen → z.B. 7 Uhr 8 Uhr (vor dem Europäischen Open).
- Klicken Sie SpeichernDer Auslöser erscheint in der Auslöse-Liste.
Tipp: Stundenauslöser für die Überwachung am Freisetzungstag
An Tagen mit hohen Releases US-amerikanischer KPI, NFP oder einer Entscheidung der Zentralbank schalten Sie den Auslöser auf
Stundentaucher → jede Stunde Die neue Angabe wird also in der Tabelle erfasst, sobald die API aktualisiert wird (normalerweise innerhalb weniger Sekunden nach der offiziellen Veröffentlichung).
Inflation Und ...
Nichtlandwirtschaftliche Gehaltslisten
Endpunkte tragen zweite Ebene announcement_datetime Die Daten werden in einem System mit einem Werteindex erfasst, so dass Sie genau bestimmen können, wann jede Messung veröffentlicht wurde.
- Schritt 9 -
Schritt 9 Ziehen Sie den letzten Wert in eine beliebige Zelle mit einer benutzerdefinierten Funktion
Fügen Sie die Funktion unten zu hinzu Code.gs wenn Sie Makroverteile direkt in Zellformeln wie verweisen möchten GOOGLEFINANCE() für Zentralbankdaten jedoch:
/**
* 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;
}
Nach dem Speichern =FXMD("usd","policy_rate") In jeder beliebigen Zelle. Sheets ruft die Funktion an, holt sie aus der API und gibt den aktuellen Wert zurück. Kombiniert sie mit Währungsetiketten in benachbarten Zellen, um ein kompaktes Zusammenfassungsfeld zu erstellen.
Unterstützte Indikatoren
Jeder Indikator-Slug aus dem FXMacroData-Katalog funktioniert policy_rate- Ich weiß .
inflation- Ich weiß . unemployment- Ich weiß . gdp- Ich weiß . pmi- Ich weiß .
retail_salesSiehe die
API-Dokumentation für die vollständige Liste pro Währung oder die
FX-Dashboard Die Daten werden in einem anderen Modul erfasst.
Zusammenfassung
Zusammenfassung
Sie haben FXMacroData sowohl mit Excel als auch mit Google Sheets verbunden:
- Excel-Power-Abfrage eine parametrierbare M-Funktion, die jeden Indikator in eine strukturierte Tabelle lädt und die Datei auf dem offenen Stand aktualisiert.
- Excel VBA ein Makro, das den letzten Wert jedes Indikators in benannte Zellen schreibt, die einem Knopf zugeordnet werden können.
- Google Apps Skript wird verwendet - Ich weiß .
refreshMacroData()Funktion, die eine vollständige MacroData-Tab erstellt, plus eine=FXMD()Die Daten werden automatisch auf einem zeitgesteuerten Auslöser aktualisiert.
Von hier aus sollten Sie mehr Indikatoren in Schichten einfügen, z. B.
Kerninflation
Die Inflation ist im Vergleich zur Inflation im Gesamtwert
KPI Die konstante Endpunkteform bedeutet, dass jede Zugabe eine einzeilige Veränderung des Wachstums in der INDICATORS Die M-Funktion wird von der Anruferin angefordert.