스프레드시트는 매크로 분석의 가장 일반적인 도구로 남아 있습니다. 당신은 엑셀 또는 구글 시트를 선호 여부, 직접 셀에 라이브 중앙 은행 및 경제 지표 데이터를 끌어 손으로 값을 복사하기 보다는 정적 테이블을 자동 업데이트 결정 보조로 전환합니다. 이 가이드에서는 두 플랫폼에 FXMacroData를 연결하는 방법을 보여줍니다: 엑세ルの 파워 쿼리 및 VBA, 구글 시트 응용 프로그램. 끝까지, 당신이 관심있는 모든 매크로의 숫자는 스프레이드시트를 떠나지 않고 자동으로 갱신됩니다.
당신이 무엇을 만들 것인가
- 엑셀 파워 쿼리 한 번의 클릭으로 구조화된 테이블로 어떤 지표를 가져오는 쿼리
- 엑셀 VBA 값이 직접 이름 붙여진 셀에 기록되는 매크로, 공식과 차트에 사용할 수 있습니다
- 구글 앱 스크립트 시트 탭에 줄을 쓰고 시간동력 트리거에 갱신하는 스크립트
필수 조건
- FXMacroData API 키 등록하세요 / 가입; 자유 계층 키는 많은 지표 최종 지점을 포함합니다.
- 엑셀 2016+ (파워 쿼리) 또는 엑셀 365/온라인 파워 쿼리는 윈도우/맥에 내장되어 있으며 온라인에서 사용할 수 있습니다
- 구글 계정 구글 시트와 앱 스크립트 (더 이상의 소프트웨어가 필요하지 않습니다) 에 액세스 할 수있는 모든 계정
- 엑셀 공식에 대한 기본적인 지식 또는 구글 시트 파워 쿼리 섹션에 프로그래밍 배경이 필요하지 않습니다
PART 1 EXCEL
1부 엑셀
엑셀은 라이브 API 데이터에 대해 두 가지 경로를 제공합니다. 파워 쿼리 (코드가 없으니 분석가들에게 좋은 것) VBA (코드 기반, 특정 셀에 값을 입력하거나 버튼이나 이벤트에서 논리를 트리거해야 할 때 가장 좋습니다.)
- 1단계단계 1 API 엔드포인트 모양을 이해
모든 FXMacroData 지표는 동일한 REST 패턴을 따르고 있습니다. 미국 정책금리 요청은 이렇게 보입니다:
GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
JSON 응답은 와 같은 평면 객체입니다. data 배열:
{
"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" }
]
}
모든 레코드는 date (YYY-MM-DD), 숫자 val, 그리고 가능한 경우 두 번째 수준의 UTC announcement_datetime모든 지표 엔드포인트가 이 모양을 공유하기 때문에, 하나의 파워 쿼리 함수 또는 하나의 VBA 헬퍼가 모두에 서비스를 제공할 수 있습니다. API 문서-
- 2단계
단계 2 엑셀 파워 쿼리: 웹 커넥터로 가져오기
파워 쿼리가 내장되어 있습니다 웹 에서 이 연결기는 어떤 코드도 없이 모든 JSON REST 엔드포인트를 사용할 수 있습니다.
- 엑셀에서 클릭합니다. 데이터 → 데이터를 얻으십시오 → 다른 소스에서 → 웹에서-
-
대화 상자에 URL을 붙여넣어 replace
YOUR_API_KEY진짜 열쇠로
https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01 - 클릭하세요 좋아. 파워 쿼리 네비게이터가 JSON 구조를 보여줍니다.
- 클릭하세요 데이터 네비게이터에 기록해서 확장하면 테이블로 변환 - 좋아-
-
을 사용하세요 열을 확장 버튼 (두 개의 화살표 아이콘)
Column1장에서 둥근 레코드를 평면 열로 풀기:datevalannouncement_datetime- - 클릭하세요 닫고 부하 새로운 셰이트에 테이블을 쓰기.
팁: 자동으로 갱신
로드 된 테이블을 오른쪽 클릭 → 테이블 → 외부 데이터 속성 → 활성화 파일을 열 때 데이터를 갱신합니다 그리고 N 분마다 갱신합니다 매크로 테이블은 작업서를 열 때마다 현재 상태로 유지됩니다.
- 3단계
단계 3 엑셀 파워 쿼리: 재사용 함수로 매개 변수를 설정
단일 지표 질의가 작동되면, 웹 연결 단계를 반복하지 않고 통화/지표 조합을 뽑을 수 있도록 재사용 가능한 M 함수로 프로모션합니다.
- 쿼리 편집기에서 왼쪽 패널에서 쿼리를 오른쪽 클릭 → 함수를 생성합니다- 그래요
- 뭐라든
FetchMacroData- 그래요 - 부체는 아래의 M 코드로 교체합니다.
// 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
- 함수 편집기를 닫고 새 함수를 만들자 빈 질의 필요한 각 지표에 대해
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")
각 질의는 자신의 테이블에 로드 됩니다. 함수는 HTTP 호출, JSON 분석, 열 명칭 변경 및 타입 변환을 처리 합니다. 새로운 지표를 추가하려면 한 개의 빈 질의 연결 마법사가 필요하지 않습니다. 지표 슬러그를 찾아 API 문서 어떤 통화 쌍이든
4단계
단계 4 Excel VBA: 셀에 값을 직접 입력
VBA는 특정 이름의 셀에 값을 배치하거나 기존 공식과 연결하거나 버튼 또는 작업책 열기 이벤트에서 갱신을 트리거해야 할 때 더 적합합니다.
VBA 편집기를 열어요 (Alt+F11), 새로운 모듈을 삽입합니다 (삽입 → 모듈), 다음을 붙여넣습니다:
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
이 버튼을 연결하는 방법
작업 잎에서, 삽입 → 모양, 둥근 직사각형을 그리고 오른쪽 클릭 →
매크로를 할당 → 선택 RefreshMacroDashboard한 번의 클릭으로 대시보드에서 모든 지표를 갱신합니다. 당신은 또한 파일에서 호출하여 자동으로 실행 할 수 있습니다.
Workbook_Open() 에 ThisWorkbook 코드 모듈
2부 GOOGLE SHEETS
2부 구글 시트
구글 앱 스크립트는 구글 워크스페이스에 직접 내장된 자바스크립트 실행 시간입니다. 구글의 인프라에서 서버 측에서 실행되므로 설치할 것이 없습니다.
UrlFetchApp 그리고 결과를 스프레드시트에 SpreadsheetApp시간적 트리거를 사용하면 자동 업데이트를 할 수 있습니다.
단계 5 앱 스크립트 편집기를 열고
- 열어 sheets.google.com 그리고 새 빈 스프레드시트를 만들죠.
- 클릭하세요 확장자 → 앱 스크립트- 그래요
- 프로젝트 이름을 바꾸어 FXMacroData 로더 (왼쪽 상단 필드)
- 기본을 삭제합니다.
myFunction()위치 유지기
API 키를 안전하게 저장하세요
가자 프로젝트 설정 → 스크립트 속성 → 속성 추가이름인 속성을 추가합니다
FXMACRODATA_API_KEY 그리고 키를 값으로 붙여넣습니다. 아래 코드는 실행 시에 PropertiesService.getScriptProperties() 당신의 열쇠는 스크립트 파일에는 나타나지 않습니다.
- 6단계 -
단계 6 검색 도움말과 시트 작가 작성
다음 코드를 에 붙여주세요 Code.gs세 가지 기능은 검색, 정규화 및 쓰기를 처리합니다.
// ── 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);
}
7단계
단계 7 실행 및 확인
- 클릭하세요 저장 편집기 도구줄에 있는 아이콘 (플러피 디스크)
- 선택하세요
refreshMacroData실행 버튼 (▶) 옆에 있는 함수 드롭다운에서 - 클릭하세요 도망가. 첫 번째 실행은 스프레드시트 접속을 위해 권한을 요청하고 외부 HTTP 요청을 합니다 클릭 권한 검토 → 허용- 그래요
- 다시 스프레드시트에 전환합니다. 매크로데이터 이제 다음과 같은 행을 포함해야 합니다:
| 통화 | 표시기 | 날짜 | 가치 | 발표 날짜 시간 |
|---|---|---|---|---|
| 미국 달러 | 정책금리 | 2025-03-19 | 4.25 | 2025-03-19T18:00:00Z |
| 미국 달러 | 인플레이션 | 2025-03-12 | 2.8 | 2025-03-12T12:30:00Z |
| 미국 달러 | 실업 | 2025-03-07 | 4.1 | 2025-03-07T13:30:00Z |
8단계
단계 8 트리거로 자동 갱신 일정을 설정
시간적 트리거 호출 refreshMacroData 수동 작업 없이 일정을 정해 놓습니다.
- 앱 스크립트 편집기에서 를 클릭합니다. 발동기 왼쪽 사이드바에 있는 아이콘 (시계)
- 클릭하세요 + 트리거 추가 (아래 오른쪽)
- 설정 실행할 함수를 선택 -
refreshMacroData- 그래요 - 설정 이벤트 소스를 선택 - 시간으로 움직이는- 그래요
- 설정 시간 기반 트리거의 유형을 선택 - 낮계- 그래요
- 설정 시간 선택 → 예를 들어 7시 8시 (유럽 오픈 전에)
- 클릭하세요 저장트리거가 트리그 목록에 표시됩니다.
팁: 출시 날 모니터링을 위한 시간별 트리거
높은 영향력 있는 발표가 있는 날에는 미국 CPI, NFP 또는 중앙은행의 결정으로 트리거를
시간계 → 매 시간 그래서 엽서는 API가 업데이트되면 새로운 판독을 캡처합니다.
인플레이션 그리고
농부 외의 임금
두 번째 레벨의 최종 포인트를 운반합니다. announcement_datetime 각 판독이 언제 발표되었는지 정확하게 파악할 수 있도록 값들을 표시합니다.
9단계
단계 9 사용자 정의 함수를 가진 모든 셀에 최신 값을 가져오기
아래의 함수를 로 더하면 Code.gs 만약 매크로 값을 셀 공식에서 직접 참조하고 싶다면 GOOGLEFINANCE() 하지만 중앙은행 데이터에 대해서는:
/**
* 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;
}
저장 후, 입력 =FXMD("usd","policy_rate") 어떤 셀에도. 셰이트는 함수를 호출하고 API에서 가져와 현재 값을 반환합니다. 콤팩트한 요약 패널을 만들기 위해 인접한 셀의 통화 라벨과 결합합니다.
지원된 지표
FXMacroData 카탈로그에서 어떤 지표 슬러그도 작동합니다. policy_rate
inflation unemployment gdp pmi
retail_sales그리고 더 많은 것들도 있습니다.
API 문서 통화의 전체 목록을 보거나
FX 대시보드 시각적으로 지표를 탐구하기 위해서입니다.
── 요약 ──
요약
당신은 엑셀과 구글 시트 두 가지 모두에 FXMacroData를 연결했습니다:
- 엑셀 파워 쿼리 매개 변수 설정 가능한 M 함수, 모든 지표를 구조화된 테이블에 로드하고 열린 파일에서 업데이트합니다.
- 엑셀 VBA 매크로는 각 지표의 최신 값을 이름 붙인 셀에 기록하고 버튼에 할당할 수 있습니다.
- 구글 앱 스크립트 a
refreshMacroData()더하기=FXMD()셀별 검색을 위한 사용자 정의 공식, 둘 다 시간 기반 트리거로 자동으로 갱신됩니다.
여기서 더 많은 지표들을 층으로 나누는 것을 고려해 보세요. 예를 들어,
기본 인플레이션
전체적인 인플레이션과 함께, 또는 끌어당기는
PMI 여러 통화에서 성장 동력을 비교하기 위해 여러 지역 간 비교를 합니다. INDICATORS 배열 또는 M 함수 호출.