mcpField
P
price-alerts

price-alerts

github.com/eli-alvaradoその他310 回インストール6 日前に更新
リポジトリ

price-alerts について

米国市場のウォッチリストルールを最新の株価で評価し、新たに発生したアラートだけを報告するスキルです。クールダウンや重複抑制、市場時間の確認、任意の通知に対応し、注文の発注や変更は行いません。

主な機能

  1. 01価格と指標のルール評価
  2. 02新規アラートのみ報告
  3. 03ラッチとクールダウンの適用
  4. 04市場時間と古い株価の確認
  5. 05テキストと JSON の出力
  6. 06任意の通知先に対応

活用シーン

  1. 01ウォッチリストの価格、ストップ、目標値の監視
  2. 02日次変動、指標、決算時期の確認
  3. 03設定済みのアラート通知の送信
  4. 04クールダウン状態を更新せず条件を確認

MCP 対応

接続済みの Alpaca または TradingView MCP サーバーを使い、スクリプトの代わりに読み取り専用の株価や指標を取得できます。アラートルールと重複抑制の状態処理は同じです。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/eli-alvarado/us-watchlist-alerts --skill price-alerts

インストール後、Claude Code で/price-alertsを入力して読み込まれたか確認します。

詳細

価格アラート(米国市場)

ウォッチリスト(watchlist-manager を参照)のアラートルールを最新の株価に照らして評価し、新しいアラートのみを報告します。 投資助言ではありません。注文の発注、変更、取消は絶対に行わないでください。アラートが発生した場合も、ブローカーツールが接続されている場合も、この会話でユーザーがその注文を明示的に確認した場合を除き、注文を行わないでください。

実行方法

python scripts/alerts.py --watchlist watchlist.json --state .alert_state.json            # text output
python scripts/alerts.py --format json                                                    # machine-readable
python scripts/alerts.py --force-session                                                  # evaluate even when market closed
python scripts/alerts.py --dry-run                                                        # don't update cooldown state
python scripts/alerts.py --notify                                                         # also deliver via WATCHLIST_NOTIFY sinks
python scripts/market_calendar.py                                                         # current ET session

出力:ALERT <message> の行、no new alerts、または「アラートセッション外」を示すメモです。データエラーは標準エラー出力に WARN として出力されます。NOTIFY <sink> は通知の配信を確認します。シンクのエラーは WARN notify … として出力され、チェックを中断してはいけません。通知シンクをブローカーとして扱わないでください。

アラートの種類

typevalue発生条件kind
price_above / price_below価格最終価格が値以上/以下水準
stop_hit価格(デフォルト:ティッカーの stop)ロング:最終価格 <= stop、ショート:最終価格 >= stop水準(stop が設定されている場合は暗黙的に有効)
target_hit-最終価格がいずれかの targets エントリーを超える水準(targets が設定されている場合は暗黙的に有効)
pct_change_up / pct_change_down / pct_move%前日終値からの変化率 >= 値日次
gap_up / gap_down%(デフォルト 2)前日終値に対する始値日次
new_52w_high / new_52w_low-最終価格が過去 252 取引日の値幅を超える日次
near_52w_high / near_52w_low%(デフォルトは settings.near_52w_pct)52 週高値/安値から値%以内日次相当(水準ラッチ)
golden_cross / death_crossfast、slow(50/200)最新バーで SMA の fast が slow をクロスする日次
cross_above_ma / cross_below_maMA の期間(デフォルト 50)最終終値が SMA をクロスする日次
rsi_above / rsi_belowRSI 水準。period(14)は任意日次終値に対するワイルダー RSI水準
iv_above / iv_belowIV のパーセンテージ非公式の Yahoo ATM IV(最も近い満期)。欠損または 0 の場合はスキップ水準
volume_spike倍率(デフォルト 2.0)本日の出来高 >= 値 x 20 日平均日次
earnings_within日数(デフォルト 3)次回決算日まで N 日以内日次
intraday_range_pct%(day_high-day_low)/prev_close。高値/安値がない場合はスキップ日次

任意のルールに cooldown_minutes を設定すると、settings.cooldown_minutes を上書きできます。

スパム防止ルール(scripts/alerts.py で実装、状態は .alert_state.json に保存)

  • 水準アラートのラッチ:一度発生すると、価格が rearm_pct(デフォルト 0.5%)分だけ水準を逆方向に超えるまで通知されません。株価が 240 ドル付近で推移していても、通知が繰り返されることはありません。iv_* は、ATM IV がしきい値を超えなくなると再アームされます。
  • 日次イベントアラート:ティッカー/種類ごとに、取引日あたり最大 1 回だけ発生します。
  • クールダウン(cooldown_minutes、デフォルト 240)は、再発するすべてのアラートに適用されます。
  • 上限は max_alerts_per_run(デフォルト 20)です。上限を超えたアラートは状態に記録されないため、次回実行時に発生する可能性があります。多数のアラートが発生した場合は、長文を羅列するのではなく「アラート 7 件、うち TSLA が 4 件」のように要約してください。
  • 状態ファイルが存在しない場合、または破損している場合は、新しい状態で開始しますが、この実行では重複が発生する可能性があることをユーザーに警告してください。
  • targets[] の各水準は、それぞれ独立したラッチ付き target_hit です(T1 の発生によって T2 が抑制されることはありません)。

