gitee.com/quant1x/engine@v1.8.4/factors/quote_snapshot.go (about)

     1  package factors
     2  
     3  import "gitee.com/quant1x/gotdx/quotes"
     4  
     5  // QuoteSnapshot 即时行情快照(副本)
     6  type QuoteSnapshot struct {
     7  	Date                  string               // 交易日期
     8  	ServerTime            string               // 时间
     9  	SecurityCode          string               // 证券代码
    10  	ExchangeState         quotes.ExchangeState // 交易状态
    11  	State                 quotes.TradeState    // 上市公司状态
    12  	Market                uint8                // 市场ID
    13  	Code                  string               `name:"证券代码"`  // 代码
    14  	Name                  string               `name:"证券名称"`  // 证券名称
    15  	Active                uint16               `name:"活跃度"`   // 活跃度
    16  	LastClose             float64              `name:"昨收"`    // 昨收
    17  	Open                  float64              `name:"开盘价"`   // 开盘
    18  	OpeningChangeRate     float64              `name:"开盘涨幅%"` // 开盘
    19  	Price                 float64              `name:"现价"`    // 现价
    20  	ChangeRate            float64              `name:"涨跌幅%"`  // 涨跌幅
    21  	PremiumRate           float64              `name:"溢价率%"`  // 集合竞价买入溢价, hedgeRatio
    22  	High                  float64              // 最高
    23  	Low                   float64              // 最低
    24  	Vol                   int                  // 总量
    25  	CurVol                int                  // 现量
    26  	Amount                float64              // 总金额
    27  	SVol                  int                  // 内盘
    28  	BVol                  int                  // 外盘
    29  	IndexOpenAmount       int                  // 指数-集合竞价成交金额=开盘成交金额
    30  	StockOpenAmount       int                  // 个股-集合竞价成交金额=开盘成交金额
    31  	OpenVolume            int                  `name:"开盘量"` // 集合竞价-开盘量, 单位是股
    32  	CloseVolume           int                  `name:"收盘量"` /// 集合竞价-收盘量, 单位是股
    33  	IndexUp               int                  // 指数有效-上涨数
    34  	IndexUpLimit          int                  // 指数有效-涨停数
    35  	IndexDown             int                  // 指数有效-下跌数
    36  	IndexDownLimit        int                  // 指数有效-跌停数
    37  	OpenBiddingDirection  int                  `name:"开盘竞价" dataframe:"开盘竞价"` // 竞价方向, 交易当日集合竞价开盘时更新
    38  	OpenVolumeDirection   int                  `name:"开盘竞量" dataframe:"开盘竞量"` // 委托量差, 交易当日集合竞价开盘时更新
    39  	CloseBiddingDirection int                  `name:"收盘竞价" dataframe:"收盘竞价"` // 竞价方向, 交易当日集合竞价收盘时更新
    40  	CloseVolumeDirection  int                  `name:"收盘竞量" dataframe:"收盘竞量"` // 委托量差, 交易当日集合竞价收盘时更新
    41  	Rate                  float64              // 涨速
    42  	TopNo                 int                  // 板块排名
    43  	TopCode               string               // 领涨个股
    44  	TopName               string               // 领涨个股名称
    45  	TopRate               float64              // 领涨个股涨幅
    46  	ZhanTing              int                  // 涨停数
    47  	Ling                  int                  // 平盘数
    48  	Count                 int                  // 总数
    49  	Capital               float64              `name:"流通盘"`    // 流通盘
    50  	FreeCapital           float64              `name:"自由流通股本"` // 自由流通股本
    51  	OpenTurnZ             float64              `name:"开盘换手Z%"` // 开盘换手
    52  	OpenQuantityRatio     float64              `name:"开盘量比"`
    53  	QuantityRatio         float64              `name:"量比"`
    54  	ChangePower           float64              `name:"涨跌力度"` // 开盘金额除以开盘涨幅
    55  	AverageBiddingVolume  int                  `name:"委托均量"` // 委托均量
    56  	NextOpen              float64              // 仅回测有效: 下一个交易日开盘价
    57  	NextClose             float64              // 仅回测有效: 下一个交易日收盘价
    58  	NextHigh              float64              // 仅回测有效: 下一个交易日最高价
    59  	NextLow               float64              // 仅回测有效: 下一个交易日最低价
    60  	Beta                  float64              // 仅回测有效: 贝塔值
    61  	Alpha                 float64              // 仅回测有效: 阿尔法值
    62  	UpdateTime            string               // 本地时间戳
    63  }
    64  
    65  // ExistUpwardGap 是否存在向上跳空缺口
    66  func (q QuoteSnapshot) ExistUpwardGap() bool {
    67  	history := GetL5History(q.SecurityCode, q.Date)
    68  	if history == nil {
    69  		return false
    70  	}
    71  	return history.HIGH < q.Low
    72  }
    73  
    74  // ExistDownwardGap 是否存在向下跳空缺口
    75  func (q QuoteSnapshot) ExistDownwardGap() bool {
    76  	history := GetL5History(q.SecurityCode, q.Date)
    77  	if history == nil {
    78  		return false
    79  	}
    80  	return history.LOW > q.High
    81  }
    82  
    83  // BoxUpwardGap K线实体位于昨日K线实体上方
    84  func (q QuoteSnapshot) BoxUpwardGap() bool {
    85  	history := GetL5History(q.SecurityCode, q.Date)
    86  	if history == nil {
    87  		return false
    88  	}
    89  	lastBoxHigh := max(history.OPEN, history.CLOSE)
    90  	boxLow := min(q.Open, q.Price)
    91  	return lastBoxHigh <= boxLow
    92  }
    93  
    94  // BoxDownwardGap K线实体位于昨日K线实体下方
    95  func (q QuoteSnapshot) BoxDownwardGap() bool {
    96  	history := GetL5History(q.SecurityCode, q.Date)
    97  	if history == nil {
    98  		return false
    99  	}
   100  	lastBoxLow := min(history.OPEN, history.CLOSE)
   101  	boxHigh := max(q.Open, q.Price)
   102  	return lastBoxLow >= boxHigh
   103  }
   104  
   105  // KLineWeaknessToStrength K线弱转强, 毕竟还是弱, 下一个交易日有低吸机会
   106  func (q QuoteSnapshot) KLineWeaknessToStrength() bool {
   107  	history := GetL5History(q.SecurityCode, q.Date)
   108  	if history == nil {
   109  		return false
   110  	}
   111  	// 昨日收盘于均价线之下
   112  	c1 := history.CLOSE <= history.AveragePrice
   113  	// 当日开盘不低于昨日均价线
   114  	c2 := q.Open >= history.AveragePrice
   115  	return c1 && c2
   116  }
   117  
   118  // WeaknessToStrength 弱转强
   119  func (q QuoteSnapshot) WeaknessToStrength() bool {
   120  	history := GetL5History(q.SecurityCode, q.Date)
   121  	if history == nil {
   122  		return false
   123  	}
   124  	// 1. 昨日转强
   125  	// 昨日阴线
   126  	c11 := history.CLOSE < history.OPEN
   127  	// 昨日收盘于均价线之上
   128  	c12 := history.CLOSE >= history.AveragePrice
   129  	// 当日开盘不低于昨日收盘
   130  	c13 := q.Open >= history.CLOSE
   131  	frontToStrength := c11 && c12 && c13
   132  	// 2. 隔日转强
   133  	// 昨日收盘于均价线之下
   134  	c21 := history.CLOSE <= history.AveragePrice
   135  	// 当日开盘不低于昨日均价线
   136  	c22 := q.Open >= history.AveragePrice
   137  	nextToStrength := c21 && c22
   138  
   139  	return frontToStrength || nextToStrength
   140  }