first commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""SQLAlchemy ORM 模型"""
|
||||
|
||||
from sqlalchemy import Column, Integer, String, Float, ForeignKey, Text
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class MarketRegime(Base):
|
||||
"""大盘阶段"""
|
||||
__tablename__ = "market_regime"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
name = Column(String, nullable=False, unique=True)
|
||||
trade_type = Column(String, nullable=False) # 顺势 / 反转 / 观望
|
||||
allow_direction = Column(String, nullable=False) # 做多 / 做空 / 禁止 / 多空均可
|
||||
remark = Column(Text, default="")
|
||||
|
||||
matches = relationship("RegimeMatch", back_populates="regime", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class Account(Base):
|
||||
"""交易账户"""
|
||||
__tablename__ = "account"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
account_name = Column(String, nullable=False)
|
||||
total_capital = Column(Float, nullable=False, default=100)
|
||||
trade_cycle = Column(String, nullable=False)
|
||||
risk_ratio = Column(String, nullable=False)
|
||||
enable = Column(Integer, nullable=False, default=1)
|
||||
remark = Column(Text, default="")
|
||||
|
||||
matches = relationship("RegimeMatch", back_populates="account", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class Strategy(Base):
|
||||
"""交易策略(规则文本仅展示,系统不做校验)"""
|
||||
__tablename__ = "strategy"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
strategy_name = Column(String, nullable=False)
|
||||
fit_cycle = Column(String, nullable=False)
|
||||
fit_trend_strength = Column(String, nullable=False) # 强 / 弱 / 全部
|
||||
trade_type = Column(String, nullable=False) # 顺势 / 反转 / 全部
|
||||
strategy_rule = Column(Text, nullable=False)
|
||||
remark = Column(Text, default="")
|
||||
|
||||
matches = relationship("RegimeMatch", back_populates="strategy", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class RegimeMatch(Base):
|
||||
"""匹配绑定:大盘周期+阶段+强弱 → 账户+策略+方向"""
|
||||
__tablename__ = "regime_match"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
market_regime_id = Column(Integer, ForeignKey("market_regime.id", ondelete="CASCADE"), nullable=False)
|
||||
market_cycle = Column(String, nullable=False) # 日线 / 4H / 1H
|
||||
trend_strength = Column(String, nullable=False) # 强 / 弱 / 震荡
|
||||
account_id = Column(Integer, ForeignKey("account.id", ondelete="CASCADE"), nullable=False)
|
||||
strategy_id = Column(Integer, ForeignKey("strategy.id", ondelete="CASCADE"), nullable=False)
|
||||
force_direction = Column(String, default="") # 做多 / 做空 / 空=跟随大盘
|
||||
|
||||
regime = relationship("MarketRegime", back_populates="matches")
|
||||
account = relationship("Account", back_populates="matches")
|
||||
strategy = relationship("Strategy", back_populates="matches")
|
||||
Reference in New Issue
Block a user