mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-16 15:09:57 +00:00
okx: Add fee fields for USDC pairs (#1244)
* okx: Add USDC quoted maker/taker fees * thrasher: nits * fix spelling --------- Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
This commit is contained in:
@@ -2158,42 +2158,36 @@ func (ok *Okx) GetFee(ctx context.Context, feeBuilder *exchange.FeeBuilder) (flo
|
||||
var fee float64
|
||||
switch feeBuilder.FeeType {
|
||||
case exchange.CryptocurrencyTradeFee:
|
||||
var responses []TradeFeeRate
|
||||
uly, err := ok.GetUnderlying(feeBuilder.Pair, asset.Spot)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
responses, err = ok.GetTradeFee(ctx, okxInstTypeSpot, uly, "")
|
||||
responses, err := ok.GetTradeFee(ctx, okxInstTypeSpot, uly, "")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
} else if len(responses) == 0 {
|
||||
return 0, errors.New("no trade fee response found")
|
||||
}
|
||||
if feeBuilder.IsMaker {
|
||||
if fee, err = strconv.ParseFloat(responses[0].FeeRateMaker, 64); err != nil || fee == 0 {
|
||||
fee, err = strconv.ParseFloat(responses[0].FeeRateMakerUSDT, 64)
|
||||
if err != nil {
|
||||
return fee, err
|
||||
}
|
||||
if feeBuilder.Pair.Quote.Equal(currency.USDC) {
|
||||
fee = responses[0].FeeRateMakerUSDC.Float64()
|
||||
} else if fee = responses[0].FeeRateMaker.Float64(); fee == 0 {
|
||||
fee = responses[0].FeeRateMakerUSDT.Float64()
|
||||
}
|
||||
} else {
|
||||
if fee, err = strconv.ParseFloat(responses[0].FeeRateTaker, 64); err != nil || fee == 0 {
|
||||
fee, err = strconv.ParseFloat(responses[0].FeeRateTakerUSDT, 64)
|
||||
if err != nil {
|
||||
return fee, err
|
||||
}
|
||||
if feeBuilder.Pair.Quote.Equal(currency.USDC) {
|
||||
fee = responses[0].FeeRateTakerUSDC.Float64()
|
||||
} else if fee = responses[0].FeeRateTaker.Float64(); fee == 0 {
|
||||
fee = responses[0].FeeRateTakerUSDT.Float64()
|
||||
}
|
||||
}
|
||||
if fee < 0 {
|
||||
fee = -fee
|
||||
if fee != 0 {
|
||||
fee = -fee // Negative fee rate means commission else rebate.
|
||||
}
|
||||
return fee * feeBuilder.Amount * feeBuilder.PurchasePrice, nil
|
||||
case exchange.OfflineTradeFee:
|
||||
return 0.0015 * feeBuilder.PurchasePrice * feeBuilder.Amount, nil
|
||||
}
|
||||
if fee < 0 {
|
||||
fee = 0
|
||||
}
|
||||
return fee, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1366,7 +1366,7 @@ func TestGetMaximumLoanOfInstrument(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFeeRate(t *testing.T) {
|
||||
func TestGetTradeFee(t *testing.T) {
|
||||
t.Parallel()
|
||||
sharedtestvalues.SkipTestIfCredentialsUnset(t, ok)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/thrasher-corp/gocryptotrader/common/convert"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/kline"
|
||||
@@ -1484,16 +1485,18 @@ type MaximumLoanInstrument struct {
|
||||
|
||||
// TradeFeeRate holds trade fee rate information for a given instrument type.
|
||||
type TradeFeeRate struct {
|
||||
Category string `json:"category"`
|
||||
DeliveryFeeRate string `json:"delivery"`
|
||||
Exercise string `json:"exercise"`
|
||||
InstrumentType asset.Item `json:"instType"`
|
||||
FeeRateLevel string `json:"level"`
|
||||
FeeRateMaker string `json:"maker"`
|
||||
FeeRateMakerUSDT string `json:"makerU"`
|
||||
FeeRateTaker string `json:"taker"`
|
||||
FeeRateTakerUSDT string `json:"takerU"`
|
||||
Timestamp okxUnixMilliTime `json:"ts"`
|
||||
Category string `json:"category"`
|
||||
DeliveryFeeRate string `json:"delivery"`
|
||||
Exercise string `json:"exercise"`
|
||||
InstrumentType asset.Item `json:"instType"`
|
||||
FeeRateLevel string `json:"level"`
|
||||
FeeRateMaker convert.StringToFloat64 `json:"maker"`
|
||||
FeeRateMakerUSDT convert.StringToFloat64 `json:"makerU"`
|
||||
FeeRateMakerUSDC convert.StringToFloat64 `json:"makerUSDC"`
|
||||
FeeRateTaker convert.StringToFloat64 `json:"taker"`
|
||||
FeeRateTakerUSDT convert.StringToFloat64 `json:"takerU"`
|
||||
FeeRateTakerUSDC convert.StringToFloat64 `json:"takerUSDC"`
|
||||
Timestamp okxUnixMilliTime `json:"ts"`
|
||||
}
|
||||
|
||||
// InterestAccruedData represents interest rate accrued response
|
||||
|
||||
Reference in New Issue
Block a user