市場時間(America/New_York、scripts/market_calendar.py で処理)

  • プレマーケットは04:00~09:30、通常取引時間は09:30~16:00、時間外取引は16:00~20:00 ETです。短縮取引日は(感謝祭の翌日、クリスマスイブ、平日の7月3日)13:00に取引を終了し、時間外取引は17:00までです。
  • NYSEの休場日:元日(土曜日の場合は振替休場なし)、キング牧師記念日、プレジデンツデー、聖金曜日、メモリアルデー、ジューンティーンス、独立記念日、レイバーデー、感謝祭、クリスマス(土曜日なら金曜日、日曜日なら月曜日に振替)。臨時休場:同梱のdata/holidays_overrides.json、NYSE_EXTRA_CLOSURES/settings.extra_closures、および(Alpacaのキーが設定されている場合)公式カレンダーにない平日です。カレンダーでは営業日となっている平日に株価が古く見える場合は、その旨を伝えてください。
  • settings.sessionsでアラートを実行する時間帯を指定します。デフォルトは["regular"]です。時間外取引では"pre"/"after"を追加します。時間外取引の株価情報は薄く、無料の情報源では遅延する場合があることに注意してください。
  • 時刻は必ずETで記載してください(ユーザーの現地時刻がわかる場合は、「10:05 ET / 9:05 CT」のように併記してください)。

データソース(scripts/quotes.py、次の順に自動フォールバック)

  1. 指定されている場合は--fixtureのパス(テスト/デモ専用)。
  2. ALPACA_API_KEY_ID および ALPACA_API_SECRET_KEYが設定されている場合は、Alpacaのスナップショットと日足バー(米国の公式フィード)。
  3. インストールされている場合はyfinance(pip install yfinance)。
  4. Yahooの公開チャートAPI(標準ライブラリを使用、非公式、ベストエフォート):まずquery1.finance.yahoo.com、次にquery2。
  5. FINNHUB_API_KEYが設定されている場合は、Finnhubの株価情報とローソク足。
  6. ALPHAVANTAGE_API_KEYが設定されている場合は、Alpha Vantageの日足データ。

--providerまたはWATCHLIST_PROVIDERで使用するデータソースを指定できます。HTTP 429/5xxは再試行され、失敗はプロバイダー、HTTPステータス、ヒントが付いたQuoteErrorとして記録されます。無料データは約15分遅延する場合があります。精度が重要な場合は、その旨を伝えてください。

決算日は株価情報の取得後に補完され、最初に得られた情報が使われます。既存のフィールド(yfinance/fixture)→ Yahoo calendarEvents(キー不要)→ Finnhubの決算カレンダー→ Alpha VantageのEARNINGS_CALENDARの順です。株価情報のearnings_sourceには、採用された情報源が記録されます。

古い株価情報: --stale-after/WATCHLIST_STALE_AFTER/settings.stale_after_seconds(デフォルトは900)で設定します。通常取引時間中にas_ofがこの値より古い場合は警告してください。0を指定すると無効になります。

ATM IV: iv_above/iv_belowが設定されたティッカーのみ取得します。非公式のYahooオプションチェーンを使用し、最も近い満期日のATMコール/プットの平均値をパーセントで示します。IVランクではありません。確認するにはpython scripts/quotes.py AAPL --ivを実行してください。

通知(任意): WATCHLIST_NOTIFY=ntfy,slack,webhook,desktop,fileおよび/または--notifyを使用します。環境変数についてはREADMEを参照してください。空の結果/スキップ/ドライランでは通知しないでください。配信エラーは警告として扱います。

既知の制限事項: 臨時休場日はdata/holidays_overrides.json(不完全)に加え、環境変数/設定、および任意のAlpaca公式カレンダーのオーバーレイ(1日単位でキャッシュ)で管理されます。Yahooのエンドポイントは非公式です。docs/LIMITATIONS.mdを参照してください。

MCPの選択肢: alpaca MCP サーバー(alpacahq/alpaca-mcp-server)またはtradingview MCP(atilaahmettaner/tradingview-mcp)が接続されている場合、スクリプトの代わりに株価情報/インジケーターの取得に使用できます。その場合も同じルールとスパム防止ロジックを適用し、同じ形式で.alert_state.jsonを読み書きしてください。ブローカーのMCPは読み取り専用の呼び出しに限って使用してください。

レポート形式

🔔 3 new alerts (10:05 ET, regular session, data: yahoo, ~15m delayed)
- AAPL $241.50 is above $240.00  (thesis: services margin; stop $210, T1 $250)
- TSLA down -6.0% today, gapped down -5.0%, volume 3.0x avg
- TSLA reports earnings in 1 day (2026-10-16)

ティッカーごとにまとめ、状況説明として保存済みの投資仮説/ストップ価格/目標価格を含めてください。推奨はしないでください。アラートがない場合は短い一文だけを返すか、ハートビート実行中(HEARTBEAT.mdを参照)の場合は何も返さないでください。

チャットからアラートを作成

「AAPLが200を下回ったら通知して」→ python scripts/watchlist.py update AAPL --alert price_below:200 --append(ティッカーが未登録の場合は、先に追加してください)。ルールを平易な英語で確認してください。

コメント