package main import ( "context" "log" "os" "os/signal" "syscall" "time" "big-qmt/go-client/apps/zt/logic" "big-qmt/go-client/sdk" ) func main() { log.SetFlags(log.LstdFlags | log.Lmicroseconds) cfg := logic.LoadConfig() client := sdk.New(cfg.QMTBaseURL, cfg.QMTToken, cfg.HTTPTimeout).SetAccountType(cfg.AccountType) books := logic.NewOrderBook() ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() startup := context.Background() assets, err := client.Assets(startup) if err != nil { log.Printf("[ERROR] 启动获取资产失败: %v", err) } positions, err := client.Positions(startup) if err != nil { log.Printf("[ERROR] 启动获取持仓失败: %v", err) positions = []sdk.Position{} } logic.Overview(cfg, assets, positions) log.Printf("[INFO] [ZT] host_key=%s interval=%s signal=%s/a/dcm_signal", cfg.HostKey, cfg.LoopInterval, cfg.APIHost) log.Printf("[INFO] [ZT] Init Success, waiting trading session") ticker := time.NewTicker(cfg.LoopInterval) defer ticker.Stop() logic.RunOnce(ctx, client, books, cfg) for { select { case <-ctx.Done(): log.Printf("[INFO] [ZT] 停止") return case <-ticker.C: logic.RunOnce(ctx, client, books, cfg) } } }