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

📈 บทนำ

ในการเทรดหุ้น หนึ่งในกลยุทธ์ที่สร้างผลตอบแทนได้ดีที่สุดคือการหา หุ้นที่กำลัง “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 ก่อนตลาดได้อย่างมั่นใจ!


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products