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:
@@ -501,7 +501,7 @@ def generate_sell_decisions(conn, user_id, config, current_prices, scan_map=None
|
|||||||
if current_shares <= 0:
|
if current_shares <= 0:
|
||||||
continue
|
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
|
days_held = pos.get('days_held', 0) or 0
|
||||||
print(f" {code} 成本{buy_price:.2f} 现价{price:.2f} 盈亏{profit_pct_now:+.1f}% 持仓{days_held}天")
|
print(f" {code} 成本{buy_price:.2f} 现价{price:.2f} 盈亏{profit_pct_now:+.1f}% 持仓{days_held}天")
|
||||||
consec_up = pos.get('consecutive_up_days', 0) or 0
|
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'],
|
log_signal(conn, user_id, today, code, pos['stock_name'],
|
||||||
'partial_sell', dec['reason'], dec['rule'],
|
'partial_sell', dec['reason'], dec['rule'],
|
||||||
price, pos['avg_cost'],
|
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)
|
True, price, shares)
|
||||||
|
|
||||||
results.append({
|
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'],
|
log_signal(conn, user_id, today, code, pos['stock_name'],
|
||||||
'sell', dec['reason'], dec['rule'],
|
'sell', dec['reason'], dec['rule'],
|
||||||
price, pos['avg_cost'],
|
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)
|
True, price, qty)
|
||||||
|
|
||||||
results.append({
|
results.append({
|
||||||
|
|||||||
Reference in New Issue
Block a user