P3 · Python Automation · Finance
Stock Price Alert via Telegram Bot
Hệ thống giám sát giá cổ phiếu real-time tự động: đặt ngưỡng cảnh báo trong Google Sheets, bot Telegram gửi thông báo ngay khi giá chạm ngưỡng. Hỗ trợ nhiều mã chứng khoán cùng lúc.
PythonTelegram APIGoogle Sheets APIAutomationFinance
Real-time
Price Monitoring
Features
- Cấu hình ngưỡng cảnh báo trực tiếp trong Google Sheets — không cần lập trình lại
- Crawl giá cổ phiếu HOSE, HNX, UPCOM qua API
- Telegram Bot gửi cảnh báo với thông tin đầy đủ: giá hiện tại, % thay đổi, volume
- Hỗ trợ alert loại: breakout, support/resistance, % change trong ngày
- Chạy nền liên tục với scheduler — tự động retry khi lỗi mạng
Stack & Tools
- Python: Investpy · Pandas · Schedule · Requests
- Google Sheets API: gspread · oauth2client
- Telegram: python-telegram-bot · Bot API
- Data: HOSE/HNX stock prices · Yahoo Finance API
Kiến trúc & Quy trình hoạt động
Ứng dụng tự động hóa chạy dưới dạng một tiến trình ngầm (Daemon Service) bằng Python. Chương trình sử dụng thư viện Schedule để lập lịch quét giá liên tục trong giờ giao dịch, đồng thời kết nối trực tiếp với Google Sheets làm giao diện quản trị dữ liệu đầu vào.
Google Sheets (User sets thresholds) ➔ Read via Google Sheets API
⬇
Telegram Alert Message ⬅ Price match ⬅ Python Engine Scrapes Prices (HOSE/HNX)
Thiết kế Cơ sở dữ liệu
Dữ liệu được lưu trữ trực tiếp trên đám mây của Google thông qua Google Sheets API, tạo nên một cơ sở dữ liệu dạng bảng cực kỳ trực quan và dễ quản lý đối với người dùng không chuyên kỹ thuật:
- Sheets_Cấu_Hình (Mã_Cổ_Phiếu, Ngưỡng_Dưới, Ngưỡng_Trên, Loại_Cảnh_Báo, Kích_Hoạt)
- Sheets_Nhật_Ký (Thời_Gian, Mã_Cổ_Phiếu, Giá_Kích_Hoạt, Trạng_Thái_Gửi)
Thách thức & Giải pháp kỹ thuật
- Thách thức: Google Sheets API giới hạn số lượng yêu cầu truy vấn (Rate Limit 100 requests/100s), chương trình sẽ bị lỗi nếu gọi API liên tục mỗi giây để check mã.
- Giải pháp: Phát triển cơ chế Cache cục bộ lưu trữ các giá trị ngưỡng cảnh báo trên bộ nhớ RAM. Chương trình chỉ kết nối đọc Google Sheets khi phát hiện có thay đổi cài đặt hoặc định kỳ 5 phút/lần thay vì mỗi giây.
Thành quả đạt được
- Đạt độ trễ thông báo cực thấp dưới 5 giây so với bảng điện trực tuyến của sàn chứng khoán.
- Vận hành hoàn toàn tự động 24/7 mà không cần sự can thiệp thủ công từ người dùng.
Một số hình ảnh dự án (Screenshots)