mcpField
T
trader-scanner

trader-scanner

github.com/jakeschincariolデータ・データベース2.6k112 回インストール1 週間前に更新
リポジトリ

trader-scanner について

trader-scannerは、日足の終値パターンやオープニングレンジのブレイク条件で銘柄をスキャンし、ウォッチリストを作成する日中取引向けスキルです。該当はルールとの一致を示すだけで、購入推奨や予測ではありません。

主な機能

  1. 01銘柄ユニバースを作成
  2. 02複数の条件で日足終値を抽出
  3. 03オープニングレンジブレイクをスキャン
  4. 04ウォッチリストと該当データを出力
  5. 05オフラインチャートと部分結果に対応

活用シーン

  1. 01市場開始前に日足パターンで銘柄を抽出
  2. 02場中にレンジ高値を終値で超えた銘柄を検索
  3. 03ウォッチリストや指定銘柄群をスキャン
  4. 04結果をニュース確認やエントリー手順に引き継ぐ

インストール

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

$npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-scanner

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

同梱ファイルscan.py

詳細

trader-scanner

チャートスキャナーはデイトレードの最初のステップです。何千もの無料チャートを読み込み、ルールに一致するものを一覧表示します。それだけを行います。スキャン結果はルールに一致するチャートの一覧であり、買うべき銘柄の一覧ではありません。また、チャート上のセットアップは予測ではありません。デイトレードをする人のほとんどは損失を出しており、スキャナーを使ってもそれは変わりません。手作業で5,000件のチャートを次々に確認する手間を省くだけです。

以下の ${CLAUDE_SKILL_DIR} は、このスキルのフォルダー(この SKILL.md がある場所)です。

python3 "${CLAUDE_SKILL_DIR}/scan.py" universe                       # -> trader/universe.txt
python3 "${CLAUDE_SKILL_DIR}/scan.py" daily                          # before the open -> trader/watchlist.json
python3 "${CLAUDE_SKILL_DIR}/scan.py" daily --symbols TSLA,NVDA,AMD  # or --watchlist FILE, --limit 200
python3 "${CLAUDE_SKILL_DIR}/scan.py" orb                            # after 9:50 AM ET -> trader/watchlist.json
python3 "${CLAUDE_SKILL_DIR}/scan.py" orb --at 10:15                 # cut the clock at 10:15 AM ET
python3 "${CLAUDE_SKILL_DIR}/scan.py" orb --watchlist trader/watchlist.json --json

フラグ:--min-price 5 および --min-volume(daily は 1,000,000、orb は 0)、--or-minutes 15、--max-confirm 200(orb のステージ 2)、--now "2026-10-19 10:15"(ニューヨーク時間)で時刻を固定、--offline PATH で保存済みの Yahoo ファイルを読み込み、--no-write、--show N、--json。スキャンで該当するものが見つかった場合の終了コードは 0、見つからなかった場合、または実行できなかった場合は 1 です(理由は1行のプレーンテキストで表示されます)。

読み書きするファイル

ファイル内容
trader/universe.txtuniverse が書き込みます:1行につき SYMBOL|Name。daily と orb が読み込みます
trader/watchlist.jsondaily と orb が書き込みます:mode、as_of、universe、scanned、failed、hits[]。trader-news と trader-entry は hits[].symbol を読み込みます
trader/config.jsonorb が読み込みます:no_entries_after(デフォルトは 15:30)

ユニバース

universe は nasdaqtrader.com/dynamic/SymDir から nasdaqlisted.txt と otherlisted.txt をダウンロードし、次の順に判定して条件に合う行を残します。

  1. テスト銘柄、ETF、NextShares ではないこと。
  2. 単純なティッカーであること:1~5文字、または1~4文字の後にドットとクラス文字が1つ付くもの(BRK.B)。$ 優先株(ABR$D)は除外され、.U、.W、.R の接尾辞(ユニット、ワラント、権利)が付くものも除外されます。
  3. 名前の内容にかかわらず、次のものは除外します:ワラント、SPAC のユニットと権利(「Units, each consisting of」、「Rights to receive」)、ノート、ETN、社債、クーポン率が % のもの、米国またはグローバル以外の「Depositary Shares」(これらは優先株を表します)。
  4. 次のものは含めます:名称に普通株、普通株式、またはユニット、普通株式、受益権の持分、ADS/ADR/米国またはグローバル預託株式、あるいはパートナーシップまたはトラストのユニットと記載されているもの。
  5. 名称にユニット、権利、債券、優先株、または優先株式と記載されているものは除外します。
  6. それ以外はすべて含めます(「AMETEK, Inc.」のような一般的な名称)。

