この記事ではUIデザインに特化して解説します。デザインシステム・UI生成全般は デザインシステムとは?仕組み・構成要素・有名事例をエンジニア向けに完全解説 をご覧ください。

概要

tradingview-screenerは、TradingViewの公式APIを使用してカスタム株式スクリーナーを構築するPythonパッケージ。通常はWebブラウザでマウス操作で行うスクリーニング(銘柄抽出・テクニカル指標フィルタリング)をスクリプトで実装できる。SQLライクな条件指定により、定量的な銘柄選定ワークフローを構築可能。株式投資家やクオンツエンジニアに活用されている。データ分析の定期実行を自動化する場合はApache Airflowとの組み合わせが効果的だ。

主な機能

  • 3000以上のデータフィールド:OHLCデータ、テクニカル指標、ファンダメンタルズデータ(P/E、EPS等)を活用
  • 複数市場対応:株式、暗号資産、外為、CFD、先物、債券等に対応
  • 複数タイムフレーム対応:1m、5m、15m、30m、1h、2h、4h、1d、1w、1moのタイムフレームをサポート。各フィールドで自由にタイムフレームを混在可能
  • SQLライクなフィルタリング:AND/OR論理を完全サポートした条件指定

クイックスタート

インストール手順

PyPiからインストール。

pip install tradingview-screener

基本的な使用例

最もシンプルなスクリーニング実行。

from tradingview_screener import Query

screener = Query().select(['symbol', 'close']).get_scanner_data()
print(screener)

フィルタ条件による絞り込み

スクリーニング条件を指定し、データを取得。

from tradingview_screener import Query

screener = Query().select(['symbol', 'close', 'volume']).where(
    'close > 100 AND volume > 1000000'
).get_scanner_data()

# 結果はpandas DataFrameで取得
df = screener
print(df)

SQL形式の条件指定

複雑な条件をSQL形式で記述し、スクリーニング実行。

from tradingview_screener import Query
import pandas as pd

screener = Query().select([
    'symbol', 'close', 'volume'
]).where(
    'close > 100 AND volume > 1000000'
).get_scanner_data()

print(f'Found {len(screener)} symbols')

アーキテクチャ

以下はtradingview-screenerの処理フロー。ユーザー定義の検索条件がスクリーナーに入力され、TradingViewのAPI層を経由して銘柄データを取得、フィルタリング、結果を返す構造。

flowchart LR A["ユーザー
スクリーニング条件設定"] --> B["Query
クラス初期化"] B --> C["フィールド選択
select()"] C --> D["条件指定
where()"] D --> E["TradingView
APIデータ取得"] E --> F["結果フィルタリング"] F --> G["pandas DataFrame
として返却"] G --> H["処理完了"]

実践的な使い方

ユースケース1:定期スクリーニング実行

スクリプトでスクリーニング実行をプログラム化、結果をpandas DataFrameで取得。

from tradingview_screener import Query
import pandas as pd
import datetime

def screening():
    # 条件による抽出
    screener = Query().select([
        'symbol', 'close', 'volume'
    ]).where(
        'close > 100 AND volume > 1000000'
    ).get_scanner_data()
    
    # 結果を確認
    print(f"Found {len(screener)} symbols matching criteria")
    print(screener.head(20))
    
    # DataFrameをCSVに保存する場合
    screener.to_csv(f'scan_results_{datetime.date.today()}.csv', index=False)

if __name__ == '__main__':
    screening()

ユースケース2:複数市場の同時スクリーニング

異なる市場からデータを取得し、結果を統合。

from tradingview_screener import Query
import pandas as pd

def multi_market_screening():
    results = {}
    
    # 米国株:価格基準
    results['US'] = Query().select([
        'symbol', 'close', 'volume'
    ]).where(
        'close > 100 AND volume > 1000000'
    ).get_scanner_data()
    
    # 暗号資産:別条件
    results['CRYPTO'] = Query().select([
        'symbol', 'close'
    ]).where(
        'close > 10000'
    ).get_scanner_data()
    
    # 結果を統合
    all_results = []
    for market, df in results.items():
        df['market'] = market
        all_results.append(df)
    
    combined = pd.concat(all_results, ignore_index=True)
    combined.to_csv('multi_market_scan.csv', index=False)
    print(f"Total {len(combined)} symbols across {len(results)} markets")

multi_market_screening()

ユースケース3:スクリーニング条件の保存と再利用

よく使うスクリーニング条件をJSON設定ファイルに保存、複数回実行。

import json
from tradingview_screener import Query

# スクリーニング設定ファイル
config = {
    "strategies": {
        "high_volume": {
            "fields": ["symbol", "close", "volume"],
            "condition": "close > 100 AND volume > 1000000"
        },
        "price_range": {
            "fields": ["symbol", "close"],
            "condition": "close > 50 AND close < 200"
        }
    }
}

with open('screening_strategies.json', 'w') as f:
    json.dump(config, f, indent=2)

# 保存された設定から実行
with open('screening_strategies.json', 'r') as f:
    strategies = json.load(f)['strategies']

for strategy_name, strategy_config in strategies.items():
    result = Query().select(
        strategy_config['fields']
    ).where(
        strategy_config['condition']
    ).get_scanner_data()
    print(f"{strategy_name}: {len(result)} symbols found")

まとめ

対象ユーザー:プログラミング経験のある株式投資家・アルゴリズムトレーダー・データ分析エンジニア。カスタムスクリーナーの構築と自動化が必要なユーザーに適合。

推奨シーン

  • 定期的なスクリーニング自動実行
  • 複数条件のフィルタリング
  • スクリーニング結果の他システムとの連携
  • 大量銘柄の一括処理

制限事項と注意点:TradingViewのAPI仕様変更により動作が影響を受ける可能性あり。認証情報はセキュアに管理が必須。リアルタイムデータではなく遅延データ(数分)を使用。商業利用の場合、TradingViewの利用規約確認が必要。Webブラウザ操作の自動化が必要な場合はBrowser Useも選択肢になる。

参照ソース