This commit is contained in:
Cassianvale
2025-03-05 11:08:29 +08:00
3 changed files with 30 additions and 8 deletions

View File

@@ -537,6 +537,11 @@ class StockAnalyzer:
latest = df.iloc[-1] latest = df.iloc[-1]
prev = df.iloc[-2] prev = df.iloc[-2]
# 处理 RSI 的 NaN 值
rsi_value = latest['RSI']
if pd.isna(rsi_value):
rsi_value = None
# 生成报告(保持原有格式) # 生成报告(保持原有格式)
report = { report = {
'stock_code': stock_code, 'stock_code': stock_code,
@@ -545,7 +550,7 @@ class StockAnalyzer:
'price': latest['close'], 'price': latest['close'],
'price_change': (latest['close'] - prev['close']) / prev['close'] * 100, 'price_change': (latest['close'] - prev['close']) / prev['close'] * 100,
'ma_trend': 'UP' if latest['MA5'] > latest['MA20'] else 'DOWN', 'ma_trend': 'UP' if latest['MA5'] > latest['MA20'] else 'DOWN',
'rsi': latest['RSI'], 'rsi': rsi_value, # 使用处理后的 RSI 值
'macd_signal': 'BUY' if latest['MACD'] > latest['Signal'] else 'SELL', 'macd_signal': 'BUY' if latest['MACD'] > latest['Signal'] else 'SELL',
'volume_status': 'HIGH' if latest['Volume_Ratio'] > 1.5 else 'NORMAL', 'volume_status': 'HIGH' if latest['Volume_Ratio'] > 1.5 else 'NORMAL',
'recommendation': self.get_recommendation(score) 'recommendation': self.get_recommendation(score)

View File

@@ -62,6 +62,9 @@
// 关闭公告的函数 // 关闭公告的函数
function closeAnnouncement() { function closeAnnouncement() {
const container = document.getElementById('announcement-container'); const container = document.getElementById('announcement-container');
if(!container){
return;
}
container.style.opacity = '0'; container.style.opacity = '0';
container.style.transform = 'translateY(-10px)'; container.style.transform = 'translateY(-10px)';
container.style.transition = 'all 0.3s ease-out'; container.style.transition = 'all 0.3s ease-out';
@@ -111,7 +114,7 @@
<script> <script>
// 更新时间显示 // 更新时间显示
function updateTime() { function updateMarketTime() {
const now = new Date(); const now = new Date();
// 更新当前时间 // 更新当前时间
@@ -157,7 +160,21 @@
const timer = document.getElementById(`${market}MarketTimer`); const timer = document.getElementById(`${market}MarketTimer`);
if (isOpen) { if (isOpen) {
// ... 现有的开市逻辑保持不变 ... element.textContent = '交易中';
element.className = 'text-lg font-medium text-green-600';
// 计算距离收盘时间
const now = new Date();
const closeTime = new Date(now);
closeTime.setHours(closeHour, closeMinute, 0);
const timeToClose = closeTime - now;
const hours = Math.floor(timeToClose / 3600000);
const minutes = Math.floor((timeToClose % 3600000) / 60000);
if (hours >= 0 && minutes >= 0) {
timer.textContent = `距离收盘还有 ${hours}小时${minutes}分钟`;
}
} else { } else {
element.textContent = '已休市'; element.textContent = '已休市';
element.className = 'text-lg font-medium text-gray-600'; element.className = 'text-lg font-medium text-gray-600';
@@ -200,8 +217,8 @@
} }
// 每秒更新一次时间 // 每秒更新一次时间
setInterval(updateTime, 1000); setInterval(updateMarketTime, 1000);
updateTime(); // 立即执行一次 updateMarketTime(); // 立即执行一次
</script> </script>
<div class="max-w-4xl mx-auto"> <div class="max-w-4xl mx-auto">
@@ -816,7 +833,7 @@
</div> </div>
<div class="flex justify-between items-center p-3 bg-gray-50 rounded"> <div class="flex justify-between items-center p-3 bg-gray-50 rounded">
<span class="text-gray-600">RSI指标</span> <span class="text-gray-600">RSI指标</span>
<span class="font-medium">${result.rsi.toFixed(2)}</span> <span class="font-medium">${result.rsi !== null ? result.rsi.toFixed(2) : '暂无数据'}</span>
</div> </div>
</div> </div>
</div> </div>