Files
big-qmt/go-client/apps/zt/main.go
2026-08-25 18:59:18 +08:00

51 lines
1.2 KiB
Go

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)
}
}
}