diff --git a/anxhttp.go b/anxhttp.go
index b5d46f4f..a749ab64 100644
--- a/anxhttp.go
+++ b/anxhttp.go
@@ -100,6 +100,45 @@ func (a *ANX) SetDefaults() {
a.RESTPollingDelay = 10
}
+
+
+///
+func (a *ANX) InterfaceSetDefaults() {
+ a.Name = "ANX"
+ a.Enabled = true
+ a.TakerFee = 0.6
+ a.MakerFee = 0.3
+ a.Verbose = false
+ a.Websocket = false
+ println("This is working using interfaces")
+ a.RESTPollingDelay = 10
+}
+///
+
+
+//Setup is run on startup to setup exchange with config values
+func (a *ANX) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ a.SetEnabled(false)
+ } else {
+ a.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ a.SetAPIKeys(exch.APIKey, exch.APISecret)
+ a.RESTPollingDelay = exch.RESTPollingDelay
+ a.Verbose = exch.Verbose
+ a.Websocket = exch.Websocket
+ a.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ a.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ a.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+//Start is run if exchange is enabled, after Setup
+func(a *ANX) Start() {
+ if(a.Enabled) {
+ go a.Run()
+ }
+}
+
+
func (a *ANX) GetName() string {
return a.Name
}
@@ -112,6 +151,8 @@ func (a *ANX) IsEnabled() bool {
return a.Enabled
}
+
+
func (a *ANX) SetAPIKeys(apiKey, apiSecret string) {
if !a.AuthenticatedAPISupport {
return
diff --git a/bitfinexhttp.go b/bitfinexhttp.go
index 73de79fc..b120d5eb 100644
--- a/bitfinexhttp.go
+++ b/bitfinexhttp.go
@@ -195,6 +195,25 @@ func (b *Bitfinex) GetName() string {
return b.Name
}
+func (b *Bitfinex) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.APIKey, exch.APISecret)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (b *Bitfinex) Start() {
+ go b.Run()
+}
+
func (b *Bitfinex) SetEnabled(enabled bool) {
b.Enabled = enabled
}
diff --git a/bitstamphttp.go b/bitstamphttp.go
index 9d6ffdf7..7648863f 100644
--- a/bitstamphttp.go
+++ b/bitstamphttp.go
@@ -145,10 +145,29 @@ func (b *Bitstamp) SetDefaults() {
b.RESTPollingDelay = 10
}
+func (b *Bitstamp) Start() {
+ go b.Run()
+}
+
func (b *Bitstamp) GetName() string {
return b.Name
}
+func (b *Bitstamp) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
func (b *Bitstamp) SetEnabled(enabled bool) {
b.Enabled = enabled
}
diff --git a/brightonpeakhttp.go b/brightonpeakhttp.go
index b587c57e..469df746 100644
--- a/brightonpeakhttp.go
+++ b/brightonpeakhttp.go
@@ -45,6 +45,26 @@ func (b *BrightonPeak) SetEnabled(enabled bool) {
b.Enabled = enabled
}
+func (b *BrightonPeak) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (b *BrightonPeak) Start() {
+ go b.Run()
+}
+
+
func (b *BrightonPeak) IsEnabled() bool {
return b.Enabled
}
diff --git a/btcchttp.go b/btcchttp.go
index 06e93c02..7cad69a4 100644
--- a/btcchttp.go
+++ b/btcchttp.go
@@ -181,6 +181,26 @@ func (b *BTCC) SetDefaults() {
b.RESTPollingDelay = 10
}
+//Setup is run on startup to setup exchange with config values
+func (b *BTCC) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.APIKey, exch.APISecret)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+//Start is run if exchange is enabled, after Setup
+func(b *BTCC) Start() {
+ go b.Run()
+}
+
func (b *BTCC) GetName() string {
return b.Name
}
diff --git a/btcehttp.go b/btcehttp.go
index 7a42a06c..c4b15532 100644
--- a/btcehttp.go
+++ b/btcehttp.go
@@ -99,6 +99,26 @@ func (b *BTCE) IsEnabled() bool {
return b.Enabled
}
+func(b *BTCE) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.APIKey, exch.APISecret)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+
+ }
+}
+
+func(b *BTCE) Start() {
+ go b.Run()
+}
+
func (b *BTCE) SetAPIKeys(apiKey, apiSecret string) {
b.APIKey = apiKey
b.APISecret = apiSecret
diff --git a/btcmarkets.go b/btcmarkets.go
index e7d5c3e9..df2d2663 100644
--- a/btcmarkets.go
+++ b/btcmarkets.go
@@ -108,6 +108,26 @@ func (b *BTCMarkets) IsEnabled() bool {
return b.Enabled
}
+func (b *BTCMarkets) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ b.SetEnabled(false)
+ } else {
+ b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ b.SetAPIKeys(exch.APIKey, exch.APISecret)
+ b.RESTPollingDelay = exch.RESTPollingDelay
+ b.Verbose = exch.Verbose
+ b.Websocket = exch.Websocket
+ b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+
+ }
+}
+
+func(b *BTCMarkets) Start() {
+ go b.Run()
+}
+
func (b *BTCMarkets) SetAPIKeys(apiKey, apiSecret string) {
if !b.AuthenticatedAPISupport {
return
diff --git a/coinbasehttp.go b/coinbasehttp.go
index 005e585d..c836981d 100644
--- a/coinbasehttp.go
+++ b/coinbasehttp.go
@@ -143,6 +143,26 @@ func (c *Coinbase) IsEnabled() bool {
return c.Enabled
}
+func (c *Coinbase) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ c.SetEnabled(false)
+ } else {
+ c.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ c.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
+ c.RESTPollingDelay = exch.RESTPollingDelay
+ c.Verbose = exch.Verbose
+ c.Websocket = exch.Websocket
+ c.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ c.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ c.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+
+ }
+}
+
+func (c *Coinbase) Start() {
+ go c.Run()
+}
+
func (c *Coinbase) GetFee(maker bool) float64 {
if maker {
return c.MakerFee
diff --git a/geminihttp.go b/geminihttp.go
index 4acc43bb..25b88c0c 100644
--- a/geminihttp.go
+++ b/geminihttp.go
@@ -121,6 +121,25 @@ func (g *Gemini) IsEnabled() bool {
return g.Enabled
}
+func (g *Gemini) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ g.SetEnabled(false)
+ } else {
+ g.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ g.SetAPIKeys(exch.APIKey, exch.APISecret)
+ g.RESTPollingDelay = exch.RESTPollingDelay
+ g.Verbose = exch.Verbose
+ g.Websocket = exch.Websocket
+ g.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ g.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ g.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (g *Gemini) Start() {
+ go g.Run()
+}
+
func (g *Gemini) SetAPIKeys(apiKey, apiSecret string) {
g.APIKey = apiKey
g.APISecret = apiSecret
diff --git a/huobihttp.go b/huobihttp.go
index 042f2559..d2e677d4 100644
--- a/huobihttp.go
+++ b/huobihttp.go
@@ -63,6 +63,26 @@ func (h *HUOBI) IsEnabled() bool {
return h.Enabled
}
+
+func (h *HUOBI) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ h.SetEnabled(false)
+ } else {
+ h.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ h.SetAPIKeys(exch.APIKey, exch.APISecret)
+ h.RESTPollingDelay = exch.RESTPollingDelay
+ h.Verbose = exch.Verbose
+ h.Websocket = exch.Websocket
+ h.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ h.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ h.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (h *HUOBI) Start() {
+ go h.Run()
+}
+
func (h *HUOBI) SetAPIKeys(apiKey, apiSecret string) {
h.AccessKey = apiKey
h.SecretKey = apiSecret
diff --git a/interfaces.go b/interfaces.go
new file mode 100644
index 00000000..ff3a5715
--- /dev/null
+++ b/interfaces.go
@@ -0,0 +1,11 @@
+package main
+
+///
+type IBotExchange interface {
+ Setup(exch Exchanges)
+ Start()
+ SetDefaults()
+ GetName() string
+ IsEnabled() bool
+}
+///
\ No newline at end of file
diff --git a/itbithttp.go b/itbithttp.go
index e968785b..6939326b 100644
--- a/itbithttp.go
+++ b/itbithttp.go
@@ -70,6 +70,26 @@ func (i *ItBit) IsEnabled() bool {
return i.Enabled
}
+func (i *ItBit) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ i.SetEnabled(false)
+ } else {
+ i.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ i.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID)
+ i.RESTPollingDelay = exch.RESTPollingDelay
+ i.Verbose = exch.Verbose
+ i.Websocket = exch.Websocket
+ i.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ i.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ i.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (i *ItBit) Start() {
+ go i.Run()
+}
+
+
func (i *ItBit) SetAPIKeys(apiKey, apiSecret, userID string) {
i.ClientKey = apiKey
i.APISecret = apiSecret
diff --git a/kraken.go b/kraken.go
index fef1e055..6a597cbc 100644
--- a/kraken.go
+++ b/kraken.go
@@ -74,6 +74,27 @@ func (k *Kraken) IsEnabled() bool {
return k.Enabled
}
+
+func (k *Kraken) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ k.SetEnabled(false)
+ } else {
+ k.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ k.SetAPIKeys(exch.APIKey, exch.APISecret)
+ k.RESTPollingDelay = exch.RESTPollingDelay
+ k.Verbose = exch.Verbose
+ k.Websocket = exch.Websocket
+ k.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ k.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ k.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (k *Kraken) Start() {
+ go k.Run()
+}
+
+
func (k *Kraken) SetAPIKeys(apiKey, apiSecret string) {
k.ClientKey = apiKey
k.APISecret = apiSecret
diff --git a/lakebtchttp.go b/lakebtchttp.go
index 31d68774..6280f94c 100644
--- a/lakebtchttp.go
+++ b/lakebtchttp.go
@@ -79,6 +79,26 @@ func (l *LakeBTC) IsEnabled() bool {
return l.Enabled
}
+func (l *LakeBTC)Setup(exch Exchanges) {
+ if !exch.Enabled {
+ l.SetEnabled(false)
+ } else {
+ l.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ l.SetAPIKeys(exch.APIKey, exch.APISecret)
+ l.RESTPollingDelay = exch.RESTPollingDelay
+ l.Verbose = exch.Verbose
+ l.Websocket = exch.Websocket
+ l.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ l.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ l.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (l *LakeBTC) Start() {
+ go l.Run()
+}
+
+
func (l *LakeBTC) SetAPIKeys(apiKey, apiSecret string) {
l.Email = apiKey
l.APISecret = apiSecret
diff --git a/localbitcoinshttp.go b/localbitcoinshttp.go
index b27d811b..95f0cfad 100644
--- a/localbitcoinshttp.go
+++ b/localbitcoinshttp.go
@@ -58,6 +58,26 @@ func (l *LocalBitcoins) IsEnabled() bool {
return l.Enabled
}
+func (l *LocalBitcoins)Setup(exch Exchanges) {
+ if !exch.Enabled {
+ l.SetEnabled(false)
+ } else {
+ l.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ l.SetAPIKeys(exch.APIKey, exch.APISecret)
+ l.RESTPollingDelay = exch.RESTPollingDelay
+ l.Verbose = exch.Verbose
+ l.Websocket = exch.Websocket
+ l.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ l.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ l.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (l *LocalBitcoins) Start() {
+ go l.Run()
+}
+
+
func (l *LocalBitcoins) GetFee(maker bool) float64 {
if maker {
return l.MakerFee
diff --git a/main.go b/main.go
index 89925182..2d935866 100644
--- a/main.go
+++ b/main.go
@@ -33,12 +33,28 @@ type Exchange struct {
type Bot struct {
config Config
exchange Exchange
+ exchanges []IBotExchange
shutdown chan bool
}
var bot Bot
+func SetupBotConfiguration(s IBotExchange, exch Exchanges) {
+ if(s.GetName() == exch.Name) {
+ if(s.IsEnabled()) {
+ log.Println("Bot " + s.GetName() + " is enabled, starting")
+ s.Start()
+ }
+ }
+}
+
+
func main() {
+ ///
+ //var anx ANX
+ //exchCfg := ExchangeConfig{Name: "ANX" }
+
+ ///
HandleInterrupt()
log.Println("Loading config file config.json..")
@@ -94,26 +110,32 @@ func main() {
log.Printf("Available Exchanges: %d. Enabled Exchanges: %d.\n", len(bot.config.Exchanges), GetEnabledExchanges())
log.Println("Bot Exchange support:")
- bot.exchange.anx.SetDefaults()
- bot.exchange.kraken.SetDefaults()
- bot.exchange.btcc.SetDefaults()
- bot.exchange.bitstamp.SetDefaults()
- bot.exchange.brightonpeak.SetDefaults()
- bot.exchange.bitfinex.SetDefaults()
- bot.exchange.btce.SetDefaults()
- bot.exchange.btcmarkets.SetDefaults()
- bot.exchange.coinbase.SetDefaults()
- bot.exchange.gemini.SetDefaults()
- bot.exchange.okcoinChina.SetURL(OKCOIN_API_URL_CHINA)
- bot.exchange.okcoinChina.SetDefaults()
- bot.exchange.okcoinIntl.SetURL(OKCOIN_API_URL)
- bot.exchange.okcoinIntl.SetDefaults()
- bot.exchange.itbit.SetDefaults()
- bot.exchange.lakebtc.SetDefaults()
- bot.exchange.localbitcoins.SetDefaults()
- bot.exchange.poloniex.SetDefaults()
- bot.exchange.huobi.SetDefaults()
-
+ bot.exchanges = []IBotExchange{
+ &bot.exchange.anx,
+ &bot.exchange.kraken,
+ &bot.exchange.btcc,
+ &bot.exchange.bitstamp,
+ &bot.exchange.brightonpeak,
+ &bot.exchange.bitfinex,
+ &bot.exchange.btce,
+ &bot.exchange.btcmarkets,
+ &bot.exchange.coinbase,
+ &bot.exchange.gemini,
+ &bot.exchange.okcoinChina,
+ &bot.exchange.okcoinIntl,
+ &bot.exchange.itbit,
+ &bot.exchange.lakebtc,
+ &bot.exchange.localbitcoins,
+ &bot.exchange.poloniex,
+ &bot.exchange.huobi,
+ }
+ for i := 0; i < len(bot.exchanges); i++ {
+ if(bot.exchanges[i] != nil) {
+ bot.exchanges[i].SetDefaults()
+ log.Println("Bot: %s successfully set defaults", bot.exchanges[i].GetName())
+ }
+ }
+
err = RetrieveConfigCurrencyPairs(bot.config)
if err != nil {
@@ -126,246 +148,12 @@ func main() {
} else {
log.Printf("%s: Exchange support: %s\n", exch.Name, IsEnabled(exch.Enabled))
}
-
- if bot.exchange.anx.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.anx.SetEnabled(false)
- } else {
- bot.exchange.anx.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.anx.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.anx.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.anx.Verbose = exch.Verbose
- bot.exchange.anx.Websocket = exch.Websocket
- bot.exchange.anx.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.anx.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.anx.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.anx.Run()
- }
- } else if bot.exchange.btcc.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.btcc.SetEnabled(false)
- } else {
- bot.exchange.btcc.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.btcc.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.btcc.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.btcc.Verbose = exch.Verbose
- bot.exchange.btcc.Websocket = exch.Websocket
- bot.exchange.btcc.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.btcc.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.btcc.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.btcc.Run()
- }
- } else if bot.exchange.bitstamp.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.bitstamp.SetEnabled(false)
- } else {
- bot.exchange.bitstamp.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.bitstamp.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
- bot.exchange.bitstamp.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.bitstamp.Verbose = exch.Verbose
- bot.exchange.bitstamp.Websocket = exch.Websocket
- bot.exchange.bitstamp.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.bitstamp.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.bitstamp.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.bitstamp.Run()
- }
- } else if bot.exchange.bitfinex.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.bitfinex.SetEnabled(false)
- } else {
- bot.exchange.bitfinex.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.bitfinex.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.bitfinex.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.bitfinex.Verbose = exch.Verbose
- bot.exchange.bitfinex.Websocket = exch.Websocket
- bot.exchange.bitfinex.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.bitfinex.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.bitfinex.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.bitfinex.Run()
- }
- } else if bot.exchange.brightonpeak.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.brightonpeak.SetEnabled(false)
- } else {
- bot.exchange.brightonpeak.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.brightonpeak.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID)
- bot.exchange.brightonpeak.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.brightonpeak.Verbose = exch.Verbose
- bot.exchange.brightonpeak.Websocket = exch.Websocket
- bot.exchange.brightonpeak.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.brightonpeak.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.brightonpeak.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.brightonpeak.Run()
- }
- } else if bot.exchange.btce.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.btce.SetEnabled(false)
- } else {
- bot.exchange.btce.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.btce.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.btce.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.btce.Verbose = exch.Verbose
- bot.exchange.btce.Websocket = exch.Websocket
- bot.exchange.btce.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.btce.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.btce.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.btce.Run()
- }
- } else if bot.exchange.btcmarkets.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.btcmarkets.SetEnabled(false)
- } else {
- bot.exchange.btcmarkets.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.btcmarkets.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.btcmarkets.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.btcmarkets.Verbose = exch.Verbose
- bot.exchange.btcmarkets.Websocket = exch.Websocket
- bot.exchange.btcmarkets.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.btcmarkets.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.btcmarkets.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.btcmarkets.Run()
- }
- } else if bot.exchange.coinbase.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.coinbase.SetEnabled(false)
- } else {
- bot.exchange.coinbase.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.coinbase.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
- bot.exchange.coinbase.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.coinbase.Verbose = exch.Verbose
- bot.exchange.coinbase.Websocket = exch.Websocket
- bot.exchange.coinbase.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.coinbase.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.coinbase.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.coinbase.Run()
- }
- } else if bot.exchange.gemini.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.gemini.SetEnabled(false)
- } else {
- bot.exchange.gemini.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.gemini.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.gemini.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.gemini.Verbose = exch.Verbose
- bot.exchange.gemini.Websocket = exch.Websocket
- bot.exchange.gemini.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.gemini.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.gemini.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.gemini.Run()
- }
- } else if bot.exchange.okcoinChina.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.okcoinChina.SetEnabled(false)
- } else {
- bot.exchange.okcoinChina.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.okcoinChina.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.okcoinChina.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.okcoinChina.Verbose = exch.Verbose
- bot.exchange.okcoinChina.Websocket = exch.Websocket
- bot.exchange.okcoinChina.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.okcoinChina.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.okcoinChina.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.okcoinChina.Run()
- }
- } else if bot.exchange.okcoinIntl.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.okcoinIntl.SetEnabled(false)
- } else {
- bot.exchange.okcoinIntl.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.okcoinIntl.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.okcoinIntl.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.okcoinIntl.Verbose = exch.Verbose
- bot.exchange.okcoinIntl.Websocket = exch.Websocket
- bot.exchange.okcoinIntl.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.okcoinIntl.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.okcoinIntl.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.okcoinIntl.Run()
- }
- } else if bot.exchange.itbit.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.itbit.SetEnabled(false)
- } else {
- bot.exchange.itbit.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.itbit.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID)
- bot.exchange.itbit.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.itbit.Verbose = exch.Verbose
- bot.exchange.itbit.Websocket = exch.Websocket
- bot.exchange.itbit.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.itbit.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.itbit.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.itbit.Run()
- }
- } else if bot.exchange.kraken.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.kraken.SetEnabled(false)
- } else {
- bot.exchange.kraken.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.kraken.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.kraken.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.kraken.Verbose = exch.Verbose
- bot.exchange.kraken.Websocket = exch.Websocket
- bot.exchange.kraken.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.kraken.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.kraken.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.kraken.Run()
- }
- } else if bot.exchange.lakebtc.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.lakebtc.SetEnabled(false)
- } else {
- bot.exchange.lakebtc.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.lakebtc.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.lakebtc.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.lakebtc.Verbose = exch.Verbose
- bot.exchange.lakebtc.Websocket = exch.Websocket
- bot.exchange.lakebtc.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.lakebtc.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.lakebtc.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.lakebtc.Run()
- }
- } else if bot.exchange.localbitcoins.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.localbitcoins.SetEnabled(false)
- } else {
- bot.exchange.localbitcoins.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.localbitcoins.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.localbitcoins.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.localbitcoins.Verbose = exch.Verbose
- bot.exchange.localbitcoins.Websocket = exch.Websocket
- bot.exchange.localbitcoins.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.localbitcoins.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.localbitcoins.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.localbitcoins.Run()
- }
- } else if bot.exchange.poloniex.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.poloniex.SetEnabled(false)
- } else {
- bot.exchange.poloniex.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.poloniex.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.poloniex.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.poloniex.Verbose = exch.Verbose
- bot.exchange.poloniex.Websocket = exch.Websocket
- bot.exchange.poloniex.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.poloniex.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.poloniex.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.poloniex.Run()
- }
- } else if bot.exchange.huobi.GetName() == exch.Name {
- if !exch.Enabled {
- bot.exchange.huobi.SetEnabled(false)
- } else {
- bot.exchange.huobi.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
- bot.exchange.huobi.SetAPIKeys(exch.APIKey, exch.APISecret)
- bot.exchange.huobi.RESTPollingDelay = exch.RESTPollingDelay
- bot.exchange.huobi.Verbose = exch.Verbose
- bot.exchange.huobi.Websocket = exch.Websocket
- bot.exchange.huobi.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
- bot.exchange.huobi.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
- bot.exchange.huobi.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
- go bot.exchange.huobi.Run()
- }
- }
+
+ for i := 0; i < len(bot.exchanges); i++ {
+ if(bot.exchanges[i] != nil) {
+ SetupBotConfiguration(bot.exchanges[i], exch)
+ }
+ }
}
<-bot.shutdown
Shutdown()
diff --git a/okcoinhttp.go b/okcoinhttp.go
index 3f0868ac..f32f4028 100644
--- a/okcoinhttp.go
+++ b/okcoinhttp.go
@@ -176,6 +176,25 @@ func (o *OKCoin) IsEnabled() bool {
return o.Enabled
}
+func (o *OKCoin) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ o.SetEnabled(false)
+ } else {
+ o.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ o.SetAPIKeys(exch.APIKey, exch.APISecret)
+ o.RESTPollingDelay = exch.RESTPollingDelay
+ o.Verbose = exch.Verbose
+ o.Websocket = exch.Websocket
+ o.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ o.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ o.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (o *OKCoin) Start() {
+ go o.Run()
+}
+
func (o *OKCoin) SetURL(url string) {
o.APIUrl = url
}
diff --git a/poloniexhttp.go b/poloniexhttp.go
index 43ac589c..b08b1158 100644
--- a/poloniexhttp.go
+++ b/poloniexhttp.go
@@ -87,6 +87,26 @@ func (p *Poloniex) IsEnabled() bool {
return p.Enabled
}
+
+func (p *Poloniex) Setup(exch Exchanges) {
+ if !exch.Enabled {
+ p.SetEnabled(false)
+ } else {
+ p.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
+ p.SetAPIKeys(exch.APIKey, exch.APISecret)
+ p.RESTPollingDelay = exch.RESTPollingDelay
+ p.Verbose = exch.Verbose
+ p.Websocket = exch.Websocket
+ p.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
+ p.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
+ p.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
+ }
+}
+
+func (p *Poloniex) Start() {
+ go p.Run()
+}
+
func (p *Poloniex) SetAPIKeys(apiKey, apiSecret string) {
p.AccessKey = apiKey
p.SecretKey = apiSecret