2026年10月19日のファイルでは、5,943銘柄が残ります。動画では5,259銘柄でしたが、その数は場当たり的なフィルター(名称に普通株または普通株式と記載されたもの。ADR は除外)によるものです。その5,259銘柄はすべてこのリストに含まれています。追加の684銘柄の大半は ADR、クローズドエンド型ファンド、パートナーシップのユニットです。10月20日のファイルでは5,942銘柄でした。

日次スキャン(市場開始前)

Yahoo の spark エンドポイントは、1リクエストあたり20銘柄の終値を返すため、5,942銘柄には298リクエストが必要です。2026年10月20日は、適切な間隔(0.3秒)を設けて145秒かかりました。流動性は spark のメタデータから取得します。最終価格が --min-price 以上で、直近取引日の出来高が --min-volume 以上の銘柄が対象です。市場開始前または取引終了後に実行してください。取引時間中は出来高がその日の途中経過となり、当日の日足バーは午後4時まで取得できません。

セットアップは日次終値のみを使って計算します(spark には高値も安値もありません)。そのため、高値と安値を使う動画の refs/scan.py とよく似た条件になっています。

セットアップ終値に対するルール
breakout_20d最終終値が、その前の20取引日のすべての終値を上回っている
bull_flag直近5取引日の前の10取引日で10%を超えて上昇し、その後の直近5取引日の終値が5%のレンジ内にある
reclaim_ma201つ前の終値は20日平均を下回り、最終終値はそれを上回っている
oversoldRSI 14(ワイルダー方式)が30未満
oversold_bounce昨日の RSI 14 が30未満で、今日の終値が上昇している

終値ベースの高値ブレイクアウトは、日中高値ベースのものより頻繁に発生します(KO は10月16日に20日終値高値を更新しましたが、20日の日中高値は更新しませんでした)。該当銘柄は、売買代金(価格 × 出来高)が大きい順に表示されます。

セッション中のオープニングレンジ・ブレイクアウトスキャン

オープニングレンジは、セッション開始から最初の --or-minutes(15)分間です。つまり、9:30、9:35、9:40の5分足です。ヒットとなるのは、レンジ高値を上回って終値を付けた最初の完了済み5分足で、その足の終値時刻がヒット時刻です。

  1. ステージ1では、すべてのシンボルについて、本日の5分足の終値をスパークエンドポイントで取得します。1リクエストにつき20銘柄です。レンジ終了後の完了済みバーが、レンジ内の最高終値以上で終わった場合にのみ、銘柄を次に進めます。これは必要条件です(レンジ高値はレンジ内のすべての終値以上であるため)。そのため、ブレイクアウトを見落とすことはありません。
  2. ステージ2では、候補ごとに実際の高値と安値を含むv8チャートを取得します。1銘柄につき1リクエストです。レンジ高値はレンジ内のバーの最高値、レンジ安値は最低値です。朝の値動きが強い日は、ほとんどのチャートが候補となるため、ステージ2で確認するのは最大 --max-confirm(200)銘柄です。ここまでの売買高が最も大きい銘柄(価格×出来高)を優先し、スキップした件数とともにPARTIALと表示します。--max-confirm 0を指定すると、すべての候補を確認します。

2026年10月20日(火)の値動きが強かった日のライブ計測:午前10:01に流動性の高い銘柄100銘柄をスキャンしたところ、35秒かかりました(スパークエンドポイントへのリクエスト5回、v8チャート70件、利用可能な91チャートのうち51件がブレイクアウト)。午前10:03に全銘柄ユニバースをスキャンしたところ、約4分かかりました(スパークエンドポイントへのリクエスト298回、その後v8チャート200件):利用可能なチャートは2,448件、候補は1,782銘柄で、売買高上位200銘柄を確認し、そのうち119銘柄がブレイクアウトしました。すばやく結果を得るには、日次ウォッチリスト、または取引する銘柄のリストをスキャンしてください(--watchlist、--symbols)。

チャートが利用可能とみなされるのは、9:30からカットオフまでの5分足がすべて揃っている場合のみです。足が欠けている場合は、取引停止または流動性の低い銘柄を示します。終値がnullの足は除外され、5分足の刻みに合わない足(10:58:07のようなライブティック)も除外されます。また、足は完成してから(開始時刻+5分)カウントされます。午前9:50より前、週末または祝日、取引終了後、またはno_entries_after経過後(セットアップの期限切れ)には、通常の1行を表示し、何も書き込みません。午後1:00の早引けはカレンダーに含まれています。

