mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-18 23:16:49 +00:00
Adds more international withdrawal fee details for bithumb, gemini, itbit and lakebtc
This commit is contained in:
@@ -577,6 +577,8 @@ func (b *Bithumb) GetFee(feeBuilder exchange.FeeBuilder) (float64, error) {
|
||||
fee = getDepositFee(feeBuilder.FirstCurrency, feeBuilder.Amount)
|
||||
case exchange.CryptocurrencyWithdrawalFee:
|
||||
fee = getWithdrawalFee(feeBuilder.FirstCurrency)
|
||||
case exchange.InternationalBankWithdrawalFee:
|
||||
fee = getWithdrawalFee(feeBuilder.CurrencyItem)
|
||||
}
|
||||
if fee < 0 {
|
||||
fee = 0
|
||||
|
||||
@@ -55,6 +55,7 @@ const (
|
||||
Skrill InternationalBankTransactionType = "skrill"
|
||||
Simplex InternationalBankTransactionType = "simplex"
|
||||
SEPA InternationalBankTransactionType = "sepa"
|
||||
Swift InternationalBankTransactionType = "swift"
|
||||
RapidTransfer InternationalBankTransactionType = "rapidTransfer"
|
||||
MisterTangoSEPA InternationalBankTransactionType = "misterTangoSepa"
|
||||
Qiwi InternationalBankTransactionType = "qiwi"
|
||||
|
||||
@@ -519,6 +519,8 @@ func (g *Gemini) GetFee(feeBuilder exchange.FeeBuilder) (float64, error) {
|
||||
case exchange.CryptocurrencyWithdrawalFee:
|
||||
// TODO: no free transactions after 10; Need database to know how many trades have been done
|
||||
// Could do via trade history, but would require analysis of response and dates to determine level of fee
|
||||
case exchange.InternationalBankWithdrawalFee:
|
||||
fee = 0
|
||||
}
|
||||
if fee < 0 {
|
||||
fee = 0
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
"github.com/thrasher-/gocryptotrader/common"
|
||||
"github.com/thrasher-/gocryptotrader/config"
|
||||
"github.com/thrasher-/gocryptotrader/currency/symbol"
|
||||
"github.com/thrasher-/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-/gocryptotrader/exchanges/ticker"
|
||||
@@ -375,7 +376,10 @@ func (i *ItBit) GetFee(feeBuilder exchange.FeeBuilder) (float64, error) {
|
||||
switch feeBuilder.FeeType {
|
||||
case exchange.CryptocurrencyTradeFee:
|
||||
fee = calculateTradingFee(feeBuilder.PurchasePrice, feeBuilder.Amount, feeBuilder.IsMaker)
|
||||
case exchange.InternationalBankWithdrawalFee:
|
||||
fee = getInternationalBankWithdrawalFee(feeBuilder.CurrencyItem, feeBuilder.Amount, feeBuilder.BankTransactionType)
|
||||
}
|
||||
|
||||
if fee < 0 {
|
||||
fee = 0
|
||||
}
|
||||
@@ -392,3 +396,13 @@ func calculateTradingFee(purchasePrice, amount float64, isMaker bool) float64 {
|
||||
}
|
||||
return feePercent * purchasePrice * amount
|
||||
}
|
||||
|
||||
func getInternationalBankWithdrawalFee(currency string, amount float64, bankTransactionType exchange.InternationalBankTransactionType) float64 {
|
||||
var fee float64
|
||||
if (bankTransactionType == exchange.Swift || bankTransactionType == exchange.WireTransfer) && currency == symbol.USD {
|
||||
fee = 40
|
||||
} else if (bankTransactionType == exchange.SEPA || bankTransactionType == exchange.WireTransfer) && currency == symbol.EUR {
|
||||
fee = 1
|
||||
}
|
||||
return fee
|
||||
}
|
||||
|
||||
@@ -224,8 +224,8 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.CurrencyItem = symbol.USD
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Recieved: %f", float64(0), resp)
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(40) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Recieved: %f", float64(40), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,6 +354,9 @@ func (l *LakeBTC) GetFee(feeBuilder exchange.FeeBuilder) (float64, error) {
|
||||
fee = calculateTradingFee(feeBuilder.PurchasePrice, feeBuilder.Amount, feeBuilder.IsMaker)
|
||||
case exchange.CyptocurrencyDepositFee:
|
||||
fee = getCryptocurrencyWithdrawalFee(feeBuilder.FirstCurrency)
|
||||
case exchange.InternationalBankWithdrawalFee:
|
||||
// fees for withdrawals are dynamic. They cannot be calculated in advance
|
||||
// As they are manually performed via the website, it can only be determined when submitting the request
|
||||
}
|
||||
|
||||
if fee < 0 {
|
||||
|
||||
Reference in New Issue
Block a user