From f35e7d5e9a0b9fe07dab6859dce02b1ac364f45c Mon Sep 17 00:00:00 2001 From: yanweidong Date: Tue, 10 Feb 2026 19:04:09 +0800 Subject: [PATCH] fix bug --- cmd/pnl/main.go | 46 ++++++++++++++++++++++++++++++++++++ go.mod | 6 +++++ go.sum | 7 ++++++ internal/logic/mock/order.go | 2 +- 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cmd/pnl/main.go diff --git a/cmd/pnl/main.go b/cmd/pnl/main.go new file mode 100644 index 0000000..f08f9fb --- /dev/null +++ b/cmd/pnl/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + + "git.apinb.com/bsm-sdk/core/utils" + "git.apinb.com/quant/gostock/internal/config" + "git.apinb.com/quant/gostock/internal/impl" + "git.apinb.com/quant/gostock/internal/models" + "github.com/jedib0t/go-pretty/v6/table" +) + +var ( + ServiceKey = "gostock" +) + +func main() { + config.New(ServiceKey) + impl.NewImpl() + + fmt.Println("") + run() + fmt.Println("") +} + +func run() { + tw := table.NewWriter() + tw.SetStyle(table.StyleLight) + tw.AppendHeader(table.Row{"ID", "Code", "Name", "OpenDate", "OpenPrice", "TodayPrice", "PNL", "PNLRate"}) + var data []models.MockPosition + impl.DBService.Where("status=?", 0).Find(&data) + for _, item := range data { + var stock models.StockBasic + impl.DBService.Where("ts_code=?", item.Code).First(&stock) + + var daily models.StockDaily + impl.DBService.Model(&models.StockDaily{}).Where("ts_code=?", item.Code).Order("id desc").Limit(1).First(&daily) + + pnl := utils.FloatRound(daily.High-item.OpenPrice, 2) + pnlRate := utils.FloatRound(pnl/item.OpenPrice*100, 2) + + tw.AppendRow(table.Row{item.ID, item.Code, stock.Name, item.CreatedAt.Format("2006-01-02"), item.OpenPrice, daily.High, pnl, pnlRate}) + } + + fmt.Println(tw.Render()) +} diff --git a/go.mod b/go.mod index a9fa32c..6ba5f56 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,11 @@ require ( github.com/gin-gonic/gin v1.11.0 ) +require ( + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/rivo/uniseg v0.4.7 // indirect +) + require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/allegro/bigcache/v3 v3.1.0 // indirect @@ -57,6 +62,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.7.6 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jedib0t/go-pretty/v6 v6.7.8 github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/jpillora/backoff v1.0.0 // indirect diff --git a/go.sum b/go.sum index fbf67f2..b3f226a 100644 --- a/go.sum +++ b/go.sum @@ -84,6 +84,8 @@ github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk= github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jedib0t/go-pretty/v6 v6.7.8 h1:BVYrDy5DPBA3Qn9ICT+PokP9cvCv1KaHv2i+Hc8sr5o= +github.com/jedib0t/go-pretty/v6 v6.7.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= @@ -106,6 +108,8 @@ github.com/markcheno/go-talib v0.0.0-20250114000313-ec55a20c902f h1:iKq//xEUUaeR github.com/markcheno/go-talib v0.0.0-20250114000313-ec55a20c902f/go.mod h1:3YUtoVrKWu2ql+iAeRyepSz3fy6a+19hJzGS88+u4u0= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -124,6 +128,9 @@ github.com/quic-go/quic-go v0.55.0 h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9M github.com/quic-go/quic-go v0.55.0/go.mod h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U= github.com/redis/go-redis/v9 v9.14.0 h1:u4tNCjXOyzfgeLN+vAZaW1xUooqWDqVEsZN0U01jfAE= github.com/redis/go-redis/v9 v9.14.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= diff --git a/internal/logic/mock/order.go b/internal/logic/mock/order.go index c2b60dc..3d63cd0 100644 --- a/internal/logic/mock/order.go +++ b/internal/logic/mock/order.go @@ -67,7 +67,7 @@ func CheckClose() { // 2.计算盈亏 pnl := utils.FloatRound(newClosePrice-p.OpenPrice, 2) - pnlRate := utils.FloatRound(p.Pnl/p.OpenPrice*100, 2) + pnlRate := utils.FloatRound(pnl/p.OpenPrice*100, 2) log.Printf("Pnl for %s is %f,rate %f", p.Code, pnl, pnlRate) // 3.判断盈亏超过20%,才确定平仓 if pnlRate >= 20 {