Skip to main content

2 posts tagged with "yfinance"

View All Tags

Cách lấy dữ liệu cổ phiếu từ yfinance với Python

· 3 min read

1️⃣ Giới thiệu về yfinance

yfinance là một thư viện Python giúp bạn dễ dàng lấy dữ liệu chứng khoán từ Yahoo Finance. Bạn có thể sử dụng nó để:
✅ Tải dữ liệu giá cổ phiếu theo thời gian thực
✅ Truy xuất dữ liệu lịch sử (daily, weekly, monthly)
✅ Lấy thông tin tài chính của công ty (P/E, EPS, Market Cap, ...)
✅ Phân tích các chỉ số quan trọng như Volume, Moving Average

Dữ liệu cổ phiếu từ yfinance


2️⃣ Cài đặt thư viện yfinance

Trước khi sử dụng yfinance, bạn cần cài đặt thư viện này bằng lệnh:

pip install yfinance

Nếu bạn chưa có thư viện pandas, hãy cài đặt luôn:

pip install pandas

3️⃣ Cách lấy dữ liệu giá cổ phiếu

📌 Lấy dữ liệu cổ phiếu theo mã chứng khoán

Dưới đây là cách lấy giá cổ phiếu của AAPL (Apple) từ Yahoo Finance:

import yfinance as yf

# Lấy dữ liệu cổ phiếu Apple
apple = yf.Ticker("AAPL")

# Xem thông tin chung về cổ phiếu
print(apple.info)

📌 Lấy dữ liệu giá lịch sử

Bạn có thể lấy giá cổ phiếu trong quá khứ với các khoảng thời gian khác nhau:

# Lấy dữ liệu giá lịch sử trong 1 năm qua
df = apple.history(period="1y")

# Hiển thị 5 dòng đầu tiên
print(df.head())

Bạn có thể thay đổi period để lấy dữ liệu trong thời gian khác như:

  • "1d" – Lấy dữ liệu trong 1 ngày
  • "5d" – 5 ngày
  • "1mo" – 1 tháng
  • "6mo" – 6 tháng
  • "1y" – 1 năm
  • "5y" – 5 năm
  • "max" – Toàn bộ lịch sử

4️⃣ Trực quan hóa dữ liệu giá cổ phiếu

Bạn có thể vẽ biểu đồ giá cổ phiếu với matplotlib như sau:

import matplotlib.pyplot as plt

# Vẽ biểu đồ giá đóng cửa
df['Close'].plot(figsize=(12,6), title="Giá cổ phiếu AAPL")
plt.xlabel("Ngày")
plt.ylabel("Giá đóng cửa (USD)")
plt.show()

📌 Kết quả:
Biểu đồ giá cổ phiếu Apple


5️⃣ Lấy dữ liệu nhiều cổ phiếu cùng lúc

Bạn có thể tải dữ liệu của nhiều cổ phiếu cùng một lúc bằng cách:

# Danh sách các mã chứng khoán
tickers = ["AAPL", "GOOGL", "MSFT", "AMZN"]

# Tải dữ liệu của nhiều cổ phiếu
data = yf.download(tickers, period="1y")

# Hiển thị dữ liệu
print(data.head())

6️⃣ Kết luận

yfinance là công cụ mạnh mẽ giúp bạn thu thập dữ liệu chứng khoán dễ dàng.
✅ Bạn có thể lấy dữ liệu lịch sử, giá theo thời gian thực và thông tin tài chính chỉ với vài dòng code.
✅ Kết hợp với pandasmatplotlib, bạn có thể phân tích và trực quan hóa dữ liệu hiệu quả.

Bạn muốn tìm hiểu thêm về cách phân tích cổ phiếu bằng Python? Hãy để lại bình luận bên dưới nhé! 🚀📈

Tự Động Hóa Chiến Lược Giao Dịch với Python: schedule vs while True

· 4 min read
ChatGPT

🔥 Giới thiệu

Tự động hóa là một yếu tố quan trọng trong giao dịch định lượng (quantitative trading). Việc lên lịch trình thực hiện các lệnh giao dịch hoặc thu thập dữ liệu tài chính một cách tự động giúp giảm thiểu sai sót, tiết kiệm thời gian và tối ưu chiến lược.

