Browse Source

market trading status

main
strange 11 months ago
parent
commit
77b244c2c6
  1. 8
      api/market.proto
  2. 2
      api/pub.proto
  3. 5
      internal/exchange/exchange_service.go
  4. 18
      internal/market/market_grpc_server.go
  5. 11
      pkg/aside/trade_instance_client.go
  6. 1
      pkg/types/instance.go

8
api/market.proto

@ -12,7 +12,7 @@ service MarketService {
// rpc StatusTradeInstance(ReqStatusTradeInstance) returns (RspStatusTradeInstance); // rpc StatusTradeInstance(ReqStatusTradeInstance) returns (RspStatusTradeInstance);
// rpc ListTradeInstance(ReqListTradeInstance) returns (RspListTradeInstance); // rpc ListTradeInstance(ReqListTradeInstance) returns (RspListTradeInstance);
// todo subscribe update // todo subscribe update
rpc ListExchangeTradeInstance(ReqListExchangeTradeInstance) returns (RspListExchangeTradeInstance); rpc ListMarketTradeInstance(ReqListMarketTradeInstance) returns (RspListMarketTradeInstance);
} }
message ReqGetTradeInstance { message ReqGetTradeInstance {
@ -56,9 +56,9 @@ message RspListTradeInstance {
string instId = 3; // id string instId = 3; // id
} }
message ReqListExchangeTradeInstance { message ReqListMarketTradeInstance {
ExchangeType exchange = 1; ExchangeType exchange = 1;
} }
message RspListExchangeTradeInstance { message RspListMarketTradeInstance {
repeated ExchangeTradeInstance exchangeInsts = 1; repeated MarketTradeInstance exchangeInsts = 1;
} }

2
api/pub.proto

@ -85,7 +85,7 @@ message TradeInstanceExchange {
} }
// //
message ExchangeTradeInstance { message MarketTradeInstance {
ExchangeType exchange = 1; ExchangeType exchange = 1;
string instId = 2; string instId = 2;
string exchangeInstId = 3; string exchangeInstId = 3;

5
internal/exchange/exchange_service.go

@ -77,9 +77,10 @@ func (svc *ExchangeService) subscribeExchanges() {
tradeInst := &types.TradeInstance{ tradeInst := &types.TradeInstance{
InstId: inst.InstId, InstId: inst.InstId,
Status: inst.Status, Status: inst.Status,
PriceSz: 0, PriceSz: inst.PriceSz,
QuantitySz: 0, QuantitySz: inst.QuantitySz,
ExchangeInstId: inst.ExchangeInstId, ExchangeInstId: inst.ExchangeInstId,
Leverages: inst.Leverages,
Exchange: exchange.ExchangeType, Exchange: exchange.ExchangeType,
} }
exchange.TradeInstIds.Store(inst.InstId, inst.ExchangeInstId) exchange.TradeInstIds.Store(inst.InstId, inst.ExchangeInstId)

18
internal/market/market_grpc_server.go

@ -56,26 +56,21 @@ func (svr *MarketGrpcServer) AddTradeInstance(ctx context.Context, req *pb.ReqAd
} }
// ListExchangeTradeInstance 获取指定交易所的正常状态的交易产品 // ListExchangeTradeInstance 获取指定交易所的正常状态的交易产品
func (svr *MarketGrpcServer) ListExchangeTradeInstance(ctx context.Context, req *pb.ReqListExchangeTradeInstance) (rsp *pb.RspListExchangeTradeInstance, err error) { func (svr *MarketGrpcServer) ListMarketTradeInstance(ctx context.Context, req *pb.ReqListMarketTradeInstance) (rsp *pb.RspListMarketTradeInstance, err error) {
rsp = new(pb.RspListExchangeTradeInstance) rsp = new(pb.RspListMarketTradeInstance)
exchangeInsts, err := svr.tradeInstanceService.ListExchangeTradeInstance(req.Exchange) exchangeInsts, err := svr.tradeInstanceService.ListExchangeTradeInstance(req.Exchange)
if err != nil { if err != nil {
return return
} }
var instIds []string var instIds []string
var exchangeInstMap = make(map[string]*pb.ExchangeTradeInstance) var exchangeInstMap = make(map[string]*pb.MarketTradeInstance)
for _, exchangeInst := range exchangeInsts { for _, exchangeInst := range exchangeInsts {
instIds = append(instIds, exchangeInst.InstId) instIds = append(instIds, exchangeInst.InstId)
pbInst := &pb.ExchangeTradeInstance{ pbInst := &pb.MarketTradeInstance{
Exchange: req.Exchange, Exchange: req.Exchange,
InstId: exchangeInst.InstId, InstId: exchangeInst.InstId,
ExchangeInstId: exchangeInst.ExchangeInstId, ExchangeInstId: exchangeInst.ExchangeInstId,
InstType: 0,
Status: exchangeInst.Status, Status: exchangeInst.Status,
// InstCoin: 0,
// PriceSz: 0,
// QuantitySz: 0,
// Leverages: 0,
} }
rsp.ExchangeInsts = append(rsp.ExchangeInsts, pbInst) rsp.ExchangeInsts = append(rsp.ExchangeInsts, pbInst)
exchangeInstMap[exchangeInst.InstId] = pbInst exchangeInstMap[exchangeInst.InstId] = pbInst
@ -84,7 +79,10 @@ func (svr *MarketGrpcServer) ListExchangeTradeInstance(ctx context.Context, req
tradeInsts, err := svr.tradeInstanceService.ListInstance(instIds...) tradeInsts, err := svr.tradeInstanceService.ListInstance(instIds...)
for _, inst := range tradeInsts { for _, inst := range tradeInsts {
if pbInst, ok := exchangeInstMap[inst.InstId]; ok { 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 pbInst.Leverages = inst.Leverages
} }
} }

11
pkg/aside/trade_instance_client.go

@ -61,16 +61,11 @@ func (c *TradeInstanceAside) getTradeInstance0(ctx context.Context, instId strin
} }
// ListExchangeTradeInstance 获取交易所支持的交易实例 // ListExchangeTradeInstance 获取交易所支持的交易实例
func (c *TradeInstanceAside) ListExchangeTradeInstance(ctx context.Context, exchange pb.ExchangeType) (exInsts []*entity.TradeInstanceExchange, err error) { func (c *TradeInstanceAside) ListExchangeTradeInstance(ctx context.Context, exchange pb.ExchangeType) (marketInsts []*pb.MarketTradeInstance, err error) {
rsp, err := c.marketClient.ListExchangeTradeInstance(ctx, &pb.ReqListExchangeTradeInstance{ rsp, err := c.marketClient.ListMarketTradeInstance(ctx, &pb.ReqListMarketTradeInstance{Exchange: exchange})
Exchanges: []pb.ExchangeType{exchange},
})
if err != nil { if err != nil {
return return
} }
for _, pbExInst := range rsp.ExchangeInsts { marketInsts = rsp.ExchangeInsts
exInst := mapping.Proto2ExchangeTradeInstance(pbExInst)
exInsts = append(exInsts, exInst)
}
return return
} }

1
pkg/types/instance.go

@ -9,5 +9,6 @@ type TradeInstance struct {
QuantitySz int32 // 交易量精度 QuantitySz int32 // 交易量精度
Status int32 // 交易所交易产品状态 Status int32 // 交易所交易产品状态
ExchangeInstId string // 交易所交易产品id ExchangeInstId string // 交易所交易产品id
Leverages []int32 // 交易产品支持杠杆
Exchange pb.ExchangeType // 当前处理交易产品交易所 Exchange pb.ExchangeType // 当前处理交易产品交易所
} }

Loading…
Cancel
Save