2 Star 15 Fork 17

王布衣/engine

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
task_kline.go 1.72 KB
一键复制 编辑 原始数据 按行查看 历史
王布衣 提交于 2023-10-23 08:30 +08:00 . 调整调度任务代码结构
package services
import (
"gitee.com/quant1x/engine/datasets/base"
"gitee.com/quant1x/engine/market"
"gitee.com/quant1x/gotdx/quotes"
"gitee.com/quant1x/gotdx/trading"
"gitee.com/quant1x/gox/logger"
"runtime/debug"
"sync"
"time"
)
// 任务 - 实时更新K线
func jobRealtimeKLine() {
now := time.Now()
updateInRealTime, status := trading.CanUpdateInRealtime()
// 14:30:00~15:01:00之间更新数据
if updateInRealTime && trading.CheckCallAuctionTail(now) {
realtimeUpdateOfKLine()
} else {
logger.Infof("非尾盘交易时段: %d", status)
}
}
// 更新K线
func realtimeUpdateOfKLine() {
mainStart := time.Now()
defer func() {
if err := recover(); err != nil {
s := string(debug.Stack())
logger.Errorf("err=%v, stack=%s", err, s)
}
elapsedTime := time.Since(mainStart) / time.Millisecond
logger.Infof("总耗时: %.3fs", float64(elapsedTime)/1000)
}()
allCodes := market.GetCodeList()
count := len(allCodes)
var wg sync.WaitGroup
for start := 0; start < count; start += quotes.TDX_SECURITY_QUOTES_MAX {
length := count - start
if length >= quotes.TDX_SECURITY_QUOTES_MAX {
length = quotes.TDX_SECURITY_QUOTES_MAX
}
subCodes := []string{}
for i := 0; i < length; i++ {
securityCode := allCodes[start+i]
subCodes = append(subCodes, securityCode)
}
if len(subCodes) == 0 {
continue
}
updateKLine := func(waitGroup *sync.WaitGroup, codes []string) {
waitGroup.Done()
for i := 0; i < quotes.DefaultRetryTimes; i++ {
err := base.BatchRealtimeBasicKLine(codes)
if err != nil {
logger.Errorf("ZS: 网络异常: %+v, 重试: %d", err, i+1)
time.Sleep(time.Second * 1)
continue
}
break
}
}
wg.Add(1)
go updateKLine(&wg, subCodes)
}
wg.Wait()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/quant1x/engine.git
git@gitee.com:quant1x/engine.git
quant1x
engine
engine
v0.5.4

搜索帮助