Trong Python, có hai phương pháp phổ biến để tự động hóa chiến lược giao dịch theo khung thời gian (timeframe):

  1. Sử dụng thư viện schedule - Thích hợp để chạy nhiệm vụ theo lịch trình cố định.
  2. Sử dụng vòng lặp while True + time.sleep() - Phù hợp khi cần linh hoạt kiểm soát thời gian chạy.

📌 1. Tự động hóa với schedule

Thư viện schedule giúp lập lịch chạy các tác vụ mà không cần vòng lặp vô hạn, giúp tiết kiệm tài nguyên.

✅ Cài đặt thư viện

pip install schedule

✅ Ví dụ: Lấy dữ liệu giá cổ phiếu mỗi 5 phút

import schedule
import time
import yfinance as yf

def fetch_stock_data():
stock = yf.Ticker("AAPL")
price = stock.history(period="1m")["Close"].iloc[-1]
print(f"[{time.strftime('%H:%M:%S')}] Giá AAPL: {price:.2f} USD")

# Lên lịch chạy mỗi 5 phút
schedule.every(5).minutes.do(fetch_stock_data)

while True:
schedule.run_pending()
time.sleep(1)

👉 Ưu điểm: Code dễ đọc, không chiếm CPU nhiều.
👉 Nhược điểm: Không phù hợp nếu cần kiểm soát thời gian thực.


📌 2. Tự động hóa với while True + time.sleep()

Dùng vòng lặp while True giúp linh hoạt hơn, nhưng cần tối ưu để tránh quá tải CPU.

✅ Ví dụ: Lấy dữ liệu giá cổ phiếu mỗi 30 giây

import time
import yfinance as yf

def fetch_stock_data():
stock = yf.Ticker("AAPL")
price = stock.history(period="1m")["Close"].iloc[-1]
print(f"[{time.strftime('%H:%M:%S')}] Giá AAPL: {price:.2f} USD")

while True:
fetch_stock_data()
time.sleep(30)

👉 Ưu điểm: Kiểm soát linh hoạt thời gian chạy.
👉 Nhược điểm: Có thể gây tải CPU nếu không tối ưu.


📊 3. So sánh schedule vs while True

Tiêu chíschedulewhile True
Dễ sử dụng✅ Dễ⚠️ Cần kiểm soát
Hiệu suất✅ Tốt⚠️ Có thể tiêu tốn CPU
Linh hoạt⚠️ Hạn chế✅ Cao
Đa nhiệm⚠️ Hạn chế✅ Dễ kết hợp với threading

📌 4. Khi nào dùng schedule? Khi nào dùng while True?

🔹 Dùng schedule khi:
✔️ Chạy tác vụ theo lịch trình cố định (mỗi ngày, mỗi giờ, mỗi phút).
✔️ Không cần chạy liên tục theo thời gian thực.

🔹 Dùng while True khi:
✔️ Cần chạy liên tục để xử lý dữ liệu theo thời gian thực.
✔️ Muốn linh hoạt kiểm soát thời gian chạy của bot giao dịch.


🚀 5. Kết hợp schedule & while True trong bot giao dịch

Dưới đây là cách kết hợp cả hai phương pháp để tạo bot giao dịch tự động theo timeframe.

✅ Ví dụ: Bot giao dịch chỉ chạy trong khung giờ thị trường mở

import schedule
import time
import yfinance as yf

def trade_bot():
stock = yf.Ticker("AAPL")
price = stock.history(period="1m")["Close"].iloc[-1]
print(f"[{time.strftime('%H:%M:%S')}] Giá AAPL: {price:.2f} USD")

if 9 <= time.localtime().tm_hour < 16:
print("=> Đang phân tích tín hiệu giao dịch...")

schedule.every(1).minutes.do(trade_bot)

while True:
schedule.run_pending()
time.sleep(1)

Ưu điểm: Tối ưu tài nguyên, chỉ chạy bot trong giờ giao dịch.


📌 6. Tổng kết

  • Dùng schedule khi muốn tự động hóa theo lịch trình cố định.
  • Dùng while True khi cần kiểm soát thời gian thực.
  • Kết hợp cả hai để tối ưu hóa bot giao dịch.

Bạn đang xây dựng bot giao dịch tự động nào? 🚀 Hãy chia sẻ ý tưởng của bạn! 🎯