mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-10 09:11:55 +00:00
commit
54e0e1024c
|
@ -211,6 +211,7 @@ func toGlobalTradeV3(t v3.Trade) ([]types.Trade, error) {
|
|||
IsMaker: t.IsMaker(),
|
||||
Fee: t.Fee,
|
||||
FeeCurrency: toGlobalCurrency(t.FeeCurrency),
|
||||
FeeDiscounted: t.FeeDiscounted,
|
||||
QuoteQuantity: t.Funds,
|
||||
Time: types.Time(t.CreatedAt),
|
||||
IsMargin: isMargin,
|
||||
|
@ -227,6 +228,7 @@ func toGlobalTradeV3(t v3.Trade) ([]types.Trade, error) {
|
|||
bidTrade.OrderID = t.SelfTradeBidOrderID
|
||||
bidTrade.Fee = t.SelfTradeBidFee
|
||||
bidTrade.FeeCurrency = toGlobalCurrency(t.SelfTradeBidFeeCurrency)
|
||||
bidTrade.FeeDiscounted = t.SelfTradeBidFeeDiscounted
|
||||
bidTrade.IsBuyer = !trade.IsBuyer
|
||||
bidTrade.IsMaker = !trade.IsMaker
|
||||
trades = append(trades, bidTrade)
|
||||
|
@ -285,9 +287,6 @@ func convertWebSocketTrade(t max.TradeUpdate) (*types.Trade, error) {
|
|||
// skip trade ID that is the same. however this should not happen
|
||||
var side = toGlobalSideType(t.Side)
|
||||
|
||||
// trade time
|
||||
mts := time.Unix(0, t.Timestamp*int64(time.Millisecond))
|
||||
|
||||
return &types.Trade{
|
||||
ID: t.ID,
|
||||
OrderID: t.OrderID,
|
||||
|
@ -300,8 +299,9 @@ 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(mts),
|
||||
Time: types.Time(t.Timestamp.Time()),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -104,8 +104,8 @@ type TradeUpdate struct {
|
|||
FeeCurrency string `json:"fc"`
|
||||
FeeDiscounted bool `json:"fd"`
|
||||
|
||||
Timestamp int64 `json:"T"`
|
||||
UpdateTime int64 `json:"TU"`
|
||||
Timestamp types.MillisecondTimestamp `json:"T"`
|
||||
UpdateTime types.MillisecondTimestamp `json:"TU"`
|
||||
|
||||
OrderID uint64 `json:"oi"`
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/c9s/bbgo/pkg/exchange/max/maxapi"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"regexp"
|
||||
|
@ -39,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
|
||||
}
|
||||
|
|
|
@ -5,23 +5,32 @@ import (
|
|||
"github.com/c9s/bbgo/pkg/types"
|
||||
)
|
||||
|
||||
type Liquidity string
|
||||
|
||||
const (
|
||||
LiquidityMaker = "maker"
|
||||
LiquidityTaker = "taker"
|
||||
)
|
||||
|
||||
type Trade struct {
|
||||
ID uint64 `json:"id" db:"exchange_id"`
|
||||
WalletType WalletType `json:"wallet_type,omitempty"`
|
||||
Price fixedpoint.Value `json:"price"`
|
||||
Volume fixedpoint.Value `json:"volume"`
|
||||
Funds fixedpoint.Value `json:"funds"`
|
||||
Market string `json:"market"`
|
||||
MarketName string `json:"market_name"`
|
||||
CreatedAt types.MillisecondTimestamp `json:"created_at"`
|
||||
Side string `json:"side"`
|
||||
OrderID uint64 `json:"order_id"`
|
||||
Fee fixedpoint.Value `json:"fee"` // float number as string
|
||||
FeeCurrency string `json:"fee_currency"`
|
||||
Liquidity string `json:"liquidity"`
|
||||
SelfTradeBidFee fixedpoint.Value `json:"self_trade_bid_fee"`
|
||||
SelfTradeBidFeeCurrency string `json:"self_trade_bid_fee_currency"`
|
||||
SelfTradeBidOrderID uint64 `json:"self_trade_bid_order_id"`
|
||||
ID uint64 `json:"id" db:"exchange_id"`
|
||||
WalletType WalletType `json:"wallet_type,omitempty"`
|
||||
Price fixedpoint.Value `json:"price"`
|
||||
Volume fixedpoint.Value `json:"volume"`
|
||||
Funds fixedpoint.Value `json:"funds"`
|
||||
Market string `json:"market"`
|
||||
MarketName string `json:"market_name"`
|
||||
CreatedAt types.MillisecondTimestamp `json:"created_at"`
|
||||
Side string `json:"side"`
|
||||
OrderID uint64 `json:"order_id"`
|
||||
Fee fixedpoint.Value `json:"fee"` // float number as string
|
||||
FeeCurrency string `json:"fee_currency"`
|
||||
FeeDiscounted bool `json:"fee_discounted"`
|
||||
Liquidity Liquidity `json:"liquidity"`
|
||||
SelfTradeBidFee fixedpoint.Value `json:"self_trade_bid_fee"`
|
||||
SelfTradeBidFeeCurrency string `json:"self_trade_bid_fee_currency"`
|
||||
SelfTradeBidFeeDiscounted bool `json:"self_trade_bid_fee_discounted"`
|
||||
SelfTradeBidOrderID uint64 `json:"self_trade_bid_order_id"`
|
||||
}
|
||||
|
||||
func (t Trade) IsBuyer() bool {
|
||||
|
|
|
@ -40,7 +40,7 @@ func placeholdersOf(record interface{}) []string {
|
|||
for i := 0; i < rt.NumField(); i++ {
|
||||
fieldType := rt.Field(i)
|
||||
if tag, ok := fieldType.Tag.Lookup("db"); ok {
|
||||
if tag == "gid" {
|
||||
if tag == "gid" || tag == "-" || tag == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ func fieldsNamesOf(record interface{}) []string {
|
|||
for i := 0; i < rt.NumField(); i++ {
|
||||
fieldType := rt.Field(i)
|
||||
if tag, ok := fieldType.Tag.Lookup("db"); ok {
|
||||
if tag == "gid" {
|
||||
if tag == "gid" || tag == "-" || tag == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
|
@ -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"`
|
||||
|
|
Loading…
Reference in New Issue
Block a user