蕭瑜「python讀入csv檔案計算黃金交叉和死亡交叉」

pandas as pd#蕭瑜GOOGLE搜尋AI模式COPY貼上
import pandas as pd
import matplotlib.pyplot as plt

# 1. 讀取 CSV 檔案
# 假設 CSV 檔案有 Date 和 Close 欄位
df = pd.read_csv('stock_data.csv')

# 確保日期格式正確,並設為索引
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)

# 2. 計算移動平均線 (MA)
short_window = 50  # 短期均線 (例如 50 日)
long_window = 200  # 長期均線 (例如 200 日)

df['Short_MA'] = df['Close'].rolling(window=short_window, min_periods=1).mean()
df['Long_MA'] = df['Close'].rolling(window=long_window, min_periods=1).mean()

# 3. 計算交叉訊號
# 當短期均線 > 長期均線,設為 1 (買入訊號/持有),否則為 0
df['Signal'] = 0.0
df['Signal'][short_window:] = \
    (df['Short_MA'][short_window:] > df['Long_MA'][short_window:]).astype(float)

# 4. 找出黃金交叉和死亡交叉點
# 計算訊號的差值:+1 表示從 0 變 1(黃金交叉),-1 表示從 1 變 0(死亡交叉)
df['Position'] = df['Signal'].diff()

# 5. 輸出結果
gold_cross = df[df['Position'] == 1]
death_cross = df[df['Position'] == -1]

print("--- 黃金交叉日期 (買入) ---")
print(gold_cross.index)
print("\n--- 死亡交叉日期 (賣出) ---")
print(death_cross.index)

# (選做) 繪圖視覺化
plt.figure(figsize=(12, 6))
plt.plot(df['Close'], label='Price', color='gray', alpha=0.5)
plt.plot(df['Short_MA'], label='50 MA', color='blue')
plt.plot(df['Long_MA'], label='200 MA', color='red')

# 標記黃金交叉
plt.scatter(gold_cross.index, gold_cross['Short_MA'], label='Gold Cross', marker='^', color='green', s=100)
# 標記死亡交叉
plt.scatter(death_cross.index, death_cross['Short_MA'], label='Death Cross', marker='v', color='black', s=100)

plt.title('Golden and Death Cross')
plt.legend()
plt.show()

目前台股市值前十大

使用聯發科驗證黃金交叉與死亡交叉

留言

這個網誌中的熱門文章

蕭瑜2025年第三次期貨交易理論與實務

蕭瑜美國星期一假日法案,蒙地卡羅證券價格模擬