diff --git a/stock-html/services/smart_trade_engine.py b/stock-html/services/smart_trade_engine.py
index 73a2d9f..1c56ad5 100644
--- a/stock-html/services/smart_trade_engine.py
+++ b/stock-html/services/smart_trade_engine.py
@@ -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({