# 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', 'Golden_Cross', 'Death_Cross']]) 目前台股市值前十大
使用聯發科驗證黃金交叉與死亡交叉
留言
張貼留言