Dev

พัฒนาโปรแกรมสแกนหุ้น Breakout หลายตลาดด้วย Python

November 1, 2025

📈 บทนำ

ในการเทรดหุ้น หนึ่งในกลยุทธ์ที่สร้างผลตอบแทนได้ดีที่สุดคือการหา หุ้นที่กำลัง “Breakout” — เมื่อราคาหุ้นทะลุแนวต้านสำคัญพร้อมปริมาณการซื้อขายที่เพิ่มสูงขึ้น

เพื่อให้การค้นหาหุ้นลักษณะนี้ทำได้อัตโนมัติ เราได้พัฒนาโปรแกรม “Multi-Market Breakout Stock Screener” ด้วยภาษา Python
ซึ่งสามารถสแกนหุ้นจากหลายตลาด เช่น NYSE, Nikkei 50, และ Vietnam 50 เพื่อค้นหาหุ้นที่มีสัญญาณ Breakout พร้อมสร้างกราฟแท่งเทียนให้ดูได้ทันที


🧠 ภาพรวมระบบ

โปรแกรมนี้ประกอบด้วย 3 โมดูลหลักที่ทำงานร่วมกัน:

ไฟล์ หน้าที่
test10.py ส่วนหลักของระบบ — โหลดข้อมูลหุ้นจาก Yahoo Finance และประมวลผลสัญญาณ Breakout
breakout.py ส่วนควบคุมการทำงานผ่าน Command Line Interface (CLI)
ui_breakout.py ส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) ด้วย Tkinter ใช้งานง่ายไม่ต้องใช้คำสั่ง

แผนภาพสถาปัตยกรรมระบบ

flowchart TD
    A["ui_breakout.py (GUI Interface)"] --> B["breakout.py (CLI Wrapper)"]
    B --> C["test10.py (Core Screener)"]
    C --> D["Yahoo Finance API"]
    C --> E["Chart Generator (Plotly HTML/PNG)"]

⚙️ วิธีการทำงาน

1. การดึงข้อมูลหุ้น

ระบบจะโหลดข้อมูลราคาหุ้นย้อนหลัง 3 เดือน จาก Yahoo Finance โดยเลือกเฉพาะหุ้นขนาดใหญ่ของแต่ละตลาด เช่น Top 50 ของ NYSE, Nikkei, และ Vietnam

2. การตรวจจับสัญญาณ Breakout

ระบบจะคำนวณตัวชี้วัดทางเทคนิคเพื่อกรองหุ้น เช่น

  • 📊 ราคาทะลุแนวต้านสูงสุดในช่วงที่ผ่านมา (lookback)
  • 🔊 ปริมาณการซื้อขายมากกว่าค่าเฉลี่ย (เช่น 1.5 เท่า)
  • 💧 กรองหุ้นที่สภาพคล่องต่ำออก
  • 📅 ยืนยันสัญญาณระดับสัปดาห์ (Weekly confirmation)

ตัวอย่างโค้ดส่วนตรวจจับ:

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)

ระบบยังรองรับการโหลดข้อมูลแบบ batch และ retry อัตโนมัติเมื่อโดนจำกัดการเรียก API


🌏 การสแกนหลายตลาดพร้อมกัน

โปรแกรมสามารถสแกนหลายตลาดได้ในครั้งเดียว เช่น:

  • 🇺🇸 NYSE (สหรัฐอเมริกา)
  • 🇯🇵 Nikkei 50 (ญี่ปุ่น)
  • 🇻🇳 Vietnam 50 (เวียดนาม)
  • 🇨🇳 SSE 50 (จีน)
  • 🇭🇰 HSI 50 (ฮ่องกง)
  • 🇪🇺 Euronext (ยุโรป)
  • 🇺🇸 S&P 50 / 500

ผลลัพธ์ของแต่ละตลาดจะถูกบันทึกแยกเป็นรายตลาด และสามารถสร้างกราฟได้โดยอัตโนมัติ


📊 การสร้างกราฟอัตโนมัติ

หลังจากคัดหุ้นที่มีสัญญาณ Breakout แล้ว ระบบจะสร้าง กราฟแท่งเทียน (Candlestick) ด้วย Plotly
กราฟแสดงแนวต้านที่ถูกทะลุ พร้อมปริมาณการซื้อขายและแนวโน้มล่าสุด

ตัวอย่างการสั่งรัน:

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

ไฟล์กราฟจะถูกบันทึกไว้ที่

charts/<market>/<ticker>.html

🖥️ ส่วนติดต่อผู้ใช้ (GUI)

ui_breakout.py มาพร้อมหน้าต่าง GUI ที่ใช้งานง่าย —
ให้ผู้ใช้เลือกตลาด, ตั้งค่าเงื่อนไข, และดูผลลัพธ์แบบเรียลไทม์

✅ เลือกตลาดได้หลายแห่งพร้อมกัน
✅ ตั้งค่า Lookback, Volume Multiplier, Margin
✅ ดู Log การทำงานแบบเรียลไทม์
✅ แสดงกราฟหลังสแกนเสร็จ

ภาพตัวอย่างอินเทอร์เฟซ:

Breakout 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'

💡 เหมาะกับใคร

  • Swing Trader ที่ต้องการหา momentum stocks
  • นักพัฒนา Quant ที่ต้องการนำโค้ดไปใช้กับระบบเทรดอัตโนมัติ
  • นักวิเคราะห์และผู้สอนเทรด ที่ต้องการเครื่องมือสาธิตสัญญาณ Breakout

🚀 แนวทางพัฒนาในอนาคต

  • เพิ่มตัวกรอง RSI / Moving Average
  • แจ้งเตือนผ่าน Telegram หรือ Line
  • พัฒนา Web Dashboard ด้วย FastAPI
  • เพิ่มระบบ Backtesting และสถิติผลลัพธ์ย้อนหลัง

🧭 สรุป

โปรแกรมนี้เป็นตัวอย่างที่ยอดเยี่ยมของการใช้ Python + yfinance + Plotly
ในการสร้างเครื่องมือวิเคราะห์หุ้นระดับมืออาชีพ ที่สามารถใช้งานได้ทั้งบน CLI และ GUI

ช่วยให้นักลงทุนมองเห็นโอกาส Breakout ก่อนตลาดได้อย่างมั่นใจ!

บทความล่าสุด

Ready to talk about your project?

Share goals and constraints. We'll assemble architects and engineers to move fast with you.

Get in touch