fix: 品种推荐改为最大手数并补算旧缓存。
- 最大手数 = floor(权益×保证金上限%÷1手保证金) - 加载与 SSE 推送时实时补算,旧缓存缺字段时自动刷新 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+25
-5
@@ -20,7 +20,12 @@ from position_sizing import (
|
||||
calc_order_tick_metrics,
|
||||
normalize_sizing_mode,
|
||||
)
|
||||
from recommend_store import load_recommend_cache, recommend_payload, refresh_recommend_cache
|
||||
from recommend_store import (
|
||||
load_recommend_cache,
|
||||
recommend_payload,
|
||||
refresh_recommend_cache,
|
||||
rows_missing_max_lots,
|
||||
)
|
||||
from recommend_stream import recommend_hub, start_recommend_worker
|
||||
from ctp_reconnect import start_ctp_reconnect_worker
|
||||
from ctp_premarket_connect import start_ctp_premarket_connect_worker
|
||||
@@ -400,7 +405,13 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
).fetchone()["n"]
|
||||
conn.commit()
|
||||
sizing = get_sizing_mode(get_setting)
|
||||
rec_cache = recommend_payload(conn, live_capital=capital)
|
||||
max_pct = get_max_margin_pct(get_setting)
|
||||
rec_loaded = load_recommend_cache(conn)
|
||||
if rec_loaded.get("stale") or rows_missing_max_lots(rec_loaded.get("rows") or []):
|
||||
refresh_recommend_cache(
|
||||
conn, capital, _main_quote, trading_mode=mode, max_margin_pct=max_pct,
|
||||
)
|
||||
rec_cache = recommend_payload(conn, live_capital=capital, max_margin_pct=max_pct)
|
||||
return render_template(
|
||||
"trade.html",
|
||||
trading_mode=mode,
|
||||
@@ -979,7 +990,11 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
"""只读数据库缓存,不在请求时拉行情。"""
|
||||
conn = get_db()
|
||||
try:
|
||||
payload = recommend_payload(conn, live_capital=_capital(conn))
|
||||
payload = recommend_payload(
|
||||
conn,
|
||||
live_capital=_capital(conn),
|
||||
max_margin_pct=get_max_margin_pct(get_setting),
|
||||
)
|
||||
return jsonify({"ok": True, **payload})
|
||||
finally:
|
||||
conn.close()
|
||||
@@ -994,7 +1009,11 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
try:
|
||||
conn = get_db()
|
||||
try:
|
||||
payload = recommend_payload(conn, live_capital=_capital(conn))
|
||||
payload = recommend_payload(
|
||||
conn,
|
||||
live_capital=_capital(conn),
|
||||
max_margin_pct=get_max_margin_pct(get_setting),
|
||||
)
|
||||
finally:
|
||||
conn.close()
|
||||
yield sse_format("recommend", {"ok": True, **payload})
|
||||
@@ -1030,7 +1049,8 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
|
||||
conn, capital, _main_quote, trading_mode=mode,
|
||||
max_margin_pct=get_max_margin_pct(get_setting),
|
||||
)
|
||||
payload = recommend_payload(conn, live_capital=capital)
|
||||
max_pct = get_max_margin_pct(get_setting)
|
||||
payload = recommend_payload(conn, live_capital=capital, max_margin_pct=max_pct)
|
||||
recommend_hub.broadcast("recommend", {"ok": True, **payload})
|
||||
return jsonify({"ok": True, "count": len(rows), **payload})
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user