fix: 修复 smart_trade_engine.py 3处除零风险

- :504 buy_price 可能为0导致除零,添加 if buy_price > 0 else 0 保护
- :1006 partial_sell 日志中 pos['avg_cost'] 除零,添加 if pos['avg_cost'] else 0
- :1055 sell 日志中 pos['avg_cost'] 除零,添加 if pos['avg_cost'] else 0
This commit is contained in:
freedakgmail
2026-07-22 07:42:17 +08:00
parent cfeec11929
commit cf1023754a
+3 -3
View File
@@ -501,7 +501,7 @@ def generate_sell_decisions(conn, user_id, config, current_prices, scan_map=None
if current_shares <= 0:
continue
profit_pct_now = (price - buy_price) / buy_price * 100
profit_pct_now = (price - buy_price) / buy_price * 100 if buy_price > 0 else 0
days_held = pos.get('days_held', 0) or 0
print(f" {code} 成本{buy_price:.2f} 现价{price:.2f} 盈亏{profit_pct_now:+.1f}% 持仓{days_held}")
consec_up = pos.get('consecutive_up_days', 0) or 0
@@ -1003,7 +1003,7 @@ def execute_smart_trade(conn, user_id, scan_date=None):
log_signal(conn, user_id, today, code, pos['stock_name'],
'partial_sell', dec['reason'], dec['rule'],
price, pos['avg_cost'],
(price - pos['avg_cost']) / pos['avg_cost'] * 100,
(price - pos['avg_cost']) / pos['avg_cost'] * 100 if pos['avg_cost'] else 0,
True, price, shares)
results.append({
@@ -1052,7 +1052,7 @@ def execute_smart_trade(conn, user_id, scan_date=None):
log_signal(conn, user_id, today, code, pos['stock_name'],
'sell', dec['reason'], dec['rule'],
price, pos['avg_cost'],
(price - pos['avg_cost']) / pos['avg_cost'] * 100,
(price - pos['avg_cost']) / pos['avg_cost'] * 100 if pos['avg_cost'] else 0,
True, price, qty)
results.append({