Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -868,8 +868,6 @@ def calculate_new_features(df):
|
|
| 868 |
# 3. MA5_close – 5 日移動平均價
|
| 869 |
df['MA5_close'] = df['Close'].rolling(window=5).mean()
|
| 870 |
|
| 871 |
-
# 4. MA20_close – 20 日移動平均價
|
| 872 |
-
df['MA20_close'] = df['Close'].rolling(window=20).mean()
|
| 873 |
|
| 874 |
# 5. volatility_5d – 5 日報酬標準差(短期波動)
|
| 875 |
df['volatility_5d'] = df['return_t-1'].rolling(window=5).std()
|
|
@@ -891,6 +889,27 @@ def calculate_new_features(df):
|
|
| 891 |
macd_line = exp1 - exp2
|
| 892 |
signal_line = macd_line.ewm(span=9).mean()
|
| 893 |
df['MACD_diff'] = macd_line - signal_line
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 894 |
|
| 895 |
# 移除輔助欄位
|
| 896 |
if 'volume_5d_avg' in df.columns:
|
|
@@ -943,6 +962,11 @@ def advanced_xgboost_predict(predict_days=5):
|
|
| 943 |
'volatility_5d',
|
| 944 |
'volume_ratio_5d',
|
| 945 |
'MACD_diff',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 946 |
]
|
| 947 |
|
| 948 |
# 獲取美股報酬率
|
|
|
|
| 868 |
# 3. MA5_close – 5 日移動平均價
|
| 869 |
df['MA5_close'] = df['Close'].rolling(window=5).mean()
|
| 870 |
|
|
|
|
|
|
|
| 871 |
|
| 872 |
# 5. volatility_5d – 5 日報酬標準差(短期波動)
|
| 873 |
df['volatility_5d'] = df['return_t-1'].rolling(window=5).std()
|
|
|
|
| 889 |
macd_line = exp1 - exp2
|
| 890 |
signal_line = macd_line.ewm(span=9).mean()
|
| 891 |
df['MACD_diff'] = macd_line - signal_line
|
| 892 |
+
|
| 893 |
+
# 9. MACDvol
|
| 894 |
+
df['MACDvol'] = df['MACDvol']
|
| 895 |
+
|
| 896 |
+
# 10. RSI_14 – 14 日 RSI 指標 (如果原資料沒有RSI,需要計算)
|
| 897 |
+
if 'RSI' in df.columns:
|
| 898 |
+
df['RSI_14'] = df['RSI'] # 使用現有的RSI
|
| 899 |
+
else:
|
| 900 |
+
# 計算 RSI
|
| 901 |
+
delta = df['close'].diff()
|
| 902 |
+
gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()
|
| 903 |
+
loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean()
|
| 904 |
+
rs = gain / loss
|
| 905 |
+
df['RSI_14'] = 100 - (100 / (1 + rs))
|
| 906 |
+
|
| 907 |
+
# 14. ADX
|
| 908 |
+
df['ADX'] = df['ADX']
|
| 909 |
+
|
| 910 |
+
|
| 911 |
+
# 15. 當日報酬率絕對值 × 當日成交量 (成交量加權報酬率)
|
| 912 |
+
df['volume_weighted_return'] = abs(df['return_t-1']) * df['volume']
|
| 913 |
|
| 914 |
# 移除輔助欄位
|
| 915 |
if 'volume_5d_avg' in df.columns:
|
|
|
|
| 962 |
'volatility_5d',
|
| 963 |
'volume_ratio_5d',
|
| 964 |
'MACD_diff',
|
| 965 |
+
'MACDvol',
|
| 966 |
+
'RSI_14',
|
| 967 |
+
'ADX',
|
| 968 |
+
'volume_weighted_return'
|
| 969 |
+
|
| 970 |
]
|
| 971 |
|
| 972 |
# 獲取美股報酬率
|