fix (frozen=True, slots=True)

This commit is contained in:
2026-09-05 13:56:04 +08:00
parent 58e1e3e291
commit 2059f87fe5
8 changed files with 23 additions and 23 deletions

View File

@@ -7,7 +7,7 @@ from pathlib import Path
import yaml import yaml
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class SignalConfig: class SignalConfig:
"""单个交易信号的数据源及开仓限制配置。""" """单个交易信号的数据源及开仓限制配置。"""
@@ -21,7 +21,7 @@ class SignalConfig:
gt_last_price_is_open: bool = False gt_last_price_is_open: bool = False
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class GlobalConfig: class GlobalConfig:
"""所有主机共享的系统配置。""" """所有主机共享的系统配置。"""
@@ -37,7 +37,7 @@ class GlobalConfig:
signals: dict[str, SignalConfig] = field(default_factory=dict) signals: dict[str, SignalConfig] = field(default_factory=dict)
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class AccountConfig: class AccountConfig:
"""当前主机所使用的账户及交易策略参数。""" """当前主机所使用的账户及交易策略参数。"""

View File

@@ -4,12 +4,12 @@ import secrets
from .http import get_json from .http import get_json
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class SignalItem: class SignalItem:
signal_key: str = ""; code: str = ""; name: str = ""; desc: str = ""; last_close: float = 0 signal_key: str = ""; code: str = ""; name: str = ""; desc: str = ""; last_close: float = 0
tech_indicator: dict[str, float] = field(default_factory=dict) tech_indicator: dict[str, float] = field(default_factory=dict)
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class SignalResult: class SignalResult:
code: str = ""; total: int = 0; updated: str = ""; data: dict[str, SignalItem] = field(default_factory=dict); message: str = "" code: str = ""; total: int = 0; updated: str = ""; data: dict[str, SignalItem] = field(default_factory=dict); message: str = ""

View File

@@ -11,7 +11,7 @@ def _number(value: Any, kind: type = float) -> Any:
return kind() return kind()
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class OrderItem: class OrderItem:
"""由 QMT 委托明细解析得到的标准订单记录。""" """由 QMT 委托明细解析得到的标准订单记录。"""
id: str id: str
@@ -64,7 +64,7 @@ class OrderItem:
) )
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class PositionItem: class PositionItem:
stock_code: str = "" stock_code: str = ""
stock_name: str = "" stock_name: str = ""
@@ -122,7 +122,7 @@ class PositionItem:
) )
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class Assets: class Assets:
total: float = 0.0 total: float = 0.0
available: float = 0.0 available: float = 0.0
@@ -136,7 +136,7 @@ class Assets:
) )
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class Portfolio: class Portfolio:
assets: Assets assets: Assets
positions: dict[str, PositionItem] positions: dict[str, PositionItem]
@@ -152,7 +152,7 @@ def _trade_datetime(data: dict[str, Any]) -> datetime | None:
return None return None
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class Tick: class Tick:
last_price: float = 0.0 last_price: float = 0.0
last_close: float = 0.0 last_close: float = 0.0
@@ -169,7 +169,7 @@ class Tick:
) )
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class HistoryDataRequest: class HistoryDataRequest:
length: int = 10 length: int = 10
period: str = "" period: str = ""
@@ -178,7 +178,7 @@ class HistoryDataRequest:
skip_paused: bool = True skip_paused: bool = True
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class MarketDataRequest: class MarketDataRequest:
fields: list[str] = field(default_factory=list) fields: list[str] = field(default_factory=list)
stocks: list[str] = field(default_factory=list) stocks: list[str] = field(default_factory=list)
@@ -189,7 +189,7 @@ class MarketDataRequest:
count: int = 0 count: int = 0
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class FinancialDataRequest: class FinancialDataRequest:
tabname: str = ""; colname: str = ""; market: str = ""; code: str = "" tabname: str = ""; colname: str = ""; market: str = ""; code: str = ""
report_type: str = ""; barpos: int = 0 report_type: str = ""; barpos: int = 0
@@ -197,22 +197,22 @@ class FinancialDataRequest:
start_date: str = ""; end_date: str = "" start_date: str = ""; end_date: str = ""
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class FactorDataRequest: class FactorDataRequest:
field_list: list[str] = field(default_factory=list); stock_list: list[str] = field(default_factory=list) field_list: list[str] = field(default_factory=list); stock_list: list[str] = field(default_factory=list)
stock_code: str = ""; start_date: str = ""; end_date: str = "" stock_code: str = ""; start_date: str = ""; end_date: str = ""
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class BSMPriceRequest: class BSMPriceRequest:
option_type: str; object_prices: Any; strike_price: float; risk_free: float; sigma: float; days: int; dividend: float option_type: str; object_prices: Any; strike_price: float; risk_free: float; sigma: float; days: int; dividend: float
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class BSMIVRequest: class BSMIVRequest:
option_type: str; object_prices: float; strike_price: float; option_price: float; risk_free: float; days: int; dividend: float option_type: str; object_prices: float; strike_price: float; option_price: float; risk_free: float; days: int; dividend: float
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class LocalDataRequest: class LocalDataRequest:
stock_code: str; start_time: str = ""; end_time: str = ""; period: str = ""; divid_type: str = ""; count: int = 0 stock_code: str; start_time: str = ""; end_time: str = ""; period: str = ""; divid_type: str = ""; count: int = 0

View File

@@ -14,7 +14,7 @@ from .state import State
from .watch import DipWatch from .watch import DipWatch
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class Runtime: class Runtime:
"""集中保存趋势策略运行期间共享的依赖和状态。 """集中保存趋势策略运行期间共享的依赖和状态。

View File

@@ -17,7 +17,7 @@ from sdk import OrderItem, PositionItem
TERMINAL_STATUSES = {"53", "54", "56", "57"} TERMINAL_STATUSES = {"53", "54", "56", "57"}
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class StateItem: class StateItem:
code: str code: str
base_order_id: str = "" base_order_id: str = ""
@@ -35,7 +35,7 @@ class StateItem:
return self.added_amount / self.added_qty if self.added_qty else 0.0 return self.added_amount / self.added_qty if self.added_qty else 0.0
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class PendingOrder: class PendingOrder:
order_id: str order_id: str
kind: str kind: str

View File

@@ -4,7 +4,7 @@ from datetime import datetime, timedelta
from threading import Lock from threading import Lock
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class _Entry: class _Entry:
last_close: float last_close: float
expires_at: datetime expires_at: datetime

View File

@@ -11,7 +11,7 @@ from strategy.trend.watch import DipWatch
from .state import TState from .state import TState
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class Runtime: class Runtime:
client: Client client: Client
global_cfg: GlobalConfig global_cfg: GlobalConfig

View File

@@ -17,7 +17,7 @@ BUYING = "BUYING"
DONE = "DONE" DONE = "DONE"
@dataclass(slots=True) @dataclass(frozen=True, slots=True)
class TStateItem: class TStateItem:
code: str code: str
base_qty: int = 0 base_qty: int = 0