fix (frozen=True, slots=True)
This commit is contained in:
@@ -7,7 +7,7 @@ from pathlib import Path
|
||||
import yaml
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class SignalConfig:
|
||||
"""单个交易信号的数据源及开仓限制配置。"""
|
||||
|
||||
@@ -21,7 +21,7 @@ class SignalConfig:
|
||||
gt_last_price_is_open: bool = False
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class GlobalConfig:
|
||||
"""所有主机共享的系统配置。"""
|
||||
|
||||
@@ -37,7 +37,7 @@ class GlobalConfig:
|
||||
signals: dict[str, SignalConfig] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class AccountConfig:
|
||||
"""当前主机所使用的账户及交易策略参数。"""
|
||||
|
||||
|
||||
@@ -4,12 +4,12 @@ import secrets
|
||||
from .http import get_json
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class SignalItem:
|
||||
signal_key: str = ""; code: str = ""; name: str = ""; desc: str = ""; last_close: float = 0
|
||||
tech_indicator: dict[str, float] = field(default_factory=dict)
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class SignalResult:
|
||||
code: str = ""; total: int = 0; updated: str = ""; data: dict[str, SignalItem] = field(default_factory=dict); message: str = ""
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ def _number(value: Any, kind: type = float) -> Any:
|
||||
return kind()
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class OrderItem:
|
||||
"""由 QMT 委托明细解析得到的标准订单记录。"""
|
||||
id: str
|
||||
@@ -64,7 +64,7 @@ class OrderItem:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class PositionItem:
|
||||
stock_code: str = ""
|
||||
stock_name: str = ""
|
||||
@@ -122,7 +122,7 @@ class PositionItem:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Assets:
|
||||
total: float = 0.0
|
||||
available: float = 0.0
|
||||
@@ -136,7 +136,7 @@ class Assets:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Portfolio:
|
||||
assets: Assets
|
||||
positions: dict[str, PositionItem]
|
||||
@@ -152,7 +152,7 @@ def _trade_datetime(data: dict[str, Any]) -> datetime | None:
|
||||
return None
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Tick:
|
||||
last_price: float = 0.0
|
||||
last_close: float = 0.0
|
||||
@@ -169,7 +169,7 @@ class Tick:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class HistoryDataRequest:
|
||||
length: int = 10
|
||||
period: str = ""
|
||||
@@ -178,7 +178,7 @@ class HistoryDataRequest:
|
||||
skip_paused: bool = True
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class MarketDataRequest:
|
||||
fields: list[str] = field(default_factory=list)
|
||||
stocks: list[str] = field(default_factory=list)
|
||||
@@ -189,7 +189,7 @@ class MarketDataRequest:
|
||||
count: int = 0
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class FinancialDataRequest:
|
||||
tabname: str = ""; colname: str = ""; market: str = ""; code: str = ""
|
||||
report_type: str = ""; barpos: int = 0
|
||||
@@ -197,22 +197,22 @@ class FinancialDataRequest:
|
||||
start_date: str = ""; end_date: str = ""
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class FactorDataRequest:
|
||||
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 = ""
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class BSMPriceRequest:
|
||||
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:
|
||||
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:
|
||||
stock_code: str; start_time: str = ""; end_time: str = ""; period: str = ""; divid_type: str = ""; count: int = 0
|
||||
|
||||
@@ -14,7 +14,7 @@ from .state import State
|
||||
from .watch import DipWatch
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Runtime:
|
||||
"""集中保存趋势策略运行期间共享的依赖和状态。
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ from sdk import OrderItem, PositionItem
|
||||
TERMINAL_STATUSES = {"53", "54", "56", "57"}
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class StateItem:
|
||||
code: 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
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class PendingOrder:
|
||||
order_id: str
|
||||
kind: str
|
||||
|
||||
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta
|
||||
from threading import Lock
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class _Entry:
|
||||
last_close: float
|
||||
expires_at: datetime
|
||||
|
||||
@@ -11,7 +11,7 @@ from strategy.trend.watch import DipWatch
|
||||
from .state import TState
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Runtime:
|
||||
client: Client
|
||||
global_cfg: GlobalConfig
|
||||
|
||||
@@ -17,7 +17,7 @@ BUYING = "BUYING"
|
||||
DONE = "DONE"
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class TStateItem:
|
||||
code: str
|
||||
base_qty: int = 0
|
||||
|
||||
Reference in New Issue
Block a user