dimension.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. """
  2. 维度数据模型文件
  3. 包含策略信息、K线形态、趋势类型等维度表
  4. """
  5. from app import db
  6. class StrategyInfo(db.Model):
  7. """
  8. 交易策略信息表
  9. 对应BRD文档中的"strategy_info"表
  10. """
  11. __tablename__ = 'strategy_info'
  12. id = db.Column(db.Integer, primary_key=True, comment='序号')
  13. name = db.Column(db.String(50), nullable=False, comment='名称')
  14. open_close_type = db.Column(db.Integer, nullable=False, comment='开平仓类型,0-开仓,1-平仓')
  15. strategy_type = db.Column(db.Integer, nullable=False, comment='策略类型,0-压力位,1-支撑位,2-趋势,3-换月')
  16. def __repr__(self):
  17. return f'<StrategyInfo {self.id} - {self.name}>'
  18. class CandleInfo(db.Model):
  19. """
  20. K线形态信息表
  21. 对应BRD文档中的"candle_info"表
  22. """
  23. __tablename__ = 'candle_info'
  24. id = db.Column(db.Integer, primary_key=True, comment='序号')
  25. name = db.Column(db.String(100), nullable=False, comment='名称')
  26. def __repr__(self):
  27. return f'<CandleInfo {self.id} - {self.name}>'
  28. def to_dict(self):
  29. """转换为字典"""
  30. return {
  31. 'id': self.id,
  32. 'name': self.name
  33. }
  34. class TrendInfo(db.Model):
  35. """
  36. 走势类型基本信息表
  37. 对应BRD文档中的"trend_info"表
  38. """
  39. __tablename__ = 'trend_info'
  40. id = db.Column(db.Integer, primary_key=True, comment='ID')
  41. category = db.Column(db.Integer, nullable=False, comment='类别,0-上涨下跌类,1-震荡类,2-和压力位支撑位相关类')
  42. name = db.Column(db.String(100), comment='名称')
  43. time_range_id = db.Column(db.Integer, db.ForeignKey('dim_time_range.id'), comment='时间范围ID')
  44. amplitude_id = db.Column(db.Integer, db.ForeignKey('dim_amplitude.id'), comment='幅度范围ID')
  45. position_id = db.Column(db.Integer, db.ForeignKey('dim_position.id'), comment='位置范围ID')
  46. speed_type_id = db.Column(db.Integer, db.ForeignKey('dim_speed_type.id'), comment='速度类型ID')
  47. trend_type_id = db.Column(db.Integer, db.ForeignKey('dim_trend_type.id'), comment='趋势类型ID')
  48. extra_info = db.Column(db.String(100), comment='额外信息')
  49. # 关联关系
  50. time_range = db.relationship('DimTimeRange', backref='trends')
  51. amplitude = db.relationship('DimAmplitude', backref='trends')
  52. position = db.relationship('DimPosition', backref='trends')
  53. speed_type = db.relationship('DimSpeedType', backref='trends')
  54. trend_type = db.relationship('DimTrendType', backref='trends')
  55. def __repr__(self):
  56. return f'<TrendInfo {self.id} - {self.name}>'
  57. class DimTimeRange(db.Model):
  58. """
  59. 走势类型的时间范围维度表
  60. 对应BRD文档中的"dim_time_range"表
  61. """
  62. __tablename__ = 'dim_time_range'
  63. id = db.Column(db.Integer, primary_key=True, comment='ID')
  64. name = db.Column(db.String(20), nullable=False, comment='名称')
  65. def __repr__(self):
  66. return f'<DimTimeRange {self.id} - {self.name}>'
  67. class DimAmplitude(db.Model):
  68. """
  69. 走势类型的幅度范围维度表
  70. 对应BRD文档中的"dim_amplitude"表
  71. """
  72. __tablename__ = 'dim_amplitude'
  73. id = db.Column(db.Integer, primary_key=True, comment='ID')
  74. name = db.Column(db.String(20), nullable=False, comment='名称')
  75. def __repr__(self):
  76. return f'<DimAmplitude {self.id} - {self.name}>'
  77. class DimPosition(db.Model):
  78. """
  79. 走势类型的位置范围维度表
  80. 对应BRD文档中的"dim_position"表
  81. """
  82. __tablename__ = 'dim_position'
  83. id = db.Column(db.Integer, primary_key=True, comment='ID')
  84. name = db.Column(db.String(20), nullable=False, comment='名称')
  85. def __repr__(self):
  86. return f'<DimPosition {self.id} - {self.name}>'
  87. class DimSpeedType(db.Model):
  88. """
  89. 走势类型的速度类型维度表
  90. 对应BRD文档中的"dim_speed_type"表
  91. """
  92. __tablename__ = 'dim_speed_type'
  93. id = db.Column(db.Integer, primary_key=True, comment='ID')
  94. name = db.Column(db.String(20), nullable=False, comment='名称')
  95. def __repr__(self):
  96. return f'<DimSpeedType {self.id} - {self.name}>'
  97. class DimTrendType(db.Model):
  98. """
  99. 走势类型的趋势类型维度表
  100. 对应BRD文档中的"dim_trend_type"表
  101. """
  102. __tablename__ = 'dim_trend_type'
  103. id = db.Column(db.Integer, primary_key=True, comment='ID')
  104. name = db.Column(db.String(20), nullable=False, comment='名称')
  105. def __repr__(self):
  106. return f'<DimTrendType {self.id} - {self.name}>'
  107. class PositionMode(db.Model):
  108. """
  109. 开仓模式表
  110. 管理不同的开仓模式类型
  111. """
  112. __tablename__ = 'position_mode'
  113. id = db.Column(db.Integer, primary_key=True, comment='ID')
  114. name = db.Column(db.String(20), nullable=False, comment='名称')
  115. type = db.Column(db.Integer, nullable=False, default=0, comment='类型,0-虚拟,1-执行')
  116. direction = db.Column(db.Integer, comment='方向,0-多,1-空,NULL-不限')
  117. def __repr__(self):
  118. return f'<PositionMode {self.id} - {self.name}>'
  119. def to_dict(self):
  120. """转换为字典"""
  121. return {
  122. 'id': self.id,
  123. 'name': self.name,
  124. 'type': self.type,
  125. 'direction': self.direction
  126. }