fix: 限制单笔报单最大50手,防止以损定仓计算出超大委托

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-24 14:01:55 +08:00
parent 3aa3e1ad30
commit 5af04ef661
2 changed files with 15 additions and 3 deletions
+10 -1
View File
@@ -13,6 +13,7 @@ from kline_stream import sse_format
from position_sizing import (
MODE_FIXED,
MODE_RISK,
DEFAULT_MAX_ORDER_LOTS,
calc_lots_by_risk,
calc_order_tick_metrics,
normalize_sizing_mode,
@@ -540,11 +541,19 @@ def install_trading(app, *, login_required, require_nav, get_db, get_setting, se
if sl <= 0:
conn.close()
return jsonify({"ok": False, "error": "以损定仓模式须填写止损价"}), 400
lots_calc, err = calc_lots_by_risk(price, sl, direction, _capital(conn), get_risk_percent(get_setting), sym)
lots_calc, err = calc_lots_by_risk(
price, sl, direction, _capital(conn), get_risk_percent(get_setting), sym,
)
if err:
conn.close()
return jsonify({"ok": False, "error": err}), 400
lots = lots_calc or lots
if lots > DEFAULT_MAX_ORDER_LOTS:
conn.close()
return jsonify({
"ok": False,
"error": f"单笔手数 {lots} 超过上限 {DEFAULT_MAX_ORDER_LOTS},请加大止损距离或改固定手数",
}), 400
try:
result = execute_order(
conn,