indicator-scanner について
indicator-scannerは、テクニカル指標の条件で株式ウォッチリストを調べるPythonスクリプトを作成するスキルです。繰り返しスキャンを行い、整形した結果やCSVを必要とするユーザー向けです。
主な機能
- 01条件に基づく銘柄スキャン
- 02定義済み・カスタムスキャン
- 03openalgo.taによる指標計算
- 04結果の整形表示とCSV保存
- 05リアルタイムLTP取得にも対応
活用シーン
- 01RSIの売られ過ぎ・買われ過ぎ銘柄の抽出
- 02EMAやMACDのクロス銘柄の検索
- 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
引数がない場合は、何をスキャンしたいかユーザーに尋ねます。
手順
- 参考として indicator-expert のルールを読みます
scanners/{scan_type}/ディレクトリを(必要に応じて)作成します{scan_type}_scanner.pyを作成します- スクリプトでは、以下を実行する必要があります:
- プロジェクトルートから
.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-oversold | RSI(14) < 30 | RSI |
rsi-overbought | RSI(14) > 70 | RSI |
ema-crossover | 過去 3 本のバー以内に EMA(10) が EMA(20) を上抜け | EMA |
ema-crossunder | 過去 3 本のバー以内に EMA(10) が EMA(20) を下抜け | EMA |
supertrend-buy | Supertrend の方向が -1(上昇トレンド)に変化 | Supertrend |
supertrend-sell | Supertrend の方向が 1(下降トレンド)に変化 | Supertrend |
macd-crossover | 過去 3 本のバー以内に MACD がシグナルを上抜け | MACD |
adx-trending | ADX > 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
コメント
Markdown 対応