修复实盘顶栏误显示模拟盘会话资金:无交易所余额时显示 —,切模式清缓存。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2652,6 +2652,8 @@ friendly_exchange_error = friendly_okx_error
|
||||
|
||||
def invalidate_account_balance_cache() -> None:
|
||||
ACCOUNT_BALANCE_CACHE["updated_at"] = 0
|
||||
ACCOUNT_BALANCE_CACHE["funding_usdt"] = None
|
||||
ACCOUNT_BALANCE_CACHE["trading_usdt"] = None
|
||||
|
||||
|
||||
def get_exchange_capitals(force=False):
|
||||
@@ -2664,11 +2666,15 @@ def get_exchange_capitals(force=False):
|
||||
try:
|
||||
funding = _fetch_usdt_by_types(["funding"])
|
||||
trading = _fetch_usdt_by_types(["swap", "trading", "spot"])
|
||||
# 显式写入(含 0 / None),避免模式切换后残留旧缓存
|
||||
ACCOUNT_BALANCE_CACHE["funding_usdt"] = funding
|
||||
ACCOUNT_BALANCE_CACHE["trading_usdt"] = trading
|
||||
ACCOUNT_BALANCE_CACHE["updated_at"] = now_ts
|
||||
except Exception:
|
||||
pass
|
||||
# 拉取失败不沿用旧值
|
||||
ACCOUNT_BALANCE_CACHE["funding_usdt"] = None
|
||||
ACCOUNT_BALANCE_CACHE["trading_usdt"] = None
|
||||
ACCOUNT_BALANCE_CACHE["updated_at"] = 0
|
||||
return ACCOUNT_BALANCE_CACHE["funding_usdt"], ACCOUNT_BALANCE_CACHE["trading_usdt"]
|
||||
|
||||
|
||||
@@ -5258,7 +5264,13 @@ def render_main_page(page="options", embed_mode=None):
|
||||
else:
|
||||
funding_capital, trading_capital = None, None
|
||||
funding_usdt = round(funding_capital, FUNDS_DECIMALS) if funding_capital is not None else None
|
||||
current_capital = round(trading_capital, FUNDS_DECIMALS) if trading_capital is not None else round(local_current_capital, FUNDS_DECIMALS)
|
||||
# 顶栏交易账户只展示交易所余额;勿回退会话 current_capital(模拟盘残留会污染实盘显示)
|
||||
current_capital = (
|
||||
round(trading_capital, FUNDS_DECIMALS) if trading_capital is not None else None
|
||||
)
|
||||
capital_for_sizing = (
|
||||
current_capital if current_capital is not None else round(local_current_capital, FUNDS_DECIMALS)
|
||||
)
|
||||
options_trading_usdc = None
|
||||
options_funding_usdc = None
|
||||
options_funding_usdt = None
|
||||
@@ -5309,7 +5321,7 @@ def render_main_page(page="options", embed_mode=None):
|
||||
options_trading_btc = None
|
||||
options_margin_mode = "coin"
|
||||
options_underly = "ETH"
|
||||
recommended_capital = get_recommended_capital(current_capital)
|
||||
recommended_capital = get_recommended_capital(capital_for_sizing)
|
||||
key_list = (
|
||||
conn.execute("SELECT * FROM key_monitors").fetchall() if plan.key_list else []
|
||||
)
|
||||
@@ -5336,7 +5348,7 @@ def render_main_page(page="options", embed_mode=None):
|
||||
if plan.orders:
|
||||
raw_order_list = conn.execute("SELECT * FROM order_monitors WHERE status='active'").fetchall()
|
||||
for o in raw_order_list:
|
||||
order_list.append(enrich_order_item(row_to_dict(o), current_capital))
|
||||
order_list.append(enrich_order_item(row_to_dict(o), capital_for_sizing))
|
||||
enrich_orders_force_close(
|
||||
order_list,
|
||||
FORCE_CLOSE_ENABLED,
|
||||
@@ -5705,7 +5717,13 @@ def api_account_snapshot():
|
||||
force_refresh = (request.args.get("force") or "").strip().lower() in ("1", "true", "yes")
|
||||
funding_capital, trading_capital = get_exchange_capitals(force=force_refresh)
|
||||
funding_usdt = round(funding_capital, FUNDS_DECIMALS) if funding_capital is not None else None
|
||||
current_capital = round(trading_capital, FUNDS_DECIMALS) if trading_capital is not None else round(local_current_capital, FUNDS_DECIMALS)
|
||||
# 顶栏只展示交易所余额;勿用会话资金回退(避免模拟盘 30U 残留到实盘)
|
||||
current_capital = (
|
||||
round(trading_capital, FUNDS_DECIMALS) if trading_capital is not None else None
|
||||
)
|
||||
capital_for_sizing = (
|
||||
current_capital if current_capital is not None else round(local_current_capital, FUNDS_DECIMALS)
|
||||
)
|
||||
options_trading_usdc = None
|
||||
options_funding_usdc = None
|
||||
options_funding_usdt = None
|
||||
@@ -5739,7 +5757,7 @@ def api_account_snapshot():
|
||||
options_trading_btc = None
|
||||
options_margin_mode = "coin"
|
||||
options_underly = "ETH"
|
||||
recommended_capital = get_recommended_capital(current_capital)
|
||||
recommended_capital = get_recommended_capital(capital_for_sizing)
|
||||
from lib.trade.trade_labels_lib import count_position_limit_active_monitors
|
||||
|
||||
position_limit_count = count_position_limit_active_monitors(conn)
|
||||
|
||||
Reference in New Issue
Block a user