From fcca3f6432b08b6d2230ffad626b80650c9152a2 Mon Sep 17 00:00:00 2001 From: c9s Date: Tue, 25 Jul 2023 13:40:10 +0800 Subject: [PATCH] types: add fee discounted field to the global trade struct --- pkg/exchange/max/convert.go | 1 + pkg/exchange/max/maxapi/userdata_test.go | 2 +- .../max/maxapi/v3/get_wallet_trades_request_requestgen.go | 2 +- pkg/types/trade.go | 6 ++++++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/exchange/max/convert.go b/pkg/exchange/max/convert.go index 3368ffc7b..4c578bde6 100644 --- a/pkg/exchange/max/convert.go +++ b/pkg/exchange/max/convert.go @@ -297,6 +297,7 @@ func convertWebSocketTrade(t max.TradeUpdate) (*types.Trade, error) { IsMaker: t.Maker, Fee: t.Fee, FeeCurrency: toGlobalCurrency(t.FeeCurrency), + FeeDiscounted: t.FeeDiscounted, QuoteQuantity: t.Price.Mul(t.Volume), Time: types.Time(t.Timestamp.Time()), }, nil diff --git a/pkg/exchange/max/maxapi/userdata_test.go b/pkg/exchange/max/maxapi/userdata_test.go index 2967e16df..5c4880ce5 100644 --- a/pkg/exchange/max/maxapi/userdata_test.go +++ b/pkg/exchange/max/maxapi/userdata_test.go @@ -39,7 +39,7 @@ func Test_parseTradeSnapshotEvent(t *testing.T) { assert.Equal(t, 1, len(evt.Trades)) assert.Equal(t, "bid", evt.Trades[0].Side) assert.Equal(t, "ethtwd", evt.Trades[0].Market) - assert.Equal(t, int64(1521726960357), evt.Trades[0].Timestamp) + assert.Equal(t, int64(1521726960357), evt.Trades[0].Timestamp.Time().UnixMilli()) assert.Equal(t, "3.2", evt.Trades[0].Fee.String()) assert.Equal(t, "twd", evt.Trades[0].FeeCurrency) } diff --git a/pkg/exchange/max/maxapi/v3/get_wallet_trades_request_requestgen.go b/pkg/exchange/max/maxapi/v3/get_wallet_trades_request_requestgen.go index 2baeeb611..ec7614c10 100644 --- a/pkg/exchange/max/maxapi/v3/get_wallet_trades_request_requestgen.go +++ b/pkg/exchange/max/maxapi/v3/get_wallet_trades_request_requestgen.go @@ -38,7 +38,7 @@ func (g *GetWalletTradesRequest) Limit(limit uint64) *GetWalletTradesRequest { return g } -func (g *GetWalletTradesRequest) WalletType(walletType max.WalletType) *GetWalletTradesRequest { +func (g *GetWalletTradesRequest) WalletType(walletType WalletType) *GetWalletTradesRequest { g.walletType = walletType return g } diff --git a/pkg/types/trade.go b/pkg/types/trade.go index 0db78b6ef..f80b864a2 100644 --- a/pkg/types/trade.go +++ b/pkg/types/trade.go @@ -67,6 +67,12 @@ type Trade struct { Fee fixedpoint.Value `json:"fee" db:"fee"` FeeCurrency string `json:"feeCurrency" db:"fee_currency"` + // FeeDiscounted is an optional field which indicates whether the trade is using the platform fee token for discount. + // When FeeDiscounted = true, means the fee is deducted outside the trade + // By default, it's set to false. + // This is only used by the MAX exchange + FeeDiscounted bool `json:"feeDiscounted" db:"-"` + IsMargin bool `json:"isMargin" db:"is_margin"` IsFutures bool `json:"isFutures" db:"is_futures"` IsIsolated bool `json:"isIsolated" db:"is_isolated"`