mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(app):增加盘前盘后股票数据更新功能
- 新增盘前(4:00 AM到9:30 AM)和盘后(4:00 PM到8:00 PM)的判断逻辑 - 在不同时间段内更新股票数据 - 优化了股票代码的判断条件,区分不同市场的交易时间 - 移除了不必要的日志输出,提高了代码可读性
This commit is contained in:
parent
ce91b2e532
commit
adcde5efcc
33
app.go
33
app.go
@ -250,11 +250,21 @@ func IsUSTradingTime(date time.Time) bool {
|
||||
// 获取小时和分钟
|
||||
hour, minute, _ := estTime.Clock()
|
||||
|
||||
// 判断是否在9:30到16:00之间
|
||||
// 判断是否在4:00 AM到9:30 AM之间(盘前)
|
||||
if (hour == 4) || (hour == 5) || (hour == 6) || (hour == 7) || (hour == 8) || (hour == 9 && minute < 30) {
|
||||
return true
|
||||
}
|
||||
|
||||
// 判断是否在9:30 AM到4:00 PM之间(盘中)
|
||||
if (hour == 9 && minute >= 30) || (hour >= 10 && hour < 16) || (hour == 16 && minute == 0) {
|
||||
return true
|
||||
}
|
||||
|
||||
// 判断是否在4:00 PM到8:00 PM之间(盘后)
|
||||
if (hour == 16 && minute > 0) || (hour >= 17 && hour < 20) || (hour == 20 && minute == 0) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
@ -279,14 +289,14 @@ func MonitorStockPrices(a *App) {
|
||||
if strutil.HasPrefixAny(stockInfo.Code, []string{"hk", "HK"}) && (!IsHKTradingTime(time.Now())) {
|
||||
continue
|
||||
}
|
||||
//if strutil.HasPrefixAny(stockInfo.Code, []string{"us", "US", "gb_"}) && (!IsUSTradingTime(time.Now())) {
|
||||
// continue
|
||||
//}
|
||||
if strutil.HasPrefixAny(stockInfo.Code, []string{"us", "US", "gb_"}) && (!IsUSTradingTime(time.Now())) {
|
||||
continue
|
||||
}
|
||||
|
||||
//total += stockInfo.ProfitAmountToday
|
||||
total += stockInfo.ProfitAmountToday
|
||||
//price, _ := convertor.ToFloat(stockInfo.Price)
|
||||
//if stockInfo.PrePrice != price {
|
||||
logger.SugaredLogger.Infof("-----------------------股票代码: %s, 股票名称: %s, 股票价格: %s,盘前盘后:%s", stockInfo.Code, stockInfo.Name, stockInfo.Price, stockInfo.BA)
|
||||
//logger.SugaredLogger.Infof("-----------------------股票代码: %s, 股票名称: %s, 股票价格: %s,盘前盘后:%s", stockInfo.Code, stockInfo.Name, stockInfo.Price, stockInfo.BA)
|
||||
go runtime.EventsEmit(a.ctx, "stock_price", stockInfo)
|
||||
//}
|
||||
}
|
||||
@ -303,6 +313,15 @@ func GetStockInfos(follows ...data.FollowedStock) *[]data.StockInfo {
|
||||
stockInfos := make([]data.StockInfo, 0)
|
||||
stockCodes := make([]string, 0)
|
||||
for _, follow := range follows {
|
||||
if strutil.HasPrefixAny(follow.StockCode, []string{"SZ", "SH", "sh", "sz"}) && (!isTradingTime(time.Now())) {
|
||||
continue
|
||||
}
|
||||
if strutil.HasPrefixAny(follow.StockCode, []string{"hk", "HK"}) && (!IsHKTradingTime(time.Now())) {
|
||||
continue
|
||||
}
|
||||
if strutil.HasPrefixAny(follow.StockCode, []string{"us", "US", "gb_"}) && (!IsUSTradingTime(time.Now())) {
|
||||
continue
|
||||
}
|
||||
stockCodes = append(stockCodes, follow.StockCode)
|
||||
}
|
||||
stockData, _ := data.NewStockDataApi().GetStockCodeRealTimeData(stockCodes...)
|
||||
@ -493,7 +512,7 @@ func (a *App) SendDingDingMessage(message string, stockCode string) string {
|
||||
// SendDingDingMessageByType msgType 报警类型: 1 涨跌报警;2 股价报警 3 成本价报警
|
||||
func (a *App) SendDingDingMessageByType(message string, stockCode string, msgType int) string {
|
||||
ttl, _ := a.cache.TTL([]byte(stockCode))
|
||||
logger.SugaredLogger.Infof("stockCode %s ttl:%d", stockCode, ttl)
|
||||
//logger.SugaredLogger.Infof("stockCode %s ttl:%d", stockCode, ttl)
|
||||
if ttl > 0 {
|
||||
return ""
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"go-stock/backend/logger"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
@ -15,5 +16,10 @@ func TestIsHKTradingTime(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIsUSTradingTime(t *testing.T) {
|
||||
|
||||
date := time.Now()
|
||||
hour, minute, _ := date.Clock()
|
||||
logger.SugaredLogger.Infof("当前时间: %d:%d", hour, minute)
|
||||
|
||||
t.Log(IsUSTradingTime(time.Now()))
|
||||
}
|
||||
|
@ -492,7 +492,7 @@ func ParseFullSingleStockData(data string) (*StockInfo, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger.SugaredLogger.Infof("股票数据解析完成marshal: %s", marshal)
|
||||
//logger.SugaredLogger.Infof("股票数据解析完成marshal: %s", marshal)
|
||||
stockInfo := &StockInfo{}
|
||||
err = json.Unmarshal(marshal, &stockInfo)
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user