Pythonでマルチマーケット株式ブレイクアウトスクリーナーを作る

📈 はじめに

株式トレードにおいて、最も魅力的な戦略の一つが ブレイクアウト(Breakout) です。
価格が重要な抵抗線を上抜け、出来高が急増するとき、強い上昇トレンドが始まる可能性があります。

このプロジェクトでは、そんな銘柄を自動で見つけるための 「ブレイクアウトスクリーナー」 をPythonで開発しました。
NYSE・日経225・ベトナム50など、複数市場を一括スキャンし、条件を満たした銘柄をリストアップ。さらに自動的にローソク足チャートを生成します。


🧠 システム概要

このプログラムは3つのPythonモジュールで構成されています。

ファイル名 説明
test10.py コアロジック。Yahoo Financeからデータを取得し、ブレイクアウト条件を判定。
breakout.py コマンドラインから簡単にスクリーナーを実行できるCLIラッパー。
ui_breakout.py Tkinterを使ったGUI(グラフィカルインターフェース)。誰でも簡単に操作可能。

システム構成図

flowchart TD
    A["ui_breakout.py (GUIインターフェース)"] --> B["breakout.py (CLIラッパー)"]
    B --> C["test10.py (コアスクリーナー)"]
    C --> D["Yahoo Finance API"]
    C --> E["Chart Generator (Plotly HTML/PNG)"]

⚙️ 動作の仕組み

1️⃣ データ取得

各市場(NYSE・日経・ベトナムなど)の上位銘柄をリストアップし、過去3ヶ月の株価データをYahoo Financeから取得します。

2️⃣ スクリーニングロジック

取得したデータに以下の条件を適用します。

  • 📊 直近の高値をブレイクしたか
  • 🔊 平均出来高の1.5倍以上のボリュームがあるか
  • 💧 一定の流動性を持つ銘柄か
  • 📅 週足でもブレイクアウトを確認(オプション)

条件を満たした銘柄のみが「ブレイクアウト銘柄」として抽出されます。

if is_breakout(df_t,
               lookback=lookback,
               volume_mult=volume_mult,
               min_margin=min_margin,
               min_close_pct=min_close_pct,
               weekly_confirm=weekly_confirm,
               weekly_lookback=weekly_lookback):
    results.append(t)

🌏 対応市場

このスクリーナーは世界各国の主要市場に対応しています。

  • 🇺🇸 NYSE(ニューヨーク証券取引所)
  • 🇯🇵 Nikkei 50(日経主要銘柄)
  • 🇻🇳 Vietnam 50(ベトナム主要銘柄)
  • 🇨🇳 SSE 50(上海上位銘柄)
  • 🇭🇰 HSI 50(香港ハンセン指数)
  • 🇪🇺 Euronext(ヨーロッパ市場)
  • 🇺🇸 S&P 500 / 50

それぞれの市場でトップ銘柄を取得し、同一ロジックでスクリーニングを行います。


📊 自動チャート生成

抽出した銘柄ごとに、Plotlyを使用してローソク足チャートを自動生成します。
価格推移・出来高・直近高値の突破などが一目で分かるようになります。

コマンド例:

python breakout.py --markets nyse,nikkei50 --charts --chart-format html

生成結果:

charts/<market>/<ticker>.html

🖥️ GUIインターフェース

コマンドラインが苦手なユーザー向けに、TkinterベースのGUIも搭載。
複数市場のチェックボックス、パラメータ設定、ログ出力、チャートプレビューなどをGUIで操作できます。


✅ 複数市場を同時選択
✅ パラメータを自由に調整
✅ スキャン進行状況をリアルタイム表示
✅ 完了後にチャートを自動表示


🔧 使用例

python breakout.py \
  --markets sp500,nyse \
  --lookback 20 \
  --volume-mult 1.8 \
  --charts \
  --weekly-confirm

出力例:

=========> NYSE breakouts: ['AAPL', 'NVDA', 'LMT']
=========> Nikkei50 breakouts: ['SONY', 'TOYOTA']
Saved 12 breakout chart(s) under 'charts/nyse/*.html'

💡 利用シーン

  • スイングトレーダー:トレンド初動の銘柄を早期発見。
  • システムトレーダー / Quant開発者:バックテストや自動売買に統合。
  • 教育・分析用途:投資講座やリサーチでのビジュアル教材に最適。

🚀 今後の拡張予定

  • RSIや移動平均線のフィルター追加
  • Telegram / LINE 通知連携
  • FastAPIによるWebダッシュボード化
  • 自動バックテストとレポート出力

🧭 まとめ

このプロジェクトは、Python + yfinance + Plotly を使って本格的な株式スクリーナーを構築する好例です。
CLIとGUIの両方に対応し、世界各市場のブレイクアウト銘柄を自動で検出。
トレーダーが「次の波」に早く乗るための強力なツールです。


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products