代码拉取完成,页面将自动刷新
同步操作将从 海风/go_real_md 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
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 夜盘结束 退出
}
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。