Xây dựng Bot "Nhà Phân Tích": Đọc báo tài chính, đoán xu hướng Crypto bằng AI

AI Hunter

Member
Bạn có thể đọc 100 bài báo mỗi sáng để biết thị trường đang nghĩ gì không? Chắc chắn là không. Nhưng Python thì có thể làm điều đó trong 30 giây.

Trong bài viết này, chúng ta sẽ xây dựng một tool tự động:
  1. Thu thập tin tức: Quét tiêu đề từ các trang lớn (CoinDesk, CoinTelegraph...).
  2. Phân tích cảm xúc: Dùng AI xác định xem tin đó là Tích cực (Bullish) hay Tiêu cực (Bearish).
  3. Chấm điểm thị trường: Tính ra "Chỉ số sợ hãi & tham lam" (Fear & Greed Index) của riêng bạn.
Xây dựng Bot Nhà Phân Tích Đọc báo tài chính, đoán xu hướng Crypto bằng AI.jpg

1. Nguyên lý hoạt động​

  • Input: RSS Feed của các trang báo uy tín.
  • Processing: Gửi tiêu đề bài báo cho AI (OpenAI/GPT). AI sẽ chấm điểm từ -1 (Rất xấu) đến +1 (Rất tốt).
  • Output: Tính trung bình cộng để ra xu hướng chung của thị trường.

2. Chuẩn bị​


Chúng ta cần thư viện `feedparser` để đọc tin RSS và `openai` để phân tích.
Mã:
pip install feedparser openai

3. Triển khai Code (Full Source)​


Dưới đây là file `crypto_sentiment.py`.

Python:
import feedparser
from openai import OpenAI
import os
import statistics

# --- CẤU HÌNH ---
# Danh sách nguồn tin (RSS)
RSS_FEEDS = [
    "https://cointelegraph.com/rss",
    "https://www.coindesk.com/arc/outboundfeeds/rss/",
    "https://cryptoslate.com/feed/"
]

# Cấu hình AI
os.environ["OPENAI_API_KEY"] = "sk-YOUR_OPENAI_KEY"
client = OpenAI()

def get_headlines():
    """Lấy 10 tiêu đề mới nhất từ các nguồn"""
    headlines = []
    print("📰 Đang quét tin tức...")
   
    for url in RSS_FEEDS:
        try:
            feed = feedparser.parse(url)
            # Lấy 3 tin mới nhất mỗi trang
            for entry in feed.entries[:3]:
                headlines.append(entry.title)
        except Exception as e:
            print(f"Lỗi đọc {url}: {e}")
           
    return headlines

def analyze_sentiment(text):
    """Dùng AI chấm điểm cảm xúc (-1 đến 1)"""
    prompt = f"""
    Hãy phân tích tiêu đề tin tức tài chính sau và trả về điểm số cảm xúc (Sentiment Score).
    Quy ước:
    -1.0 : Rất tiêu cực (Bearish/Sợ hãi)
    0.0  : Trung lập (Neutral)
    +1.0 : Rất tích cực (Bullish/Tham lam)
   
    Chỉ trả về duy nhất một con số (float), không giải thích gì thêm.
   
    Tiêu đề: "{text}"
    """
   
    try:
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            temperature=0 # Để kết quả nhất quán
        )
        score = float(response.choices[0].message.content.strip())
        return score
    except:
        return 0.0

def main():
    print("--- CRYPTO SENTIMENT BOT ---")
   
    # 1. Lấy tin
    headlines = get_headlines()
    print(f"✅ Đã tìm thấy {len(headlines)} bài báo mới.\n")
   
    scores = []
   
    # 2. Phân tích từng tin
    print("🧠 AI đang đọc và chấm điểm...")
    for title in headlines:
        score = analyze_sentiment(title)
        scores.append(score)
       
        # In ra màn hình cho đẹp
        icon = "⚪" # Trung lập
        if score > 0.3: icon = "🟢" # Tốt
        elif score < -0.3: icon = "🔴" # Xấu
       
        print(f"{icon} [{score: >4}] {title}")

    # 3. Tổng kết
    if scores:
        avg_score = statistics.mean(scores)
        print("\n" + "="*40)
        print(f"KẾT QUẢ DỰ BÁO THỊ TRƯỜNG: {avg_score:.2f}")
       
        trend = "TRUNG LẬP (Đi ngang)"
        if avg_score > 0.2: trend = "TÍCH CỰC (Nên Mua/Bullish) 🚀"
        elif avg_score < -0.2: trend = "TIÊU CỰC (Nên Bán/Bearish) 📉"
       
        print(f"Xu hướng: {trend}")
        print("="*40)

if __name__ == "__main__":
    main()

4. Giải thích Logic​


  • RSS Feed: Đây là cách nhanh nhất để lấy tin tức chuẩn từ các trang báo mà không cần phải cào HTML phức tạp (tránh bị chặn IP).
  • Sentiment Score: Tại sao lại là -1 đến 1? Đây là thang đo chuẩn trong Data Science.
    * Nếu tin là "Bitcoin đạt đỉnh mới" -> AI cho 0.9.
    * Nếu tin là "Sàn FTX phá sản" -> AI cho -0.9.
  • Trung bình cộng (Mean): Một tin tốt không thể cứu cả thị trường. Chúng ta cần tính trung bình của 10-20 tin để ra xu hướng đám đông (Market Sentiment).

5. Ứng dụng cho XenForo News​


Bạn có thể kết hợp tool này với Bot đăng bài tự động (Bài trước):
Mỗi sáng lúc 7:00, Bot chạy script này -> Tính điểm thị trường -> Tự động đăng một bài viết lên diễn đàn với tiêu đề:
"Bản tin sáng 20/01: Thị trường đang Sợ hãi (Điểm: -0.5). Khuyên nghị: Đứng ngoài quan sát."

Điều này tạo ra nội dung độc quyền (Unique Content) cực kỳ giá trị mà chỉ diễn đàn của bạn mới có!
 
Back
Top