1 Star 0 Fork 15

KLC215 / go_real_md

forked from 海风 / go_real_md 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.go 1.94 KB
一键复制 编辑 原始数据 按行查看 历史
海风 提交于 2020-12-28 13:20 . 修复:周末日期处理bug;
package main
import (
"encoding/csv"
"fmt"
"os"
"realmd/src"
"sort"
"strings"
"time"
"github.com/sirupsen/logrus"
)
var tradingDays []string
// readCalendar 取交易日历
func readCalendar() {
cal, err := os.Open("calendar.csv")
defer cal.Close()
if err != nil {
logrus.Error(err)
}
reader := csv.NewReader(cal)
lines, err := reader.ReadAll()
for _, line := range lines {
if len(line) == 0 {
continue
}
if line[1] == "true" {
tradingDays = append(tradingDays, line[0])
}
}
sort.Strings(tradingDays)
}
func main() {
readCalendar()
// r, _ := src.NewRealMd()
// r.Run()
// return
// 7*24
curDate := time.Now().Format("20060102")
for i, day := range tradingDays {
cmp := strings.Compare(day, curDate)
if cmp < 0 {
continue
}
// 8:45之前等待
if startTime, _ := time.ParseInLocation("20060102 15:04:05", fmt.Sprintf("%s 08:45:00", day), time.Local); time.Now().Before(startTime) {
logrus.Info("waiting for trading start at ", startTime)
time.Sleep(startTime.Sub(time.Now()))
} // 15:00前开启
if startTime, _ := time.ParseInLocation("20060102 15:04:05", fmt.Sprintf("%s 15:00:00", day), time.Local); time.Now().Before(startTime) {
if md, err := src.NewRealMd(); err != nil {
logrus.Error("day 接口生成错误:", err)
break
} else {
md.Run() // 交易所关闭后 or 夜盘结束 退出
}
}
// 当日有夜盘(下一交易日在3天内)
if strings.Compare(tradingDays[i+1], time.Now().AddDate(0, 0, 3).Format("20060102")) <= 0 {
if startTime, _ := time.ParseInLocation("20060102 15:04:05", fmt.Sprintf("%s 20:45:00", day), time.Local); time.Now().Before(startTime) {
logrus.Info("waiting for night open at ", startTime)
time.Sleep(startTime.Sub(time.Now()))
}
// 夜盘开启
if md, err := src.NewRealMd(); err != nil {
logrus.Error("night 接口生成错误:", err)
break
} else {
md.Run() // 交易所关闭后 or 夜盘结束 退出
}
}
}
}
Go
1
https://gitee.com/klc215/go_real_md.git
git@gitee.com:klc215/go_real_md.git
klc215
go_real_md
go_real_md
master

搜索帮助