| Python Gửi Tín Hiệu Telegram Tự Động Khi Cổ Phiếu Thỏa Điều Kiện

Không ai có thể theo dõi 700+ cổ phiếu suốt ngày. Telegram bot Python giải quyết vấn đề này: tự động quét thị trường, tìm cổ phiếu thỏa điều kiện, và gửi cảnh báo thẳng vào điện thoại của bạn.

Bước 1: Tạo Telegram Bot

  1. Mở Telegram → tìm @BotFather
  2. /newbot → đặt tên bot
  3. Copy Bot Token (dạng: 1234567890:ABCdef...)
  4. Tìm @userinfobot để lấy Chat ID của bạn

Bước 2: Gửi Tin Nhắn Đơn Giản

import requests

BOT_TOKEN = "your_bot_token"
CHAT_ID   = "your_chat_id"

def send_telegram(message):
    url  = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    data = {
        "chat_id":    CHAT_ID,
        "text":       message,
        "parse_mode": "HTML"
    }
    r = requests.post(url, data=data)
    return r.json()

# Test
send_telegram("🤖 Bot tín hiệu chứng khoán đã khởi động!")

Bước 3: Hàm Quét Tín Hiệu

from vnstock import stock_historical_data, listing_companies
import pandas as pd

def calc_rsi(series, period=14):
    delta = series.diff()
    gain  = delta.clip(lower=0).rolling(period).mean()
    loss  = (-delta.clip(upper=0)).rolling(period).mean()
    return 100 - (100 / (1 + gain/loss))

def scan_market(symbols, lookback_days=60):
    signals = []

    from datetime import date, timedelta
    end   = date.today().strftime('%Y-%m-%d')
    start = (date.today() - timedelta(days=lookback_days)).strftime('%Y-%m-%d')

    for sym in symbols:
        try:
            df = stock_historical_data(sym, start, end, "1D")
            if len(df)  30 and rsi.iloc[-2]  last_sma50 and
                    sma20.iloc[-2]  last_vol_ma * 2 and last_close > last_sma20:
                reasons.append(f"Volume đột biến x{last_vol/last_vol_ma:.1f}")

            if reasons:
                signals.append({
                    'symbol':  sym,
                    'close':   last_close,
                    'rsi':     round(last_rsi, 1),
                    'reasons': reasons
                })

        except Exception:
            continue

    return signals

Bước 4: Gửi Cảnh Báo Qua Telegram

def format_signal_message(signals):
    if not signals:
        return "📊 Quét xong — không có tín hiệu hôm nay."

    msg = f"🔔 TÍN HIỆU CHỨNG KHOÁN
"
    msg += f"📅 {pd.Timestamp.now().strftime('%d/%m/%Y %H:%M')}
"
    msg += f"────────────────────
"

    for s in signals:
        msg += f"
{s['symbol']} — {s['close']:,.0f} VNĐ
"
        msg += f"   RSI: {s['rsi']}
"
        for r in s['reasons']:
            msg += f"   ✅ {r}
"

    msg += f"
────────────────────
"
    msg += "⚠️ Chỉ mang tính tham khảo, không phải khuyến nghị đầu tư."
    return msg

Bước 5: Chạy Tự Động Mỗi Ngày

import schedule
import time
from vnstock import listing_companies

def daily_scan():
    print(f"[{pd.Timestamp.now()}] Bắt đầu quét...")

    # Lấy VN30
    stocks = listing_companies()
    vn30   = ['VNM', 'VIC', 'HPG', 'TCB', 'MBB', 'VCB', 'BID',
              'CTG', 'ACB', 'STB', 'FPT', 'MWG', 'VRE', 'GAS',
              'MSN', 'NVL', 'VHM', 'GVR', 'HDB', 'LPB']

    signals = scan_market(vn30)
    message = format_signal_message(signals)

    result = send_telegram(message)
    print(f"Gửi {'thành công' if result.get('ok') else 'lỗi'}: {len(signals)} tín hiệu")

# Chạy lúc 15:30 mỗi ngày (sau khi thị trường đóng cửa)
schedule.every().day.at("15:30").do(daily_scan)

print("Bot khởi động — chờ 15:30 mỗi ngày...")
while True:
    schedule.run_pending()
    time.sleep(60)

Tin Nhắn Mẫu

🔔 TÍN HIỆU CHỨNG KHOÁN
📅 27/06/2026 15:32
────────────────────

HPG — 28,500 VNĐ
   RSI: 31.2
   ✅ RSI vượt 30 lên (31)
   ✅ Volume đột biến x2.3

FPT — 145,000 VNĐ
   RSI: 45.6
   ✅ Golden Cross (SMA20 cắt SMA50)

────────────────────
⚠️ Chỉ mang tính tham khảo

Kết Luận

Bot Telegram Python này thay thế việc ngồi theo dõi màn hình suốt ngày. Chạy trên VPS $5/tháng — hoạt động 24/7 và gửi thông báo thẳng điện thoại khi thị trường xuất hiện tín hiệu.


📌 Muốn ứng dụng Python vào phân tích và giao dịch tài chính thực chiến?
Khóa Python Fintech — Phân Tích Dữ Liệu Lớn & Tự Động Hóa Giao Dịch tại Hướng Nghiệp Dữ Liệu giúp bạn thực hành với dữ liệu VnIndex, Binance API thật — không dạy lý thuyết hàn lâm.
📞 Hotline/Zalo: 0927 909 257

admin

admin

Biên tập viên, Hướng Nghiệp Dữ Liệu
724 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Biên tập viên nội dung tại Hướng Nghiệp Dữ Liệu, phụ trách tổng hợp và biên soạn các bài viết về lập trình Python, dữ liệu và công nghệ.