Merge branch 'main' of https://github.com/Cassianvale/stock-scanner
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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">
|
||||||
@@ -814,9 +831,9 @@
|
|||||||
<span class="text-gray-600">投资建议</span>
|
<span class="text-gray-600">投资建议</span>
|
||||||
<span class="font-medium text-purple-600">${result.recommendation}</span>
|
<span class="font-medium text-purple-600">${result.recommendation}</span>
|
||||||
</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>
|
||||||
|
|||||||
Reference in New Issue
Block a user