51 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|