廖翊宏「python讀入csv檔案計算黃金交叉和死亡交叉」
# 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. 計算移動平均線 (例如 5日短均線 與 20日長均線) df['SMA5'] = df['Close'].rolling(window=5).mean() df['SMA20'] = df['Close'].rolling(window=20).mean() # 3. 判斷交叉信號 # 前一天的狀態 df['prev_SMA5'] = df['SMA5'].shift(1) df['prev_SMA20'] = df['SMA20'].shift(1) # 黃金交叉:昨日短<長 且 今日短>長 df['Golden_Cross'] = (df['prev_SMA5'] < df['prev_SMA20']) & (df['SMA5'] > df['SMA20']) # 死亡交叉:昨日短>長 且 今日短<長 df['Death_Cross'] = (df['prev_SMA5'] > df['prev_SMA20']) & (df['SMA5'] < df['SMA20']) # 4. 輸出結果 (過濾出有信號的日期) signals = df[df['Golden_Cross'] | df['Death_Cross']] print(signals[['Close', 'SMA5', 'SMA20', 'Gold...