mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-23 15:10:15 +00:00
Added helper functions, exchange method to set currencies and bug fixes
This commit is contained in:
@@ -73,6 +73,7 @@ type IBotExchange interface {
|
||||
GetAvailableCurrencies() []pair.CurrencyPair
|
||||
GetExchangeAccountInfo() (AccountInfo, error)
|
||||
GetAuthenticatedAPISupport() bool
|
||||
SetCurrencies(pairs []pair.CurrencyPair, enabledPairs bool) error
|
||||
}
|
||||
|
||||
// SetAssetTypes checks the exchange asset types (whether it supports SPOT,
|
||||
@@ -295,6 +296,32 @@ func (e *Base) SetAPIKeys(APIKey, APISecret, ClientID string, b64Decode bool) {
|
||||
}
|
||||
}
|
||||
|
||||
// SetCurrencies sets the exchange currency pairs for either enabledPairs or
|
||||
// availablePairs
|
||||
func (e *Base) SetCurrencies(pairs []pair.CurrencyPair, enabledPairs bool) error {
|
||||
cfg := config.GetConfig()
|
||||
exchCfg, err := cfg.GetExchangeConfig(e.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var pairsStr []string
|
||||
for x := range pairs {
|
||||
pairsStr = append(pairsStr, pairs[x].Display(exchCfg.ConfigCurrencyPairFormat.Delimiter,
|
||||
exchCfg.ConfigCurrencyPairFormat.Uppercase).String())
|
||||
}
|
||||
|
||||
if enabledPairs {
|
||||
exchCfg.EnabledPairs = common.JoinStrings(pairsStr, ",")
|
||||
e.EnabledPairs = pairsStr
|
||||
} else {
|
||||
exchCfg.AvailablePairs = common.JoinStrings(pairsStr, ",")
|
||||
e.AvailablePairs = pairsStr
|
||||
}
|
||||
|
||||
return cfg.UpdateExchangeConfig(exchCfg)
|
||||
}
|
||||
|
||||
// UpdateEnabledCurrencies is a method that sets new pairs to the current
|
||||
// exchange. Setting force to true upgrades the enabled currencies
|
||||
func (e *Base) UpdateEnabledCurrencies(exchangeProducts []string, force bool) error {
|
||||
|
||||
@@ -484,6 +484,35 @@ func TestSetAPIKeys(t *testing.T) {
|
||||
SetAPIKeys.SetAPIKeys("RocketMan", "Digereedoo", "007", true)
|
||||
}
|
||||
|
||||
func TestSetCurrencies(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestSetCurrencies failed to load config")
|
||||
}
|
||||
|
||||
UAC := Base{Name: "ASDF"}
|
||||
UAC.AvailablePairs = []string{"ETHLTC", "LTCBTC"}
|
||||
UAC.EnabledPairs = []string{"ETHLTC"}
|
||||
newPair := pair.NewCurrencyPair("ETH", "USDT")
|
||||
|
||||
err = UAC.SetCurrencies([]pair.CurrencyPair{newPair}, true)
|
||||
if err == nil {
|
||||
t.Fatal("Test failed. TestSetCurrencies returned nil error on non-existant exchange")
|
||||
}
|
||||
|
||||
UAC.Name = "ANX"
|
||||
UAC.SetCurrencies([]pair.CurrencyPair{newPair}, true)
|
||||
if !pair.Contains(UAC.GetEnabledCurrencies(), newPair) {
|
||||
t.Fatal("Test failed. TestSetCurrencies failed to set currencies")
|
||||
}
|
||||
|
||||
UAC.SetCurrencies([]pair.CurrencyPair{newPair}, false)
|
||||
if !pair.Contains(UAC.GetAvailableCurrencies(), newPair) {
|
||||
t.Fatal("Test failed. TestSetCurrencies failed to set currencies")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateEnabledCurrencies(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile)
|
||||
|
||||
@@ -173,7 +173,13 @@ func (g *Gemini) GetTicker(currencyPair string) (Ticker, error) {
|
||||
ticker.Last = resp.Last
|
||||
|
||||
ticker.Volume.Currency, _ = strconv.ParseFloat(resp.Volume[currencyPair[0:3]].(string), 64)
|
||||
ticker.Volume.USD, _ = strconv.ParseFloat(resp.Volume["USD"].(string), 64)
|
||||
|
||||
if common.StringContains(currencyPair, "USD") {
|
||||
ticker.Volume.USD, _ = strconv.ParseFloat(resp.Volume["USD"].(string), 64)
|
||||
} else {
|
||||
ticker.Volume.ETH, _ = strconv.ParseFloat(resp.Volume["ETH"].(string), 64)
|
||||
ticker.Volume.BTC, _ = strconv.ParseFloat(resp.Volume["BTC"].(string), 64)
|
||||
}
|
||||
|
||||
time, _ := resp.Volume["timestamp"].(float64)
|
||||
ticker.Volume.Timestamp = int64(time)
|
||||
|
||||
@@ -8,6 +8,8 @@ type Ticker struct {
|
||||
Volume struct {
|
||||
Currency float64
|
||||
USD float64
|
||||
BTC float64
|
||||
ETH float64
|
||||
Timestamp int64
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,12 +101,12 @@ func (o *OKCoin) SetDefaults() {
|
||||
o.APIUrl = OKCOIN_API_URL
|
||||
o.Name = "OKCOIN International"
|
||||
o.WebsocketURL = OKCOIN_WEBSOCKET_URL
|
||||
okcoinDefaultsSet = true
|
||||
o.setCurrencyPairFormats()
|
||||
} else {
|
||||
o.APIUrl = OKCOIN_API_URL_CHINA
|
||||
o.Name = "OKCOIN China"
|
||||
o.WebsocketURL = OKCOIN_WEBSOCKET_URL_CHINA
|
||||
okcoinDefaultsSet = true
|
||||
o.setCurrencyPairFormats()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user