コモディティ価格アラートを設定する

短いスクリプトを定期的に実行して現物価格を読み取り、設定した水準と比較します。2026年10月24日に金が$3,996.00だった場合、しきい値$4,000での最初の呼び出しでは、アラートを出さずに初期状態を保存します。価格はライブで、実行1回につき呼び出し1回分の料金がかかります。

APIを使う方法

  1. キーを取得してしきい値を決める 無料キーを取得し、NARWHAL_API_KEY 環境変数に保存します。Narwhal はデータ API 全体で1つのアカウントと1つの API キーを使い、REST と MCP でも同じキーを使います。スクリプトはキーを Authorization: Bearer YOUR_KEY ヘッダーで送り、金価格(1トロイオンスあたり USD)を THRESHOLD と比較します。
  2. Python スクリプトを保存する リクエストは金のスポットエンドポイントから price を読み取ります。価格が THRESHOLD 以上なら上、それより低ければ下とみなします。スクリプトは、その側を gold_state.json に保存された値と比べ、側が変わったときにアラートを表示します。その後、新しい状態を保存し、価格を表示します。
    Python:金が 4,000 を超えたら通知
    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}")
  3. スクリプトをスケジュール実行する スポット価格はライブなので、スケジュールは好きな頻度で実行できます。1日1リクエストなら月に約30回の呼び出しで、費用は約 $0.09 です。
  4. アラートをメッセージにつなぐ 条件の中にある 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上なし

公開。

次のステップ