monitor.py 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """
  2. 监控记录模型文件
  3. """
  4. from app import db
  5. class MonitorRecord(db.Model):
  6. """
  7. 监控标的信息表
  8. 对应BRD文档中的"monitor_records"表
  9. """
  10. __tablename__ = 'monitor_records'
  11. id = db.Column(db.Integer, primary_key=True, comment='序号')
  12. contract = db.Column(db.String(6), nullable=False, comment='合约')
  13. name = db.Column(db.String(50), nullable=False, comment='名称')
  14. market = db.Column(db.Integer, nullable=False, comment='市场,0-国内,1-国外')
  15. opportunity = db.Column(db.String(200), comment='机会')
  16. key_price = db.Column(db.Float, comment='关键价格')
  17. open_long_price = db.Column(db.Float, comment='开多价格')
  18. open_short_price = db.Column(db.Float, comment='开空价格')
  19. status = db.Column(db.Integer, nullable=False, default=0, comment='状态,0-有效,1-失效,2-虚拟多,3-虚拟空,4-真实多,5-真实空')
  20. latest_price = db.Column(db.Float, comment='最新价格')
  21. open_long_trigger_price = db.Column(db.Float, comment='开多触发价格')
  22. open_short_trigger_price = db.Column(db.Float, comment='开空触发价格')
  23. open_long_margin_per_unit = db.Column(db.Float, comment='开多一手保证金')
  24. open_short_margin_per_unit = db.Column(db.Float, comment='开空一手保证金')
  25. candle_pattern_id = db.Column(db.Integer, db.ForeignKey('candle_info.id'), comment='K线形态ID')
  26. candle_pattern = db.Column(db.String(100), comment='K线形态')
  27. candle_pattern_ids = db.Column(db.String(200), comment='K线形态IDs')
  28. long_trend_ids = db.Column(db.String(200), comment='长期趋势IDs')
  29. long_trend_name = db.Column(db.String(200), comment='长期趋势名称')
  30. mid_trend_ids = db.Column(db.String(200), comment='中期趋势IDs')
  31. mid_trend_name = db.Column(db.String(200), comment='中期趋势名称')
  32. similarity_evaluation = db.Column(db.String(200), comment='相似度评估')
  33. possible_trigger_price = db.Column(db.Float, comment='可能触发价格')
  34. reference_price_type = db.Column(db.Integer, comment='比例对照价格类型,0-最新价格,1-关键价格')
  35. relative_ratio = db.Column(db.Float, comment='相应比例')
  36. contract_letter = db.Column(db.String(2), comment='合约字母')
  37. open_price = db.Column(db.Float, comment='开仓价格')
  38. position_mode_id = db.Column(db.Integer, comment='开仓模式ID')
  39. # 关联关系
  40. candle = db.relationship('CandleInfo', backref='monitors')
  41. def __repr__(self):
  42. return f'<MonitorRecord {self.id} - {self.contract}>'
  43. def to_dict(self):
  44. """转换为字典"""
  45. return {
  46. 'id': self.id,
  47. 'contract': self.contract,
  48. 'name': self.name,
  49. 'market': self.market,
  50. 'opportunity': self.opportunity,
  51. 'key_price': self.key_price,
  52. 'open_long_price': self.open_long_price,
  53. 'open_short_price': self.open_short_price,
  54. 'status': self.status,
  55. 'latest_price': self.latest_price,
  56. 'open_long_trigger_price': self.open_long_trigger_price,
  57. 'open_short_trigger_price': self.open_short_trigger_price,
  58. 'open_long_margin_per_unit': self.open_long_margin_per_unit,
  59. 'open_short_margin_per_unit': self.open_short_margin_per_unit,
  60. 'candle_pattern_id': self.candle_pattern_id,
  61. 'candle_pattern': self.candle_pattern,
  62. 'candle_pattern_ids': self.candle_pattern_ids,
  63. 'long_trend_ids': self.long_trend_ids,
  64. 'long_trend_name': self.long_trend_name,
  65. 'mid_trend_ids': self.mid_trend_ids,
  66. 'mid_trend_name': self.mid_trend_name,
  67. 'similarity_evaluation': self.similarity_evaluation,
  68. 'possible_trigger_price': self.possible_trigger_price,
  69. 'reference_price_type': self.reference_price_type,
  70. 'relative_ratio': self.relative_ratio,
  71. 'contract_letter': self.contract_letter,
  72. 'open_price': self.open_price,
  73. 'position_mode_id': self.position_mode_id
  74. }