From 77b244c2c654e08f8bb7e9b0ae09fe135afcade7 Mon Sep 17 00:00:00 2001 From: strange Date: Thu, 9 Oct 2025 10:05:02 +0800 Subject: [PATCH] market trading status --- api/market.proto | 8 ++++---- api/pub.proto | 2 +- internal/exchange/exchange_service.go | 5 +++-- internal/market/market_grpc_server.go | 18 ++++++++---------- pkg/aside/trade_instance_client.go | 11 +++-------- pkg/types/instance.go | 1 + 6 files changed, 20 insertions(+), 25 deletions(-) diff --git a/api/market.proto b/api/market.proto index 67e3db1..1edb347 100644 --- a/api/market.proto +++ b/api/market.proto @@ -12,7 +12,7 @@ service MarketService { // rpc StatusTradeInstance(ReqStatusTradeInstance) returns (RspStatusTradeInstance); // rpc ListTradeInstance(ReqListTradeInstance) returns (RspListTradeInstance); // todo subscribe update - rpc ListExchangeTradeInstance(ReqListExchangeTradeInstance) returns (RspListExchangeTradeInstance); + rpc ListMarketTradeInstance(ReqListMarketTradeInstance) returns (RspListMarketTradeInstance); } message ReqGetTradeInstance { @@ -56,9 +56,9 @@ message RspListTradeInstance { string instId = 3; // 交易产品id } -message ReqListExchangeTradeInstance { +message ReqListMarketTradeInstance { ExchangeType exchange = 1; } -message RspListExchangeTradeInstance { - repeated ExchangeTradeInstance exchangeInsts = 1; +message RspListMarketTradeInstance { + repeated MarketTradeInstance exchangeInsts = 1; } diff --git a/api/pub.proto b/api/pub.proto index e0a3004..edeabac 100644 --- a/api/pub.proto +++ b/api/pub.proto @@ -85,7 +85,7 @@ message TradeInstanceExchange { } // 交易所交易产品基础信息 -message ExchangeTradeInstance { +message MarketTradeInstance { ExchangeType exchange = 1; string instId = 2; string exchangeInstId = 3; diff --git a/internal/exchange/exchange_service.go b/internal/exchange/exchange_service.go index c4616bd..092e79f 100644 --- a/internal/exchange/exchange_service.go +++ b/internal/exchange/exchange_service.go @@ -77,9 +77,10 @@ func (svc *ExchangeService) subscribeExchanges() { tradeInst := &types.TradeInstance{ InstId: inst.InstId, Status: inst.Status, - PriceSz: 0, - QuantitySz: 0, + PriceSz: inst.PriceSz, + QuantitySz: inst.QuantitySz, ExchangeInstId: inst.ExchangeInstId, + Leverages: inst.Leverages, Exchange: exchange.ExchangeType, } exchange.TradeInstIds.Store(inst.InstId, inst.ExchangeInstId) diff --git a/internal/market/market_grpc_server.go b/internal/market/market_grpc_server.go index 7f21eb9..bd6dc41 100644 --- a/internal/market/market_grpc_server.go +++ b/internal/market/market_grpc_server.go @@ -56,26 +56,21 @@ func (svr *MarketGrpcServer) AddTradeInstance(ctx context.Context, req *pb.ReqAd } // ListExchangeTradeInstance 获取指定交易所的正常状态的交易产品 -func (svr *MarketGrpcServer) ListExchangeTradeInstance(ctx context.Context, req *pb.ReqListExchangeTradeInstance) (rsp *pb.RspListExchangeTradeInstance, err error) { - rsp = new(pb.RspListExchangeTradeInstance) +func (svr *MarketGrpcServer) ListMarketTradeInstance(ctx context.Context, req *pb.ReqListMarketTradeInstance) (rsp *pb.RspListMarketTradeInstance, err error) { + rsp = new(pb.RspListMarketTradeInstance) exchangeInsts, err := svr.tradeInstanceService.ListExchangeTradeInstance(req.Exchange) if err != nil { return } var instIds []string - var exchangeInstMap = make(map[string]*pb.ExchangeTradeInstance) + var exchangeInstMap = make(map[string]*pb.MarketTradeInstance) for _, exchangeInst := range exchangeInsts { instIds = append(instIds, exchangeInst.InstId) - pbInst := &pb.ExchangeTradeInstance{ + pbInst := &pb.MarketTradeInstance{ Exchange: req.Exchange, InstId: exchangeInst.InstId, ExchangeInstId: exchangeInst.ExchangeInstId, - InstType: 0, Status: exchangeInst.Status, - // InstCoin: 0, - // PriceSz: 0, - // QuantitySz: 0, - // Leverages: 0, } rsp.ExchangeInsts = append(rsp.ExchangeInsts, pbInst) exchangeInstMap[exchangeInst.InstId] = pbInst @@ -84,7 +79,10 @@ func (svr *MarketGrpcServer) ListExchangeTradeInstance(ctx context.Context, req tradeInsts, err := svr.tradeInstanceService.ListInstance(instIds...) for _, inst := range tradeInsts { if pbInst, ok := exchangeInstMap[inst.InstId]; ok { - // todo ... + pbInst.InstType = pb.TradeInstanceType(inst.InstType) + pbInst.InstCoin = inst.InstCoin + pbInst.PriceSz = inst.PriceSz + pbInst.QuantitySz = inst.QuantitySz pbInst.Leverages = inst.Leverages } } diff --git a/pkg/aside/trade_instance_client.go b/pkg/aside/trade_instance_client.go index da660dd..aaf24d9 100644 --- a/pkg/aside/trade_instance_client.go +++ b/pkg/aside/trade_instance_client.go @@ -61,16 +61,11 @@ func (c *TradeInstanceAside) getTradeInstance0(ctx context.Context, instId strin } // ListExchangeTradeInstance 获取交易所支持的交易实例 -func (c *TradeInstanceAside) ListExchangeTradeInstance(ctx context.Context, exchange pb.ExchangeType) (exInsts []*entity.TradeInstanceExchange, err error) { - rsp, err := c.marketClient.ListExchangeTradeInstance(ctx, &pb.ReqListExchangeTradeInstance{ - Exchanges: []pb.ExchangeType{exchange}, - }) +func (c *TradeInstanceAside) ListExchangeTradeInstance(ctx context.Context, exchange pb.ExchangeType) (marketInsts []*pb.MarketTradeInstance, err error) { + rsp, err := c.marketClient.ListMarketTradeInstance(ctx, &pb.ReqListMarketTradeInstance{Exchange: exchange}) if err != nil { return } - for _, pbExInst := range rsp.ExchangeInsts { - exInst := mapping.Proto2ExchangeTradeInstance(pbExInst) - exInsts = append(exInsts, exInst) - } + marketInsts = rsp.ExchangeInsts return } diff --git a/pkg/types/instance.go b/pkg/types/instance.go index 2e0bbf2..7082382 100644 --- a/pkg/types/instance.go +++ b/pkg/types/instance.go @@ -9,5 +9,6 @@ type TradeInstance struct { QuantitySz int32 // 交易量精度 Status int32 // 交易所交易产品状态 ExchangeInstId string // 交易所交易产品id + Leverages []int32 // 交易产品支持杠杆 Exchange pb.ExchangeType // 当前处理交易产品交易所 }