2025年9月27日 星期六

Step 2:交易觀察(中層) - K 線圖(含移動平均線)

 # -*- 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())

 ---------------------------------------------------------------------------------------------------------------

  • K 線圖(含 MA10、MA20 均線)。
  • CSV 檔(包含收盤價、成交量、移動平均、timestamp)。

  •  

      

     

     


     

     

    沒有留言:

    張貼留言