Files
big-qmt/go-client/apps/zt/main.go

51 lines
1.2 KiB
Go
Raw Normal View History

2026-08-25 16:40:18 +08:00
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"time"
2026-08-25 18:59:18 +08:00
"big-qmt/go-client/apps/zt/logic"
2026-08-25 16:40:18 +08:00
"big-qmt/go-client/sdk"
)
func main() {
log.SetFlags(log.LstdFlags | log.Lmicroseconds)
2026-08-25 18:59:18 +08:00
cfg := logic.LoadConfig()
client := sdk.New(cfg.QMTBaseURL, cfg.QMTToken, cfg.HTTPTimeout).SetAccountType(cfg.AccountType)
books := logic.NewOrderBook()
2026-08-25 16:40:18 +08:00
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
startup := context.Background()
2026-08-25 18:59:18 +08:00
assets, err := client.Assets(startup)
2026-08-25 16:40:18 +08:00
if err != nil {
2026-08-25 18:59:18 +08:00
log.Printf("[ERROR] 启动获取资产失败: %v", err)
2026-08-25 16:40:18 +08:00
}
2026-08-25 18:59:18 +08:00
positions, err := client.Positions(startup)
2026-08-25 16:40:18 +08:00
if err != nil {
2026-08-25 18:59:18 +08:00
log.Printf("[ERROR] 启动获取持仓失败: %v", err)
2026-08-25 16:40:18 +08:00
positions = []sdk.Position{}
}
2026-08-25 18:59:18 +08:00
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")
2026-08-25 16:40:18 +08:00
ticker := time.NewTicker(cfg.LoopInterval)
defer ticker.Stop()
2026-08-25 18:59:18 +08:00
logic.RunOnce(ctx, client, books, cfg)
2026-08-25 16:40:18 +08:00
for {
select {
case <-ctx.Done():
2026-08-25 18:59:18 +08:00
log.Printf("[INFO] [ZT] 停止")
2026-08-25 16:40:18 +08:00
return
case <-ticker.C:
2026-08-25 18:59:18 +08:00
logic.RunOnce(ctx, client, books, cfg)
2026-08-25 16:40:18 +08:00
}
}
}