fix(clean_watchlist): 修复main()缩进问题
This commit is contained in:
@@ -29,40 +29,40 @@ def main():
|
||||
stocks = wl.get("stocks", [])
|
||||
before = len(stocks)
|
||||
|
||||
# Remove held stocks
|
||||
# Remove held stocks
|
||||
new_stocks = [s for s in stocks if s.get("code") not in holding_codes]
|
||||
removed = [s for s in stocks if s.get("code") in holding_codes]
|
||||
|
||||
after = len(new_stocks)
|
||||
wl["stocks"] = new_stocks
|
||||
wl["stocks"] = new_stocks
|
||||
|
||||
# Backup — DB 版,不再碰JSON文件
|
||||
# DB 写入
|
||||
# Backup — DB 版,不再碰JSON文件
|
||||
# DB 写入
|
||||
conn = get_conn()
|
||||
for s in wl.get("stocks", []):
|
||||
for s in wl.get("stocks", []):
|
||||
s.setdefault("currency", "CNY")
|
||||
write_watchlist_stock(conn, s)
|
||||
conn.close()
|
||||
# [migrated to DB] — cold backup removed
|
||||
# json.dump(wl, open(WL, "w"), indent=2, ensure_ascii=False)
|
||||
# [migrated to DB] — cold backup removed
|
||||
# json.dump(wl, open(WL, "w"), indent=2, ensure_ascii=False)
|
||||
|
||||
print(f"\n自选: {before} → {after} 只")
|
||||
print(f"移除 {len(removed)} 只:")
|
||||
for r in removed:
|
||||
for r in removed:
|
||||
print(f" {r['code']} {r.get('name','')}")
|
||||
|
||||
# Also update decisions.json - set them to "managed_by_holdings" or remove watchlist-only fields
|
||||
# Also update decisions.json - set them to "managed_by_holdings" or remove watchlist-only fields
|
||||
dec = read_decisions()
|
||||
dec_changed = 0
|
||||
for d in dec.get("decisions", []):
|
||||
for d in dec.get("decisions", []):
|
||||
code = d.get("code", "")
|
||||
if code in [r["code"] for r in removed]:
|
||||
# Remove watchlist-specific tags
|
||||
# Remove watchlist-specific tags
|
||||
if d.get("tag") == "watchlist":
|
||||
d["tag"] = "managed_by_holdings"
|
||||
dec_changed += 1
|
||||
|
||||
if dec_changed:
|
||||
if dec_changed:
|
||||
# DB 写入(不再碰JSON文件)
|
||||
conn = get_conn()
|
||||
for d in dec.get("decisions", []):
|
||||
@@ -71,17 +71,17 @@ if dec_changed:
|
||||
# [migrated to DB] — cold backup removed
|
||||
# json.dump(dec, open(DEC, "w"), indent=2, ensure_ascii=False)
|
||||
print(f"\ndecisions数据: {dec_changed} 只更新标签")
|
||||
else:
|
||||
else:
|
||||
print(f"\ndecisions数据: 无需更新")
|
||||
|
||||
# ── 反过程:清仓股自动加回自选 ──
|
||||
# 找出曾持仓但现已不在 portfolio 的股票
|
||||
# ── 反过程:清仓股自动加回自选 ──
|
||||
# 找出曾持仓但现已不在 portfolio 的股票
|
||||
prev_held = {} # code → last_execution info
|
||||
for d in dec.get("decisions", []):
|
||||
for d in dec.get("decisions", []):
|
||||
code = d.get("code", "")
|
||||
exec_info = d.get("execution", {})
|
||||
if exec_info and exec_info.get("status") in ("executing", "partial_exit"):
|
||||
# 当前仍持仓但不在 portfolio?说明 portfolio 数据落后,跳过
|
||||
# 当前仍持仓但不在 portfolio?说明 portfolio 数据落后,跳过
|
||||
pass
|
||||
elif exec_info and exec_info.get("status") in ("sold", "closed") and code not in holding_codes:
|
||||
prev_held[code] = {
|
||||
@@ -90,12 +90,12 @@ for d in dec.get("decisions", []):
|
||||
"entry_high": d.get("entry_high", 0),
|
||||
}
|
||||
|
||||
if prev_held:
|
||||
if prev_held:
|
||||
wl_stock_codes = set(s.get("code", "") for s in new_stocks)
|
||||
added = 0
|
||||
for code, info in sorted(prev_held.items()):
|
||||
if code not in wl_stock_codes and code not in holding_codes:
|
||||
# 确保买入区有值
|
||||
# 确保买入区有值
|
||||
entry_low = info.get("entry_low", 0) or 0
|
||||
entry_high = info.get("entry_high", 0) or 0
|
||||
new_stocks.append({
|
||||
@@ -110,23 +110,23 @@ if prev_held:
|
||||
print(f" ← 已清仓→加回自选: {code} {info['name']}")
|
||||
if added:
|
||||
wl["stocks"] = new_stocks
|
||||
# DB 写入
|
||||
# DB 写入
|
||||
conn = get_conn()
|
||||
for s in wl.get("stocks", []):
|
||||
s.setdefault("currency", "CNY")
|
||||
write_watchlist_stock(conn, s)
|
||||
conn.close()
|
||||
# [migrated to DB] — cold backup removed
|
||||
# json.dump(wl, open(WL, "w"), indent=2, ensure_ascii=False)
|
||||
# [migrated to DB] — cold backup removed
|
||||
# json.dump(wl, open(WL, "w"), indent=2, ensure_ascii=False)
|
||||
print(f"\n反过程: {added} 只清仓股已加回自选")
|
||||
else:
|
||||
print("\n反过程: 无清仓股需加回")
|
||||
else:
|
||||
else:
|
||||
print("\n反过程: 无已清仓记录")
|
||||
|
||||
print("\nDONE")
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user