mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-22 23:16:48 +00:00
Merge branch 'master' into engine
This commit is contained in:
@@ -58,7 +58,6 @@ const (
|
||||
// Bitstamp is the overarching type across the bitstamp package
|
||||
type Bitstamp struct {
|
||||
exchange.Base
|
||||
Balance Balances
|
||||
WebsocketConn *wshandler.WebsocketConnection
|
||||
}
|
||||
|
||||
@@ -68,15 +67,15 @@ func (b *Bitstamp) GetFee(feeBuilder *exchange.FeeBuilder) (float64, error) {
|
||||
|
||||
switch feeBuilder.FeeType {
|
||||
case exchange.CryptocurrencyTradeFee:
|
||||
var err error
|
||||
b.Balance, err = b.GetBalance()
|
||||
balance, err := b.GetBalance()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
fee = b.CalculateTradingFee(feeBuilder.Pair.Base,
|
||||
feeBuilder.Pair.Quote,
|
||||
feeBuilder.PurchasePrice,
|
||||
feeBuilder.Amount)
|
||||
feeBuilder.Amount,
|
||||
balance)
|
||||
case exchange.CyptocurrencyDepositFee:
|
||||
fee = 0
|
||||
case exchange.InternationalBankDepositFee:
|
||||
@@ -121,20 +120,20 @@ func getInternationalBankDepositFee(amount float64) float64 {
|
||||
}
|
||||
|
||||
// CalculateTradingFee returns fee on a currency pair
|
||||
func (b *Bitstamp) CalculateTradingFee(base, quote currency.Code, purchasePrice, amount float64) float64 {
|
||||
func (b *Bitstamp) CalculateTradingFee(base, quote currency.Code, purchasePrice, amount float64, balances *Balances) float64 {
|
||||
var fee float64
|
||||
|
||||
switch base.String() + quote.String() {
|
||||
case currency.BTC.String() + currency.USD.String():
|
||||
fee = b.Balance.BTCUSDFee
|
||||
fee = balances.BTCUSDFee
|
||||
case currency.BTC.String() + currency.EUR.String():
|
||||
fee = b.Balance.BTCEURFee
|
||||
fee = balances.BTCEURFee
|
||||
case currency.XRP.String() + currency.EUR.String():
|
||||
fee = b.Balance.XRPEURFee
|
||||
fee = balances.XRPEURFee
|
||||
case currency.XRP.String() + currency.USD.String():
|
||||
fee = b.Balance.XRPUSDFee
|
||||
fee = balances.XRPUSDFee
|
||||
case currency.EUR.String() + currency.USD.String():
|
||||
fee = b.Balance.EURUSDFee
|
||||
fee = balances.EURUSDFee
|
||||
default:
|
||||
fee = 0
|
||||
}
|
||||
@@ -259,9 +258,9 @@ func (b *Bitstamp) GetEURUSDConversionRate() (EURUSDConversionRate, error) {
|
||||
}
|
||||
|
||||
// GetBalance returns full balance of currency held on the exchange
|
||||
func (b *Bitstamp) GetBalance() (Balances, error) {
|
||||
func (b *Bitstamp) GetBalance() (*Balances, error) {
|
||||
var balance Balances
|
||||
return balance,
|
||||
return &balance,
|
||||
b.SendAuthenticatedHTTPRequest(bitstampAPIBalance, true, nil, &balance)
|
||||
}
|
||||
|
||||
|
||||
@@ -141,21 +141,23 @@ func TestGetFee(t *testing.T) {
|
||||
|
||||
func TestCalculateTradingFee(t *testing.T) {
|
||||
t.Parallel()
|
||||
b.Balance.BTCUSDFee = 1
|
||||
b.Balance.BTCEURFee = 0
|
||||
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 0, 0); resp != 0 {
|
||||
var newBalance = new(Balances)
|
||||
newBalance.BTCUSDFee = 1
|
||||
newBalance.BTCEURFee = 0
|
||||
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 0, 0, newBalance); resp != 0 {
|
||||
t.Error("Test Failed - GetFee() error")
|
||||
}
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 2, 2); resp != float64(4) {
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 2, 2, newBalance); resp != float64(4) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(4), resp)
|
||||
}
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.EUR, 2, 2); resp != float64(0) {
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.EUR, 2, 2, newBalance); resp != float64(0) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
dummy1, dummy2 := currency.NewCode(""), currency.NewCode("")
|
||||
if resp := b.CalculateTradingFee(dummy1, dummy2, 0, 0); resp != 0 {
|
||||
if resp := b.CalculateTradingFee(dummy1, dummy2, 0, 0, newBalance); resp != 0 {
|
||||
t.Error("Test Failed - GetFee() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
@@ -164,7 +163,7 @@ func HTTPRecord(res *http.Response, service string, respContents []byte) error {
|
||||
|
||||
mockRespVals, urlErr := url.ParseQuery(mockResponses[i].BodyParams)
|
||||
if urlErr != nil {
|
||||
log.Fatal(urlErr)
|
||||
return urlErr
|
||||
}
|
||||
|
||||
if MatchURLVals(respQueryVals, mockRespVals) {
|
||||
|
||||
Reference in New Issue
Block a user