代码拉取完成,页面将自动刷新
package services
import (
"gitee.com/quant1x/engine/datasource/base"
"gitee.com/quant1x/engine/market"
"gitee.com/quant1x/engine/models"
"gitee.com/quant1x/gotdx/trading"
"gitee.com/quant1x/gox/coroutine"
"gitee.com/quant1x/gox/logger"
"gitee.com/quant1x/gox/progressbar"
"gitee.com/quant1x/gox/runtime"
"runtime/debug"
)
// 任务 - 实时更新K线
func jobRealtimeKLine() {
funcName := "jobRealtimeKLine"
updateInRealTime, status := trading.CanUpdateInRealtime()
// 14:30:00~15:01:00之间更新数据
if updateInRealTime && IsTrading(status) {
realtimeUpdateOfKLine()
} else {
if runtime.Debug() {
realtimeUpdateOfKLine()
} else {
logger.Infof("%s, 非尾盘交易时段: %d", funcName, status)
}
}
}
// 更新K线
func realtimeUpdateOfKLine() {
defer func() {
if err := recover(); err != nil {
s := string(debug.Stack())
logger.Errorf("err=%v, stack=%s", err, s)
}
}()
barIndex := barIndexRealtimeKLine
allCodes := market.GetCodeList()
wg := coroutine.NewRollingWaitGroup(5)
bar := progressbar.NewBar(barIndex, "执行[实时更新K线]", len(allCodes))
for _, code := range allCodes {
updateKLine := func(waitGroup *coroutine.RollingWaitGroup, securityCode string) {
defer waitGroup.Done()
bar.Add(1)
snapshot := models.GetTickFromMemory(securityCode)
if snapshot != nil {
base.BasicKLineForSnapshot(*snapshot)
}
}
wg.Add(1)
go updateKLine(wg, code)
}
wg.Wait()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。