You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.7 KiB

"""
期货数据模型
"""
from datetime import datetime, date
from sqlalchemy import Column, Integer, String, BigInteger, Numeric, Boolean, Date, DateTime
from app.db.base import Base
class FutureInfo(Base):
"""期货基础信息表"""
__tablename__ = "future_info"
id = Column(Integer, primary_key=True, index=True)
code = Column(String(20), unique=True, nullable=False, index=True)
symbol = Column(String(100), nullable=False)
underlying = Column(String(20))
contract_month = Column(String(10))
pre_close = Column(Numeric(12, 4))
high_limited = Column(Numeric(12, 4))
low_limited = Column(Numeric(12, 4))
price_tick = Column(Numeric(10, 4))
exchange = Column(String(10), default="CFE")
list_date = Column(Date)
expire_date = Column(Date)
is_active = Column(Boolean, default=True)
created_at = Column(DateTime(timezone=True), default=datetime.utcnow)
updated_at = Column(DateTime(timezone=True), default=datetime.utcnow, onupdate=datetime.utcnow)
class FutureKlineDaily(Base):
"""期货日线数据表"""
__tablename__ = "future_kline_daily"
id = Column(BigInteger, primary_key=True, index=True, autoincrement=True)
code = Column(String(20), nullable=False, index=True)
trade_date = Column(Date, nullable=False, index=True)
open = Column(Numeric(12, 4), nullable=False)
high = Column(Numeric(12, 4), nullable=False)
low = Column(Numeric(12, 4), nullable=False)
close = Column(Numeric(12, 4), nullable=False)
volume = Column(BigInteger, nullable=False)
amount = Column(Numeric(18, 4), nullable=False)
settle = Column(Numeric(12, 4))
open_interest = Column(BigInteger)
pre_settle = Column(Numeric(12, 4))
created_at = Column(DateTime(timezone=True), default=datetime.utcnow)
updated_at = Column(DateTime(timezone=True), default=datetime.utcnow, onupdate=datetime.utcnow)
class FutureKlineMin(Base):
"""期货分钟数据表"""
__tablename__ = "future_kline_min"
id = Column(BigInteger, primary_key=True, index=True, autoincrement=True)
code = Column(String(20), nullable=False, index=True)
period_type = Column(String(10), nullable=False)
trade_datetime = Column(DateTime, nullable=False, index=True)
open = Column(Numeric(12, 4), nullable=False)
high = Column(Numeric(12, 4), nullable=False)
low = Column(Numeric(12, 4), nullable=False)
close = Column(Numeric(12, 4), nullable=False)
volume = Column(BigInteger, nullable=False)
amount = Column(Numeric(18, 4), nullable=False)
settle = Column(Numeric(12, 4))
open_interest = Column(BigInteger)
created_at = Column(DateTime(timezone=True), default=datetime.utcnow)