짧은 스크립트를 일정에 맞춰 실행해 현물 가격을 읽고 설정한 수준과 비교하세요. 2026년 10월 24일 금 가격이 $3,996.00일 때 임계값 $4,000으로 처음 호출하면 알림 없이 시작 상태만 저장합니다. 가격은 실시간이며 실행 1회당 호출 1회 비용이 듭니다.
API 사용 방법
- 키를 받고 임계값 정하기 무료 키를 받아
NARWHAL_API_KEY환경 변수에 보관하세요. Narwhal은 모든 데이터 API에서 계정 하나와 API 키 하나를 사용하며 REST와 MCP도 같은 키를 씁니다. 스크립트는 키를Authorization: Bearer YOUR_KEY헤더로 보내고, 트로이 온스당 USD로 표시된 금 가격을THRESHOLD와 비교합니다. - Python 스크립트 저장하기 요청은 금 현물 엔드포인트에서
price를 읽습니다.THRESHOLD와 같거나 높으면 위, 낮으면 아래로 봅니다. 스크립트는 그 쪽을gold_state.json에 저장된 값과 비교해, 쪽이 바뀌면 알림을 출력합니다. 그다음 새 상태를 저장하고 가격을 출력합니다.import json, os, pathlib import requests THRESHOLD = 4000.00 # alert when gold crosses this level, in USD per troy ounce STATE = pathlib.Path("gold_state.json") # remembers which side of the line we were on price = float( requests.get( "https://api.narwhalapi.com/v1/commodities/spot/XAU/USD", headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ).json()["price"] ) above = price >= THRESHOLD was_above = json.loads(STATE.read_text())["above"] if STATE.exists() else None if was_above is not None and above != was_above: print( f"ALERT: gold {'rose above' if above else 'fell below'} " f"{THRESHOLD:.2f} at {price:.2f}" ) # send an email or chat message here STATE.write_text(json.dumps({"above": above})) print(f"gold {price:.2f}") - 스크립트를 일정에 맞춰 실행하기 현물 가격은 실시간이므로 원하는 만큼 자주 실행하도록 일정을 잡을 수 있습니다. 하루 한 번 요청하면 한 달에 약 30회 호출되며 비용은 약 $0.09입니다.
- 알림을 메시지에 연결하기 조건 안의
print줄이 이메일이나 채팅 메시지를 보낼 위치입니다. 스크립트가 각 가격을 저장된 쪽과 비교할 수 있도록 예약 호출 사이에 상태 파일을 유지하세요. 알림은 양방향으로 나갑니다. 아래에 있다가 임계값 위로 올라갈 때와, 위에 있다가 아래로 내려갈 때입니다. 마지막 가격print는 임계값을 넘지 않아도 실행됩니다.
가격은 실시간이므로 폴링은 아껴서 하세요. 폴링 한 번이 곧 호출 한 번이고 크레딧이 차감됩니다. 임계값 교차 비교는 그 요청들이 반환한 가격을 사용합니다. 스크립트는 호출될 때마다 현물 요청을 한 번 보냅니다. 일정은 스크립트 바깥에서 설정하세요. 스크립트에는 스케줄링 루프가 없습니다. 일정 설정은 일일 데이터 수집 자동화를 참고하세요.
THRESHOLD는 가격 수준에, STATE는 저장할 JSON 파일 경로에 사용하세요. 비교식은 price >= THRESHOLD입니다. 알림 문구는 above가 true이면 rose above, false이면 fell below를 씁니다. 임계값과 반환된 가격이 모두 들어가므로 메시지에는 알림을 일으킨 수준과 비교에 쓰인 가격이 담깁니다. 저장된 JSON에는 다음 호출이 읽을 above 값이 들어 있습니다.
코드 없이 하기
Zapier나 Make에서 스케줄 트리거로 시작해 https://api.narwhalapi.com/v1/commodities/spot/XAU/USD로 HTTP 요청을 추가하세요. 요청이 Narwhal 계정으로 처리되도록 키를 Bearer 헤더에 넣어 보냅니다. 반환된 price에 필터를 추가하고 그 뒤에 이메일이나 채팅 작업을 붙이세요. 필터가 해당 가격이 설정한 수준에 도달했는지 판단합니다. 현물 가격은 실시간이므로 실행할 때마다 현재 가격을 비교합니다. Bearer 헤더는 Python 요청과 같은 Narwhal 키를 사용하며, REST와 MCP도 그 키를 공유합니다.
그 방법은 Zapier 튜토리얼이나 Make 튜토리얼을 참고하세요. Python 스크립트에는 교차 상태 저장이 들어 있고, 노코드 워크플로에는 가격 필터와 메시지 액션이 있습니다. 두 조건을 같은 알림으로 보기 전에, 내 조건이 임계값 위의 가격인지 이전에 저장한 쪽에서의 변화인지 먼저 정하세요.
상황별 계산 방법
| 상황 | 적합한 방법 | 이유 |
|---|---|---|
| 하루 한 번 수준 알림 | 일일 일정으로 실행하는 스크립트 | 하루 호출 1회 |
| 더 빠른 알림 | 몇 분마다 스크립트 실행 | 가격은 실시간이며 실행 1회당 호출 1회 비용이 듭니다 |
| 코드 없는 알림 | HTTP 요청 단계를 쓰는 Zapier, Make, n8n | 워크플로에서 HTTP 요청을 사용하세요. Zapier와 Make는 이메일이나 채팅 액션 앞에서 가격으로 필터링할 수 있습니다. |
저장된 교차 상태를 초기화하려면 어떻게 하나요?
저장된 쪽을 초기화하려면 gold_state.json을 삭제하세요. 이 파일이 없으면 was_above는 None이므로 알림 조건이 성립하지 않습니다. 스크립트는 반환된 가격이 있는 쪽을 시작 상태로 저장합니다. 따라서 파일을 삭제하면 교차 비교가 처음부터 다시 시작되며, 첫 가격으로 알림이 나가지는 않습니다.
웹훅으로 원자재 가격 알림을 보낼 수 있나요?
Narwhal 웹훅은 가격 수준을 다루지 않습니다. 경제지표 발표, 수익률 곡선, 공휴일 캘린더, 예측 이벤트를 전달합니다. 가격 임계값이 필요하면 일정에 따라 가격을 폴링하세요. 가격 비교는 그 가격을 읽는 스크립트나 워크플로에서 수행합니다.
원유나 구리 알림을 스트리밍할 수 있나요?
원유와 구리는 REST만 지원하므로 이런 알림에는 폴링을 사용하세요. 스트리밍할 수 있는 것은 금속 XAU, XAG, XPT, XPD와 FX 통화쌍뿐입니다. 폴링은 XAU, XAG, XPT, XPD, XCU, BRENT, WTI를 포함한 모든 현물 코드에서 동작합니다.
계산 예시: 임계값 4,000
2026년 10월 24일 금 가격 $3,996.00과 임계값 $4,000에서 시작합니다. 이 첫 호출에서 가격은 임계값보다 아래이고 저장된 쪽은 없습니다. 스크립트는 상태 파일에 false를 저장하고 gold 3996.00을 출력하며, 알림은 나가지 않습니다.
예를 들어 2일째 가격이 $4,012.50, 3일째 가격이 $4,020이라고 가정해 봅시다. 이후 가격은 설명을 위해 지어낸 예시입니다. 2일째에는 저장된 쪽이 아래이고 새 쪽이 위이므로 스크립트가 교차 알림을 출력합니다. 3일째에는 저장된 쪽과 새 쪽이 모두 위라서 알림이 반복되지 않습니다.
| 호출 | 금 가격 | 호출 후 저장되는 쪽 | 알림 |
|---|---|---|---|
| 1일째, 2026년 10월 24일 | $3,996.00 | 아래 | 없음 |
| 2일째(예시) | $4,012.50 | 위 | ALERT: gold rose above 4000.00 at 4012.50(알림 출력) |
| 3일째(예시) | $4,020 | 위 | 없음 |
에 게시되었습니다.