fix: 交易安全审计修复 — 补偿平仓、中控同步、滚仓/趋势防护
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -37,6 +37,34 @@ KEY_ENTRY_REASON_CALLBACK = "关键位回调触价开仓"
|
||||
KEY_ENTRY_REASON_BREAKOUT = "关键位突破触价开仓"
|
||||
KEY_ENTRY_REASON_TRIGGER_LEGACY = "关键位触价开仓"
|
||||
|
||||
TRIGGER_ENTRY_IN_FLIGHT_OID = "__trigger_entry_in_flight__"
|
||||
|
||||
|
||||
def is_trigger_entry_in_flight_row(row: Any) -> bool:
|
||||
if row is None:
|
||||
return False
|
||||
try:
|
||||
v = row["fib_limit_order_id"]
|
||||
except (KeyError, IndexError, TypeError):
|
||||
v = getattr(row, "fib_limit_order_id", None)
|
||||
return (v or "").strip() == TRIGGER_ENTRY_IN_FLIGHT_OID
|
||||
|
||||
|
||||
def acquire_trigger_entry_exec_lock(conn: Any, monitor_id: int) -> bool:
|
||||
cur = conn.execute(
|
||||
"UPDATE key_monitors SET fib_limit_order_id=? WHERE id=? "
|
||||
"AND (fib_limit_order_id IS NULL OR fib_limit_order_id='')",
|
||||
(TRIGGER_ENTRY_IN_FLIGHT_OID, int(monitor_id)),
|
||||
)
|
||||
return int(cur.rowcount or 0) == 1
|
||||
|
||||
|
||||
def release_trigger_entry_exec_lock(conn: Any, monitor_id: int) -> None:
|
||||
conn.execute(
|
||||
"UPDATE key_monitors SET fib_limit_order_id=NULL WHERE id=? AND fib_limit_order_id=?",
|
||||
(int(monitor_id), TRIGGER_ENTRY_IN_FLIGHT_OID),
|
||||
)
|
||||
|
||||
|
||||
def normalize_trigger_entry_monitor_type(monitor_type: Optional[str]) -> str:
|
||||
mt = (monitor_type or "").strip()
|
||||
|
||||
Reference in New Issue
Block a user