first commit
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
"""Pydantic 请求/响应模型"""
|
||||
|
||||
from typing import Optional, List
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
# ── 大盘阶段 ──
|
||||
|
||||
class MarketRegimeBase(BaseModel):
|
||||
name: str
|
||||
trade_type: str
|
||||
allow_direction: str
|
||||
remark: str = ""
|
||||
|
||||
|
||||
class MarketRegimeCreate(MarketRegimeBase):
|
||||
pass
|
||||
|
||||
|
||||
class MarketRegimeUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
trade_type: Optional[str] = None
|
||||
allow_direction: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class MarketRegimeOut(MarketRegimeBase):
|
||||
id: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── 账户 ──
|
||||
|
||||
class AccountBase(BaseModel):
|
||||
account_name: str
|
||||
total_capital: float = 100
|
||||
trade_cycle: str
|
||||
risk_ratio: str
|
||||
enable: int = 1
|
||||
remark: str = ""
|
||||
|
||||
|
||||
class AccountCreate(AccountBase):
|
||||
pass
|
||||
|
||||
|
||||
class AccountUpdate(BaseModel):
|
||||
account_name: Optional[str] = None
|
||||
total_capital: Optional[float] = None
|
||||
trade_cycle: Optional[str] = None
|
||||
risk_ratio: Optional[str] = None
|
||||
enable: Optional[int] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class AccountOut(AccountBase):
|
||||
id: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── 策略 ──
|
||||
|
||||
class StrategyBase(BaseModel):
|
||||
strategy_name: str
|
||||
fit_cycle: str
|
||||
fit_trend_strength: str
|
||||
trade_type: str
|
||||
strategy_rule: str
|
||||
remark: str = ""
|
||||
|
||||
|
||||
class StrategyCreate(StrategyBase):
|
||||
pass
|
||||
|
||||
|
||||
class StrategyUpdate(BaseModel):
|
||||
strategy_name: Optional[str] = None
|
||||
fit_cycle: Optional[str] = None
|
||||
fit_trend_strength: Optional[str] = None
|
||||
trade_type: Optional[str] = None
|
||||
strategy_rule: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class StrategyOut(StrategyBase):
|
||||
id: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── 匹配绑定 ──
|
||||
|
||||
class RegimeMatchBase(BaseModel):
|
||||
market_regime_id: int
|
||||
market_cycle: str
|
||||
trend_strength: str
|
||||
account_id: int
|
||||
strategy_id: int
|
||||
force_direction: str = ""
|
||||
|
||||
|
||||
class RegimeMatchCreate(RegimeMatchBase):
|
||||
pass
|
||||
|
||||
|
||||
class RegimeMatchUpdate(BaseModel):
|
||||
market_regime_id: Optional[int] = None
|
||||
market_cycle: Optional[str] = None
|
||||
trend_strength: Optional[str] = None
|
||||
account_id: Optional[int] = None
|
||||
strategy_id: Optional[int] = None
|
||||
force_direction: Optional[str] = None
|
||||
|
||||
|
||||
class RegimeMatchOut(RegimeMatchBase):
|
||||
id: int
|
||||
regime_name: Optional[str] = None
|
||||
account_name: Optional[str] = None
|
||||
strategy_name: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── 日常使用:匹配查询 ──
|
||||
|
||||
class MatchRequest(BaseModel):
|
||||
market_cycle: str = Field(..., description="大盘周期:日线/4H/1H")
|
||||
market_regime_id: int = Field(..., description="大盘阶段 ID")
|
||||
trend_strength: str = Field(..., description="趋势强弱:强/弱/震荡")
|
||||
|
||||
|
||||
class MatchAccountOut(BaseModel):
|
||||
id: int
|
||||
account_name: str
|
||||
total_capital: float
|
||||
trade_cycle: str
|
||||
risk_ratio: str
|
||||
force_direction: str = ""
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class MatchStrategyOut(BaseModel):
|
||||
id: int
|
||||
strategy_name: str
|
||||
fit_cycle: str
|
||||
strategy_rule: str
|
||||
force_direction: str = ""
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class MatchResult(BaseModel):
|
||||
"""匹配结果:系统仅做前置策略匹配,不做任何自动校验"""
|
||||
market_cycle: str
|
||||
regime_name: str
|
||||
trade_type: str
|
||||
allow_direction: str
|
||||
trend_strength: str
|
||||
status: str # ok / watch / disabled
|
||||
message: str = ""
|
||||
accounts: List[MatchAccountOut] = []
|
||||
strategies: List[MatchStrategyOut] = []
|
||||
Reference in New Issue
Block a user