# -*- coding: utf-8 -*-
import yfinance as yf
import pandas as pd
import mplfinance as mpf
from datetime import datetime
# -------------------------
# 1️⃣ 設定標的:台灣加權指數 (^TWII) 近似台指期
# -------------------------
symbol = "^TWII" # 台灣加權指數
# -------------------------
# 2️⃣ 抓取最近三個月資料
# -------------------------
df = yf.download(symbol, period="3mo", auto_adjust=False)
# 如果是 MultiIndex,去掉 Ticker 層級
if isinstance(df.columns, pd.MultiIndex):
df.columns = df.columns.get_level_values(0)
# -------------------------
# 3️⃣ 計算移動平均線
# -------------------------
df['MA10'] = df['Close'].rolling(10).mean()
df['MA20'] = df['Close'].rolling(20).mean()
# -------------------------
# 4️⃣ 畫 K 線圖
# -------------------------
mpf.plot(
df,
type='candle',
style='yahoo',
title=f"{symbol} 台灣加權指數 K 線圖",
volume=True,
mav=(10, 20)
)
# -------------------------
# 5️⃣ 整理資料,存成 CSV
# -------------------------
df_reset = df.reset_index()
df_clean = df_reset[['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'MA10', 'MA20']].copy()
df_clean['Timestamp'] = df_clean['Date'].apply(lambda x: int(datetime.timestamp(x)))
filename = f"{symbol}_daily_data.csv"
df_clean.to_csv(filename, index=False, encoding="utf-8-sig")
print(f"✅ 已生成檔案:{filename}")
print(df_clean.tail())
---------------------------------------------------------------------------------------------------------------

沒有留言:
張貼留言