mcpField
I
indicator-scanner

indicator-scanner

github.com/marketcallsデータ・データベース20582 回インストール20 週間前に更新
リポジトリ

indicator-scanner について

indicator-scannerは、テクニカル指標の条件で株式ウォッチリストを調べるPythonスクリプトを作成するスキルです。繰り返しスキャンを行い、整形した結果やCSVを必要とするユーザー向けです。

主な機能

  1. 01条件に基づく銘柄スキャン
  2. 02定義済み・カスタムスキャン
  3. 03openalgo.taによる指標計算
  4. 04結果の整形表示とCSV保存
  5. 05リアルタイムLTP取得にも対応

活用シーン

  1. 01RSIの売られ過ぎ・買われ過ぎ銘柄の抽出
  2. 02EMAやMACDのクロス銘柄の検索
  3. 03出来高急増やADXトレンドの検出

インストール

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

$npx skills add https://github.com/marketcalls/openalgo-indicator-skills --skill indicator-scanner

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

詳細

テクニカル条件で銘柄をスクリーニングする、複数銘柄対応のインジケータースキャナーを作成します。

引数

$ARGUMENTS を次の形式で解析します:scan-type watchlist

  • $0 = スキャンタイプ(例:rsi-oversold、rsi-overbought、ema-crossover、supertrend-buy、supertrend-sell、macd-crossover、adx-trending、custom)。デフォルト:rsi-oversold
  • $1 = ウォッチリスト(例:nifty50、banknifty、custom)。デフォルト:nifty50

引数がない場合は、何をスキャンしたいかユーザーに尋ねます。

手順

  1. 参考として indicator-expert のルールを読みます
  2. scanners/{scan_type}/ ディレクトリを(必要に応じて)作成します
  3. {scan_type}_scanner.py を作成します
  4. スクリプトでは、以下を実行する必要があります:
    • プロジェクトルートから .env を読み込みます
    • ウォッチリストを定義します(事前定義またはカスタム)
    • client.history() を使用して各銘柄のデータを取得します
    • openalgo.ta を使用してインジケーターを計算します
    • スキャン条件を確認します
    • 結果を整形済みテーブルとして表示します
    • 結果を CSV に保存します
    • 現在値を取得するために、必要に応じて client.quotes() でリアルタイムの LTP を取得します
スキャンロジックのパターン
results = []
for symbol in watchlist:
    df = fetch_data(symbol, exchange, interval)
    close = df["close"]

    # Compute indicator
    rsi = ta.rsi(close, 14)
    current_rsi = rsi.iloc[-1]

    # Check condition
    if current_rsi < 30:  # RSI oversold
        results.append({
            "symbol": symbol,
            "ltp": close.iloc[-1],
            "rsi": current_rsi,
            "signal": "OVERSOLD",
        })

# Print table
df_results = pd.DataFrame(results)
print(df_results.to_string(index=False))
df_results.to_csv(script_dir / f"{scan_type}_results.csv", index=False)

事前定義されたスキャンタイプ

スキャンタイプ条件インジケーター
rsi-oversoldRSI(14) < 30RSI
rsi-overboughtRSI(14) > 70RSI
ema-crossover過去 3 本のバー以内に EMA(10) が EMA(20) を上抜けEMA
ema-crossunder過去 3 本のバー以内に EMA(10) が EMA(20) を下抜けEMA
supertrend-buySupertrend の方向が -1(上昇トレンド)に変化Supertrend
supertrend-sellSupertrend の方向が 1(下降トレンド)に変化Supertrend
macd-crossover過去 3 本のバー以内に MACD がシグナルを上抜けMACD
adx-trendingADX > 25(強いトレンド)ADX
bb-squeezeボリンジャー幅が過去 20 本のバーで最低値(ボラティリティの収縮)Bollinger
volume-spike出来高 > 20 日平均の 2 倍出来高
custom条件をユーザーに尋ねる任意

事前定義されたウォッチリスト

NIFTY 50(nifty50)
NIFTY50 = [
    "ADANIENT", "ADANIPORTS", "APOLLOHOSP", "ASIANPAINT", "AXISBANK",
    "BAJAJ-AUTO", "BAJFINANCE", "BAJAJFINSV", "BPCL", "BHARTIARTL",
    "BRITANNIA", "CIPLA", "COALINDIA", "DIVISLAB", "DRREDDY",
    "EICHERMOT", "GRASIM", "HCLTECH", "HDFCBANK", "HDFCLIFE",
    "HEROMOTOCO", "HINDALCO", "HINDUNILVR", "ICICIBANK", "INDUSINDBK",
    "INFY", "ITC", "JSWSTEEL", "KOTAKBANK", "LT",
    "M&M", "MARUTI", "NESTLEIND", "NTPC", "ONGC",
    "POWERGRID", "RELIANCE", "SBILIFE", "SBIN", "SUNPHARMA",
    "TCS", "TATACONSUM", "TATAMOTORS", "TATASTEEL", "TECHM",
    "TITAN", "ULTRACEMCO", "UPL", "WIPRO",
]
Bank NIFTY(banknifty)
BANKNIFTY = [
    "HDFCBANK", "ICICIBANK", "KOTAKBANK", "AXISBANK", "SBIN",
    "INDUSINDBK", "BANKBARODA", "FEDERALBNK", "PNB", "IDFCFIRSTB",
    "BANDHANBNK", "AUBANK",
]

出力形式

Symbol     LTP      RSI(14)  Signal
------     ---      -------  ------
SBIN       769.60   28.4     OVERSOLD
TATASTEEL  142.30   25.1     OVERSOLD
COALINDIA  385.00   29.7     OVERSOLD

Scan: RSI Oversold (<30) | Watchlist: NIFTY 50 | Date: 2025-02-28
Found 3 / 50 symbols matching condition
Results saved to: scanners/rsi_oversold/rsi_oversold_results.csv

使用例

/indicator-scanner rsi-oversold nifty50 /indicator-scanner ema-crossover banknifty /indicator-scanner supertrend-buy nifty50 /indicator-scanner volume-spike nifty50 /indicator-scanner custom

コメント