45 lines
1.2 KiB
Python
Raw Normal View History

"""
Trading signal models.
"""
import enum
from datetime import datetime
from sqlalchemy import (
Column, Integer, String, Numeric, DateTime, Date,
Text, Enum as SQLEnum,
)
from app.core.database import Base
class SignalType(str, enum.Enum):
BUY = "buy"
SELL = "sell"
PARTIAL_SELL = "partial_sell"
class SignalStatus(str, enum.Enum):
ACTIVE = "active"
EXECUTED = "executed"
EXPIRED = "expired"
class Signal(Base):
__tablename__ = "signals"
id = Column(Integer, primary_key=True, index=True)
date = Column(Date, nullable=False, index=True)
ticker = Column(String(20), nullable=False, index=True)
name = Column(String(100))
signal_type = Column(SQLEnum(SignalType), nullable=False)
entry_price = Column(Numeric(12, 2))
target_price = Column(Numeric(12, 2))
stop_loss_price = Column(Numeric(12, 2))
reason = Column(String(200))
status = Column(SQLEnum(SignalStatus), default=SignalStatus.ACTIVE)
created_at = Column(DateTime, default=datetime.utcnow)
# Execution tracking fields
executed_price = Column(Numeric(12, 2), nullable=True)
executed_quantity = Column(Integer, nullable=True)
executed_at = Column(DateTime, nullable=True)