Thanhanh9's picture
download
raw
2.22 kB
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.