新增注释
This commit is contained in:
@@ -9,6 +9,9 @@ import (
|
||||
"level_go/internal/model"
|
||||
)
|
||||
|
||||
// GetLimitOpenCompareGroups 返回昨日涨停且今日继续涨停股票的开盘对比分组。
|
||||
//
|
||||
// 重点识别两类股票:今日开盘低于前收的股票,以及首板进二板且 11 点前首次涨停的股票。
|
||||
func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.LimitOpenCompareResponse, error) {
|
||||
resp := model.LimitOpenCompareResponse{TradeDate: tradeDate}
|
||||
|
||||
@@ -43,12 +46,14 @@ func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.L
|
||||
firstToSecondBoardCount := 0
|
||||
firstSecondBeforeElevenCount := 0
|
||||
for _, stock := range stocks {
|
||||
// previousTwoTradeDate 未涨停、previousTradeDate 涨停、tradeDate 涨停时,认为是首板进二板。
|
||||
if stock.IsFirstToSecondBoard {
|
||||
stock.HighlightLabel = "首板进二板"
|
||||
firstToSecondBoardCount++
|
||||
}
|
||||
isOpenLower := previousTradeDate != "" && stock.HasOpen && stock.HasPreviousClose && stock.Open < stock.PreviousClose
|
||||
if isOpenLower && stock.IsFirstToSecondBoard && isBeforeEleven(stock.AkFirstLimitTime) {
|
||||
// 首板进二板且 11 点前封板的低开股,前端会用更强提示标签展示。
|
||||
stock.IsFirstSecondBeforeEleven = true
|
||||
stock.HighlightLabel = "首二一一"
|
||||
firstSecondBeforeElevenCount++
|
||||
@@ -72,6 +77,9 @@ func (s *LimitBoardService) GetLimitOpenCompareGroups(tradeDate string) (model.L
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// isBeforeEleven 判断涨停时间是否早于 11:00。
|
||||
//
|
||||
// 兼容 HH:MM:SS、930、0930、93000、093000 等时间格式。
|
||||
func isBeforeEleven(limitTime *string) bool {
|
||||
if limitTime == nil || *limitTime == "" {
|
||||
return false
|
||||
@@ -119,6 +127,7 @@ func isBeforeEleven(limitTime *string) bool {
|
||||
return hour < 11
|
||||
}
|
||||
|
||||
// loadLimitOpenCompareStocks 查询昨日涨停且今日继续涨停的股票,并带出今日开盘和昨日收盘。
|
||||
func (s *LimitBoardService) loadLimitOpenCompareStocks(tradeDate, previousTradeDate, previousTwoTradeDate string) ([]model.LimitOpenCompareStock, error) {
|
||||
var stocks []model.LimitOpenCompareStock
|
||||
query := `SELECT
|
||||
@@ -171,6 +180,7 @@ func (s *LimitBoardService) loadLimitOpenCompareStocks(tradeDate, previousTradeD
|
||||
return stocks, err
|
||||
}
|
||||
|
||||
// buildLimitOpenCompareGroups 构造“开盘低于前收”和“其他涨停股”两个固定分组。
|
||||
func buildLimitOpenCompareGroups(openLowerStocks, otherStocks []model.LimitOpenCompareStock) []model.LimitOpenCompareGroup {
|
||||
if openLowerStocks == nil {
|
||||
openLowerStocks = []model.LimitOpenCompareStock{}
|
||||
@@ -198,6 +208,7 @@ func buildLimitOpenCompareGroups(openLowerStocks, otherStocks []model.LimitOpenC
|
||||
}
|
||||
}
|
||||
|
||||
// sortLimitOpenCompareStocks 按涨跌幅降序、股票代码升序稳定展示分组内股票。
|
||||
func sortLimitOpenCompareStocks(stocks []model.LimitOpenCompareStock) {
|
||||
sort.Slice(stocks, func(i, j int) bool {
|
||||
if stocks[i].PctChg == stocks[j].PctChg {
|
||||
|
||||
Reference in New Issue
Block a user