データと制限

  • Yahooのチャートおよびスパークエンドポイントは無料ですが、非公式で、データが遅れる場合があります。データは5分足で、ティックごとではなく足ごとです。まずquery2を使い、429または5xxの場合はquery1を使います。429の場合は5秒待ってから1回再試行します。
  • 部分的な結果は、部分的であることを明示します:「5,259件のチャートのうち4,980件を取得(279件は失敗またはデータなし)」。部分スキャンを「市場全体」として表現してはいけません。
  • 2026年と2027年のNYSEの祝日および早引け(nyse.com、2026-10-13に確認)。

手順

  1. 週に1回程度:scan.py universe。
  2. 寄り付き前:scan.py daily。取得数、流動性の高い銘柄数、スキャン数、ヒット数をユーザーに伝え、セットアップ別に上位数件を示します。
  3. 米東部時間の午前9:50以降(定番は午前10:15):scan.py orb。レンジをブレイクアウトした利用可能なチャート数と時刻をユーザーに伝え、後のヒットほど現在の価格に近いことも伝えます。
  4. ユーザーがチャートを1つ選びます。次に引き継ぎます:/trader-news TICKER(何が値動きの要因か)、続いて/trader-entry TICKER(足ごとのエントリー)。代わりに選んではいけません。

例:リール

2026年10月19日(月)、午前10:15にリールの234銘柄ウォールをスキャン (tests/fixtures/trader-scanner/wall5m-2026-10-19.json.gz、実際のYahooチャート):

python3 scan.py orb --offline wall5m-2026-10-19.json.gz --now "2026-10-19 10:15" --min-price 0
Fetched 233 of 234 charts (1 failed or had no data); 231 usable; 95 candidates, 95 confirmed with real highs and lows.
42 of 231 charts closed above their opening-range high by 10:15 AM:
   9:50 AM  AMC         $2.97  range 2.90 to 2.96  +0.50% over
  ...
  10:15 AM  TSLA      $364.18  range 354.47 to 362.18  +0.55% over

リールのウォールには最低価格の条件がなかったため(AMCの2.97ドルも42銘柄のうちの1つです)、--min-price 0を指定しています。デフォルトの5ドルの下限では41銘柄です。TSLAのレンジは9:30から9:40までの足で、高値は362.18、安値は354.47です。10:10の足は364.18で終値を付け、午前10:15時点で高値を0.55%上回りました。ユーザーがTSLAを選ぶと、Claudeは/trader-news TSLA、続いて/trader-entry TSLAに引き継ぎます。リールではユニバースに米国株が5,259銘柄ありましたが、このツールのルールでは同じファイルから5,943銘柄が得られます。

同日の寄り付き前スキャン(リールの日足チャートで、10月16日(金)までの終値を使用)では、BLK、CI、XOM、HDが20日ブレイクアウト、CCLがブルフラッグ、F、JPM、GEが20日移動平均の回復、BAC、MS、RIVN、PLUGが売られ過ぎと判定され、リールと一致しました。終値ベースではさらに、KO(ブレイクアウト)、RCL(フラッグ)、PNC(売られ過ぎからの反発)も判定されました。

ルール

  • スキャンした内容を伝えます。シンボル数、取得できたチャート数、使用可能だった数、データの時刻を伝えます。
  • 「ルールに合致した」と伝え、「買い」「勝ち銘柄」「良い取引」とは決して言いません。
  • 損益、リターン、利益の数値は決して表示しません。
  • 価格が動いた時点で、ヒットした結果は古くなります。行動する前に再実行してください。

決して行わないこと

注文の発注、数量の決定、注文の確認は決して行わず、買うべき銘柄を伝えたり、データがリアルタイムだと述べたり、セットアップが機能すると約束したりすることもありません。

安全性

  • 教育およびツールの提供を目的としており、金融アドバイスではありません。PASS はルールチェックであり、推奨ではありません。
  • デフォルトではペーパートレードです("paper": true)。実取引を行うかどうかは、ユーザー自身が設定で決定します。
  • trader-broker 以外は注文を発注しません。また、次の3つの条件がすべて満たされた場合に限り発注します。trader-risk がその日の該当注文を承認していること、ユーザーがチャットでその注文について明示的に「はい」と入力したこと、そして注文ツールが「承認が必要」に設定されているため、ユーザーが Claude 独自のカードで一度「許可」をクリックしたことです(カスタマイズ > コネクタ > ツールの権限)。注文ツールを「常に許可」に設定しないでください。
  • 設定で許可され、ユーザーが確認しない限り、オプション取引、マージン取引、空売り、レバレッジは行いません。
  • ブローカーのキーは環境変数または Claude Desktop の設定に保存し、チャットには決して入力しないでください。

コメント