短いスクリプトを定期的に実行して現物価格を読み取り、設定した水準と比較します。2026年10月24日に金が$3,996.00だった場合、しきい値$4,000での最初の呼び出しでは、アラートを出さずに初期状態を保存します。価格はライブで、実行1回につき呼び出し1回分の料金がかかります。
APIを使う方法
- キーを取得してしきい値を決める 無料キーを取得し、
NARWHAL_API_KEY環境変数に保存します。Narwhal はデータ API 全体で1つのアカウントと1つの API キーを使い、REST と MCP でも同じキーを使います。スクリプトはキーをAuthorization: Bearer YOUR_KEYヘッダーで送り、金価格(1トロイオンスあたり 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}") - スクリプトをスケジュール実行する スポット価格はライブなので、スケジュールは好きな頻度で実行できます。1日1リクエストなら月に約30回の呼び出しで、費用は約 $0.09 です。
- アラートをメッセージにつなぐ 条件の中にある
printの行が、メールやチャットメッセージを送る場所です。スクリプトが各価格を保存した側と比べられるよう、スケジュール実行の間は状態ファイルを残しておいてください。アラートは両方向で出ます。下にあった価格が上を超えたとき、上にあった価格が下を割ったときです。最後の価格のprintは、しきい値をまたがなくても実行されます。
価格はライブなので、ポーリングは控えめにしてください。ポーリングのたびに呼び出しが発生し、クレジットを消費します。しきい値をまたいだかどうかの比較には、それらのリクエストで返された価格を使います。スクリプトは呼ばれるたびにスポットのリクエストを1回行います。スケジュールはスクリプトの外で設定してください。スクリプトにスケジュール用のループはありません。スケジュール実行については毎日のデータ取得を定期実行するを参照してください。
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日1回の呼び出し |
| より速いアラート | 数分ごとのスクリプト | 価格はライブで、実行1回につき呼び出し1回分の料金です |
| コードなしのアラート | HTTP リクエストステップを使う Zapier、Make、n8n | ワークフローで HTTP リクエストを使います。Zapier と Make は、メールやチャットのアクションの前に価格でフィルターできます。 |
保存した状態をリセットするには?
保存した側をリセットするには gold_state.json を削除します。このファイルがないと was_above は None になり、アラートの条件は成立しません。スクリプトは、返された価格の側を開始時の状態として保存します。ファイルを削除すると、しきい値をまたぐかどうかの比較が最初からやり直しになりますが、最初の価格でアラートが出ることはありません。
Webhook でコモディティ価格アラートを送れますか?
NarwhalのWebhookは価格水準を対象としません。経済指標の発表、イールドカーブ、祝日カレンダー、予測イベントを配信します。価格のしきい値を使う場合は、価格を定期的にポーリングしてください。価格の比較は、それらの価格を読み取るスクリプトやワークフローで行います。
原油や銅のアラートをストリーミングできますか?
原油と銅は 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 | 上 | なし |
公開。