""" 股票相关的Pydantic模型 """ from datetime import date from typing import Optional, List from pydantic import BaseModel, Field class StockQuote(BaseModel): """股票行情""" ts_code: str = Field(..., description="股票代码") name: Optional[str] = Field(None, description="股票名称") trade_date: Optional[str] = Field(None, description="交易日期") open: Optional[float] = Field(None, description="开盘价") high: Optional[float] = Field(None, description="最高价") low: Optional[float] = Field(None, description="最低价") close: Optional[float] = Field(None, description="收盘价") pre_close: Optional[float] = Field(None, description="昨收价") change: Optional[float] = Field(None, description="涨跌额") pct_chg: Optional[float] = Field(None, description="涨跌幅%") vol: Optional[float] = Field(None, description="成交量(手)") amount: Optional[float] = Field(None, description="成交额(千元)") class KLineData(BaseModel): """K线数据""" ts_code: str = Field(..., description="股票代码") trade_date: str = Field(..., description="交易日期") open: float = Field(..., description="开盘价") high: float = Field(..., description="最高价") low: float = Field(..., description="最低价") close: float = Field(..., description="收盘价") vol: float = Field(..., description="成交量") amount: Optional[float] = Field(None, description="成交额") class TechnicalIndicators(BaseModel): """技术指标""" ma5: Optional[List[float]] = Field(None, description="5日均线") ma10: Optional[List[float]] = Field(None, description="10日均线") ma20: Optional[List[float]] = Field(None, description="20日均线") macd_dif: Optional[List[float]] = Field(None, description="MACD DIF") macd_dea: Optional[List[float]] = Field(None, description="MACD DEA") macd: Optional[List[float]] = Field(None, description="MACD柱") rsi: Optional[List[float]] = Field(None, description="RSI") kdj_k: Optional[List[float]] = Field(None, description="KDJ K值") kdj_d: Optional[List[float]] = Field(None, description="KDJ D值") kdj_j: Optional[List[float]] = Field(None, description="KDJ J值")