alphax/app/core/trade_direction.py
2026-05-31 22:47:03 +08:00

41 lines
1.3 KiB
Python

"""Shared long/short direction helpers for opportunities and execution."""
from __future__ import annotations
def normalize_trade_side(value: object = "") -> str:
text = str(value or "").strip().lower()
if text in {"short", "sell", "", "空头", "做空", "空头启动"}:
return "short"
return "long"
def side_from_direction(direction: object = "") -> str:
text = str(direction or "").strip().lower()
if any(token in text for token in ("", "short", "sell")):
return "short"
return "long"
def side_label(side: object = "") -> str:
return "" if normalize_trade_side(side) == "short" else ""
def direction_label(side: object = "") -> str:
return "空头启动" if normalize_trade_side(side) == "short" else "多头启动"
def trade_side_from_payload(*payloads: object) -> str:
for payload in payloads:
if isinstance(payload, dict):
if payload.get("side"):
return normalize_trade_side(payload.get("side"))
if payload.get("direction"):
return side_from_direction(payload.get("direction"))
for payload in payloads:
if payload:
side = side_from_direction(payload)
if side == "short":
return "short"
return "long"