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
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)
|