feat dev6

This commit is contained in:
2026-09-01 14:28:49 +08:00
parent dedbf63a92
commit 556e21d624
27 changed files with 334 additions and 144 deletions

View File

@@ -99,30 +99,23 @@ class PositionItem:
@classmethod
def from_trade_detail(cls, data: dict[str, Any]) -> "PositionItem":
"""从 TradeDetailData/Holding 的 QMT 原始字段创建持仓。"""
instrument_id = str(data.get("m_strInstrumentID") or "")
exchange_id = str(data.get("m_strExchangeID") or "")
stock_code = (
f"{instrument_id}.{exchange_id}"
if instrument_id and exchange_id
else instrument_id
)
return cls(
stock_code=stock_code,
stock_name=str(data.get("m_strInstrumentName") or ""),
direction=data.get("m_nDirection"),
volume=_number(data.get("m_nVolume"), int),
open_price=_number(data.get("m_dOpenPrice")),
float_profit=_number(data.get("m_dFloatProfit")),
market_value=_number(data.get("m_dMarketValue")),
stock_holder=str(data.get("m_strStockHolder") or ""),
frozen_volume=_number(data.get("m_nFrozenVolume"), int),
can_use_volume=_number(data.get("m_nCanUseVolume"), int),
on_road_volume=_number(data.get("m_nOnRoadVolume"), int),
yesterday_volume=_number(data.get("m_nYesterdayVolume"), int),
last_price=_number(data.get("m_dLastPrice")),
profit_rate=_number(data.get("m_dProfitRate")),
future_trade_type=data.get("m_eFutureTradeType"),
expire_date=str(data.get("m_strExpireDate") or ""),
stock_code=str(data.get("StockCode") or ""),
stock_name=str(data.get("StockName") or ""),
direction=data.get("Direction"),
volume=_number(data.get("Volume"), int),
open_price=_number(data.get("OpenPrice")),
float_profit=_number(data.get("FloatProfit")),
market_value=_number(data.get("MarketValue")),
stock_holder=str(data.get("StockHolder") or ""),
frozen_volume=_number(data.get("FrozenVolume"), int),
can_use_volume=_number(data.get("CanUseVolume"), int),
on_road_volume=_number(data.get("OnRoadVolume"), int),
yesterday_volume=_number(data.get("YesterdayVolume"), int),
last_price=_number(data.get("LastPrice")),
profit_rate=_number(data.get("ProfitRate")),
future_trade_type=data.get("FutureTradeType"),
expire_date=str(data.get("ExpireDate") or ""),
)