| from sqlalchemy import Column, Integer, String, Float, DateTime, Text, ForeignKey | |
| from sqlalchemy.orm import relationship | |
| from datetime import datetime | |
| from database import Base | |
| class Strategy(Base): | |
| __tablename__ = "strategies" | |
| id = Column(Integer, primary_key=True, index=True) | |
| name = Column(String(200), nullable=False) | |
| description = Column(Text, default="") | |
| details = Column(Text, default="") | |
| status = Column(String(20), default="testing") # testing | active | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) | |
| backtests = relationship("BacktestEntry", back_populates="strategy", cascade="all, delete-orphan") | |
| class BacktestEntry(Base): | |
| __tablename__ = "backtest_entries" | |
| id = Column(Integer, primary_key=True, index=True) | |
| strategy_id = Column(Integer, ForeignKey("strategies.id"), nullable=False) | |
| # Meta | |
| pair = Column(String(20), nullable=False) # e.g. EURUSD | |
| timeframe = Column(String(10), nullable=False) # e.g. H1 | |
| date_from = Column(String(20), default="") | |
| date_to = Column(String(20), default="") | |
| notes = Column(Text, default="") | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| # Metrics | |
| net_profit = Column(Float, nullable=True) | |
| gross_profit = Column(Float, nullable=True) | |
| gross_loss = Column(Float, nullable=True) | |
| initial_balance = Column(Float, nullable=True) | |
| total_return = Column(Float, nullable=True) | |
| total_trades = Column(Integer, nullable=True) | |
| profit_trade = Column(Integer, nullable=True) | |
| loss_trade = Column(Integer, nullable=True) | |
| profit_factor = Column(Float, nullable=True) | |
| max_dd_pct = Column(Float, nullable=True) | |
| ar_mdd = Column(Float, nullable=True) | |
| avg_profit_trade = Column(Float, nullable=True) | |
| avg_loss_trade = Column(Float, nullable=True) | |
| recover_factor = Column(Float, nullable=True) | |
| largest_profit_trade = Column(Float, nullable=True) | |
| largest_loss_trade = Column(Float, nullable=True) | |
| carg = Column(Float, nullable=True) | |
| rr = Column(Float, nullable=True) | |
| strategy = relationship("Strategy", back_populates="backtests") | |
Xet Storage Details
- Size:
- 2.22 kB
- Xet hash:
- 50f8cbcb7cf753a60a4b86f8babcb037ff46ad138c850ede40c0f0b9d00fe422
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.