Added Authenticated API variable to toggle on/off private authentication support.

This commit is contained in:
Adrian Gallagher
2015-05-11 18:20:57 +10:00
parent 70b312d377
commit dd3ae3f23b
17 changed files with 393 additions and 326 deletions

View File

@@ -24,16 +24,17 @@ const (
)
type ANX struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APIKey, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIKey, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
type ANXOrder struct {
@@ -112,12 +113,16 @@ func (a *ANX) IsEnabled() bool {
}
func (a *ANX) SetAPIKeys(apiKey, apiSecret string) {
if !a.AuthenticatedAPISupport {
return
}
a.APIKey = apiKey
result, err := Base64Decode(apiSecret)
if err != nil {
log.Printf("%s unable to decode secret key.", a.GetName())
a.Enabled = false
log.Printf("%s unable to decode secret key. Authenticated API support disabled.", a.GetName())
a.AuthenticatedAPISupport = true
return
}

View File

@@ -141,23 +141,24 @@ type SymbolsDetails struct {
}
type Bitfinex struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APIKey, APISecret string
Ticker BitfinexTicker
Stats []BitfinexStats
Orderbook BitfinexOrderbook
Trades []TradeStructure
SymbolsDetails []SymbolsDetails
Fees []BitfinexFee
ActiveOrders []BitfinexActiveOrder
AccountBalance []BitfinexBalance
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIKey, APISecret string
Ticker BitfinexTicker
Stats []BitfinexStats
Orderbook BitfinexOrderbook
Trades []TradeStructure
SymbolsDetails []SymbolsDetails
Fees []BitfinexFee
ActiveOrders []BitfinexActiveOrder
AccountBalance []BitfinexBalance
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
func (b *Bitfinex) SetDefaults() {

View File

@@ -36,6 +36,7 @@ type Bitstamp struct {
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
ClientID, APIKey, APISecret string
Ticker BitstampTicker
Orderbook Orderbook

View File

@@ -39,16 +39,17 @@ const (
)
type BTCChina struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APISecret, APIKey string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APISecret, APIKey string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
type BTCChinaTicker struct {

View File

@@ -27,17 +27,18 @@ const (
)
type BTCE struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APIKey, APISecret string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Ticker map[string]BTCeTicker
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIKey, APISecret string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Ticker map[string]BTCeTicker
}
type BTCeTicker struct {

View File

@@ -21,17 +21,18 @@ const (
)
type BTCMarkets struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
Fee float64
Ticker map[string]BTCMarketsTicker
APIKey, APISecret string
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
Fee float64
Ticker map[string]BTCMarketsTicker
AuthenticatedAPISupport bool
APIKey, APISecret string
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
type BTCMarketsTicker struct {
@@ -105,6 +106,10 @@ func (b *BTCMarkets) IsEnabled() bool {
}
func (b *BTCMarkets) SetAPIKeys(apiKey, apiSecret string) {
if !b.AuthenticatedAPISupport {
return
}
b.APIKey = apiKey
result, err := Base64Decode(apiSecret)

View File

@@ -35,6 +35,7 @@ type Coinbase struct {
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
Password, APIKey, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
@@ -165,6 +166,10 @@ func (c *Coinbase) Run() {
}
func (c *Coinbase) SetAPIKeys(password, apiKey, apiSecret string) {
if !c.AuthenticatedAPISupport {
return
}
c.Password = password
c.APIKey = apiKey
result, err := Base64Decode(apiSecret)

View File

@@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"time"
)
@@ -12,10 +13,11 @@ const (
)
var (
ErrExchangeNameEmpty = "Exchange #%d in config: Exchange name is empty."
ErrExchangeAvailablePairsEmpty = "Exchange %s: Available pairs is empty."
ErrExchangeEnabledPairsEmpty = "Exchange %s: Enabled pairs is empty."
ErrExchangeBaseCurrenciesEmpty = "Exchange %s: Base currencies is empty."
ErrExchangeNameEmpty = "Exchange #%d in config: Exchange name is empty."
ErrExchangeAvailablePairsEmpty = "Exchange %s: Available pairs is empty."
ErrExchangeEnabledPairsEmpty = "Exchange %s: Enabled pairs is empty."
ErrExchangeBaseCurrenciesEmpty = "Exchange %s: Base currencies is empty."
ErrExchangeAuthAPIDefaultOrEmptyValues = "WARNING -- Exchange %s: Authenticated API support disabled due to default/empty APIKey/Secret/ClientID values."
)
type SMSContacts struct {
@@ -33,17 +35,18 @@ type Config struct {
}
type Exchanges struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APIKey string
APISecret string
ClientID string
AvailablePairs string
EnabledPairs string
BaseCurrencies string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIKey string
APISecret string
ClientID string
AvailablePairs string
EnabledPairs string
BaseCurrencies string
}
func CheckConfigValues() error {
@@ -61,6 +64,19 @@ func CheckConfigValues() error {
if exch.BaseCurrencies == "" {
return fmt.Errorf(ErrExchangeBaseCurrenciesEmpty, exch.Name)
}
if exch.AuthenticatedAPISupport { // non-fatal error
if exch.APIKey == "" || exch.APISecret == "" || exch.APIKey == "Key" || exch.APISecret == "Secret" {
bot.config.Exchanges[i].AuthenticatedAPISupport = false
log.Printf(ErrExchangeAuthAPIDefaultOrEmptyValues, exch.Name)
continue
} else if exch.Name == "ITBIT" || exch.Name == "Bitstamp" || exch.Name == "Coinbase" {
if exch.ClientID == "" || exch.ClientID == "ClientID" {
bot.config.Exchanges[i].AuthenticatedAPISupport = false
log.Printf(ErrExchangeAuthAPIDefaultOrEmptyValues, exch.Name)
continue
}
}
}
}
}
return nil

View File

@@ -1,186 +1,199 @@
{
"Name": "Skynet",
"SMSGlobalUsername": "Username",
"SMSGlobalPassword": "Password",
"SMSContacts": [
{
"Name": "Bob",
"Number": "12345",
"Enabled": false
}
],
"Exchanges": [
{
"Name": "ANX",
"AvailablePairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC",
"EnabledPairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD,HKD,EUR,CAD,AUD,SGD,JPY,GBP,NZD",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "Bitfinex",
"AvailablePairs": "BTCUSD,LTCUSD,DRKUSD",
"EnabledPairs": "BTCUSD,LTCUSD,DRKUSD",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "Bitstamp",
"AvailablePairs": "BTCUSD",
"EnabledPairs": "BTCUSD",
"ClientID": "ClientID",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
},
{
"Name": "BTC China",
"AvailablePairs": "BTCCNY,LTCCNY,LTCBTC",
"EnabledPairs": "BTCCNY,LTCCNY,LTCBTC",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "BTCE",
"AvailablePairs": "BTCUSD,BTCRUR,BTCEUR,BTCCNH,BTCGBP,LTCBTC,LTCUSD,LTCRUR,LTCEUR,LTCCNH,LTCGBP,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,USDCNH,GDPUSD,PPCBTC,PPCUSD",
"EnabledPairs": "BTCUSD,BTCRUR,BTCEUR,BTCCNH,BTCGBP,LTCBTC,LTCUSD,LTCRUR,LTCEUR,LTCCNH,LTCGBP,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,USDCNH,GDPUSD,PPCBTC,PPCUSD",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD,RUB,EUR,CNY,GBP",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "BTC Markets",
"AvailablePairs": "LTC,BTC",
"EnabledPairs": "LTC,BTC",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "AUD",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "Coinbase",
"AvailablePairs": "BTCUSD,BTCGBP,BTCEUR",
"EnabledPairs": "BTCUSD,BTCGBP,BTCEUR",
"ClientID": "Password",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD,GBP,EUR",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
},
{
"Name": "Cryptsy",
"AvailablePairs": "AEROXRP,DBLLTC,GLYPHLTC,GMLBTC,HBNBTC,MNCBTC,MOONXRP,CKCBTC,LGDBTC,PXCLTC,XBSBTC,DMDXRP,ARIBTC,BTCEUR,CINBTC,CLOAKLTC,CRYPTLTC,DGCBTC,DMCLTC,EKNBTC,ICBBTC,NMCBTC,SRCBTC,SXCLTC,SFRBTC,ADTLTC,AGSBTC,DEMXRP,EFLBTC,IOCBTC,PHSBTC,PXCBTC,TITBTC,ZRCBTC,VIABTC,GDCBTC,IFCBTC,JKCBTC,MYRBTC,NBLBTC,STARTBTC,TESBTC,ZEDBTC,ASCLTC,BLKBTC,GLDLTC,LSDBTC,TRCBTC,UROXRP,XPMBTC,SPABTC,BTCUSD,IXCBTC,MNEBTC,MRYBTC,MSTLTC,NXTBTC,PPCXRP,IXCXRP,BENBTC,COLXRP,CRAVEBTC,DGBBTC,EMC2BTC,GMELTC,HALBTC,MECLTC,NMBBTC,NXTXRP,SPAXRP,VRCBTC,UROBTC,CCNBTC,COLLTC,DOGEXRP,KDCBTC,LTCUSD,MINBTC,NXTLTC,DOGEBTC,FSTLTC,IFCXRP,MEMLTC,MYRXRP,PPCLTC,VIAXRP,TESLTC,DEMBTC,DGBXRP,EMC2XRP,IFCLTC,NAUTBTC,NECBTC,RYCBTC,VRCXRP,XAUBTC,NMCXRP,ALFBTC,BTEBTC,CPRLTC,DGCXRP,EACLTC,GLXBTC,ICBXRP,PSEUDBTC,SRCXRP,SUPERLTC,VTCLTC,GLCBTC,ARGBTC,BLKXRP,CLOAKBTC,CRYPTBTC,CYPBTC,DGCLTC,FLOXRP,PYCBTC,SAT2BTC,SXCBTC,TRCXRP,XPMXRP,KGCBTC,LABBTC,MECBTC,RDDUSD,TIXLTC,VRCLTC,EMDBTC,GLYPHBTC,MEDBTC,UTCBTC,LTBXRP,SHLDBTC,XCLTC,SDCBTC,BTBBTC,CATBTC,CKCXRP,CTMLTC,LYCBTC,PPCUSD,RZRLTC,SSVBTC,YBCBTC,AURXRP,NETBTC,SLGXRP,SWIFTBTC,TEKXRP,XSTBTC,TGCBTC,ACOINBTC,AURLTC,BQCBTC,CRCBTC,DOGEUSD,EZCLTC,SBCBTC,XLBBTC,DSBBTC,8BITBTC,ALNBTC,AXRBTC,BCXBTC,BLUBTC,BTMBTC,CADUSD,WBBBTC,EURUSD,JBSBTC,LTCBTC,NETLTC,NVCBTC,SHADEBTC,SYSBTC,UNBXRP,ANCBTC,CAPBTC,CLRXRP,HVCXRP,LKYBTC,MZCBTC,TAGBTC,UNOBTC,WDCBTC,FRKLTC,GUEBTC,KEYBTC,POTBTC,STRBTC,YACBTC,ZETBTC,APEXBTC,BUKBTC,CRACKBTC,MAXBTC,RDDBTC,XAIBTC,SPTBTC,CBXLTC,FRCBTC,LXCBTC,MAXXRP,PTSBTC,RDDXRP,REDLTC,ZRCUSD,EACXRP,HUCBTC,JUDGEXRP,MAXLTC,RDDLTC,TAKBTC,VTCXRP,RPCBTC,CAIxBTC,CAPXRP,CINNIBTC,EACBTC,HTML5XRP,JUDGEBTC,MZCXRP,SUPERBTC,UNOXRP,VTCBTC,WDCXRP,ANCLTC,FLTBTC,FRCXRP,HTML5LTC,NRBBTC,WDCLTC,BATLTC,DVCLTC,FTCLTC,LOTLTC,LTCDBTC,SLGBTC,AURBTC,CRAIGBTC,EXEBTC,EZCBTC,KEYXRP,POTXRP,SBCLTC,TEKBTC,XXXBTC,YACXRP,ZCCBTC,ZETXRP,UNBBTC,BETBTC,BTBXRP,CBXBTC,CLRBTC,HVCBTC,NXTUSD,OSCBTC,VDOBTC,XJOBTC,LTBBTC,RZRBTC,XRPBTC,LTCXBTC,NANBTC,NETXRP,BTCDBTC,SOLEBTC,WCXRP,DRKCBTC,MINTBTC,NYANLTC,BITBBTC,KARMLTC,FIBREBTC,XCBTC,ACBTC,DASHBTC,CASHBTC,DASHXRP,NAVBTC,ZEITXRP,DASHLTC,DVCXRP,EXCLBTC,FTCXRP,OPALBTC,ZEITLTC,XPYBTC,AMCBTC,BTGBTC,CENTXRP,CSCBTC,DVCBTC,FTCBTC,TIPSXRP,DTBTC,FLAPXRP,FRACBTC,NAVXRP,TIPSLTC,ULTCBTC,ELPLTC,MINTXRP,NYANBTC,WCBTC,XCXRP,COOLBTC,FLAPLTC,NOBLBTC,ALNXRP,BLUXRP,LTCXRP,NVCXRP,SYSXRP,XCRBTC,BLKLTC,CMCBTC,DMDBTC,FLOLTC,GLDBTC,NRSBTC,TORBTC,XPMLTC,BTCDXRP,KARMXRP,QRKBTC,RT2BTC,42XRP,AEROBTC,GBBTC,XBOTBTC,XCASHBTC,BOSTBTC,FTCUSD,RBBTLTC,XPYUSD,DIMELTC,MNBTC,MOONLTC,SYNCBTC,DOGEDBTC,FC2BTC,LTCXLTC,MONABTC,MYSTBTC,XRPUSD,CNCBTC,COMMBTC,ELCBTC,UTILBTC,007BTC,CACHBTC,CNCXRP,LEAFXRP,TRONBTC,CNCLTC,LEAFLTC,BNCRBTC,SILKBTC,BTCCAD,CANNBTC,LK7BTC,VOOTBTC,DOGELTC,FFCBTC,FSTBTC,HYPBTC,ORBBTC,PPCBTC,TTCBTC,42BTC,MEOWLTC,NTRNBTC,CLAMBTC,CNLBTC,DASHUSD,QRKXRP,ARCHBTC,QRKLTC,RIPOBTC,XNCLTC,FRKBTC,GUELTC,PointsBTC,SLINGBTC,SMCBTC,USDeBTC,UTCXRP,YACLTC,ZETLTC",
"EnabledPairs": "AEROXRP,DBLLTC,GLYPHLTC,GMLBTC,HBNBTC,MNCBTC,MOONXRP,CKCBTC,LGDBTC,PXCLTC,XBSBTC,DMDXRP,ARIBTC,BTCEUR,CINBTC,CLOAKLTC,CRYPTLTC,DGCBTC,DMCLTC,EKNBTC,ICBBTC,NMCBTC,SRCBTC,SXCLTC,SFRBTC,ADTLTC,AGSBTC,DEMXRP,EFLBTC,IOCBTC,PHSBTC,PXCBTC,TITBTC,ZRCBTC,VIABTC,GDCBTC,IFCBTC,JKCBTC,MYRBTC,NBLBTC,STARTBTC,TESBTC,ZEDBTC,ASCLTC,BLKBTC,GLDLTC,LSDBTC,TRCBTC,UROXRP,XPMBTC,SPABTC,BTCUSD,IXCBTC,MNEBTC,MRYBTC,MSTLTC,NXTBTC,PPCXRP,IXCXRP,BENBTC,COLXRP,CRAVEBTC,DGBBTC,EMC2BTC,GMELTC,HALBTC,MECLTC,NMBBTC,NXTXRP,SPAXRP,VRCBTC,UROBTC,CCNBTC,COLLTC,DOGEXRP,KDCBTC,LTCUSD,MINBTC,NXTLTC,DOGEBTC,FSTLTC,IFCXRP,MEMLTC,MYRXRP,PPCLTC,VIAXRP,TESLTC,DEMBTC,DGBXRP,EMC2XRP,IFCLTC,NAUTBTC,NECBTC,RYCBTC,VRCXRP,XAUBTC,NMCXRP,ALFBTC,BTEBTC,CPRLTC,DGCXRP,EACLTC,GLXBTC,ICBXRP,PSEUDBTC,SRCXRP,SUPERLTC,VTCLTC,GLCBTC,ARGBTC,BLKXRP,CLOAKBTC,CRYPTBTC,CYPBTC,DGCLTC,FLOXRP,PYCBTC,SAT2BTC,SXCBTC,TRCXRP,XPMXRP,KGCBTC,LABBTC,MECBTC,RDDUSD,TIXLTC,VRCLTC,EMDBTC,GLYPHBTC,MEDBTC,UTCBTC,LTBXRP,SHLDBTC,XCLTC,SDCBTC,BTBBTC,CATBTC,CKCXRP,CTMLTC,LYCBTC,PPCUSD,RZRLTC,SSVBTC,YBCBTC,AURXRP,NETBTC,SLGXRP,SWIFTBTC,TEKXRP,XSTBTC,TGCBTC,ACOINBTC,AURLTC,BQCBTC,CRCBTC,DOGEUSD,EZCLTC,SBCBTC,XLBBTC,DSBBTC,8BITBTC,ALNBTC,AXRBTC,BCXBTC,BLUBTC,BTMBTC,CADUSD,WBBBTC,EURUSD,JBSBTC,LTCBTC,NETLTC,NVCBTC,SHADEBTC,SYSBTC,UNBXRP,ANCBTC,CAPBTC,CLRXRP,HVCXRP,LKYBTC,MZCBTC,TAGBTC,UNOBTC,WDCBTC,FRKLTC,GUEBTC,KEYBTC,POTBTC,STRBTC,YACBTC,ZETBTC,APEXBTC,BUKBTC,CRACKBTC,MAXBTC,RDDBTC,XAIBTC,SPTBTC,CBXLTC,FRCBTC,LXCBTC,MAXXRP,PTSBTC,RDDXRP,REDLTC,ZRCUSD,EACXRP,HUCBTC,JUDGEXRP,MAXLTC,RDDLTC,TAKBTC,VTCXRP,RPCBTC,CAIxBTC,CAPXRP,CINNIBTC,EACBTC,HTML5XRP,JUDGEBTC,MZCXRP,SUPERBTC,UNOXRP,VTCBTC,WDCXRP,ANCLTC,FLTBTC,FRCXRP,HTML5LTC,NRBBTC,WDCLTC,BATLTC,DVCLTC,FTCLTC,LOTLTC,LTCDBTC,SLGBTC,AURBTC,CRAIGBTC,EXEBTC,EZCBTC,KEYXRP,POTXRP,SBCLTC,TEKBTC,XXXBTC,YACXRP,ZCCBTC,ZETXRP,UNBBTC,BETBTC,BTBXRP,CBXBTC,CLRBTC,HVCBTC,NXTUSD,OSCBTC,VDOBTC,XJOBTC,LTBBTC,RZRBTC,XRPBTC,LTCXBTC,NANBTC,NETXRP,BTCDBTC,SOLEBTC,WCXRP,DRKCBTC,MINTBTC,NYANLTC,BITBBTC,KARMLTC,FIBREBTC,XCBTC,ACBTC,DASHBTC,CASHBTC,DASHXRP,NAVBTC,ZEITXRP,DASHLTC,DVCXRP,EXCLBTC,FTCXRP,OPALBTC,ZEITLTC,XPYBTC,AMCBTC,BTGBTC,CENTXRP,CSCBTC,DVCBTC,FTCBTC,TIPSXRP,DTBTC,FLAPXRP,FRACBTC,NAVXRP,TIPSLTC,ULTCBTC,ELPLTC,MINTXRP,NYANBTC,WCBTC,XCXRP,COOLBTC,FLAPLTC,NOBLBTC,ALNXRP,BLUXRP,LTCXRP,NVCXRP,SYSXRP,XCRBTC,BLKLTC,CMCBTC,DMDBTC,FLOLTC,GLDBTC,NRSBTC,TORBTC,XPMLTC,BTCDXRP,KARMXRP,QRKBTC,RT2BTC,42XRP,AEROBTC,GBBTC,XBOTBTC,XCASHBTC,BOSTBTC,FTCUSD,RBBTLTC,XPYUSD,DIMELTC,MNBTC,MOONLTC,SYNCBTC,DOGEDBTC,FC2BTC,LTCXLTC,MONABTC,MYSTBTC,XRPUSD,CNCBTC,COMMBTC,ELCBTC,UTILBTC,007BTC,CACHBTC,CNCXRP,LEAFXRP,TRONBTC,CNCLTC,LEAFLTC,BNCRBTC,SILKBTC,BTCCAD,CANNBTC,LK7BTC,VOOTBTC,DOGELTC,FFCBTC,FSTBTC,HYPBTC,ORBBTC,PPCBTC,TTCBTC,42BTC,MEOWLTC,NTRNBTC,CLAMBTC,CNLBTC,DASHUSD,QRKXRP,ARCHBTC,QRKLTC,RIPOBTC,XNCLTC,FRKBTC,GUELTC,PointsBTC,SLINGBTC,SMCBTC,USDeBTC,UTCXRP,YACLTC,ZETLTC",
"ClientID": "Password",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
},
{
"Name": "Huobi",
"AvailablePairs": "BTCCNY,LTCCNY",
"EnabledPairs": "BTCCNY,LTCCNY",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "ITBIT",
"AvailablePairs": "XBTUSD,XBTSGD,XBTEUR",
"EnabledPairs": "XBTUSD,XBTSGD,XBTEUR",
"APIKey": "Key",
"APISecret": "Secret",
"ClientID": "ClientID",
"BaseCurrencies": "USD,SGD,EUR",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "Kraken",
"AvailablePairs": "XBTEUR,XBTUSD,XBTGBP,XBTJPY,LTCEUR,LTCUSD,EURXVN,USDXVN,XBTLTC,XBTNMC,XBTSTR,XBTXDG,XBTXRP,XBTXVN",
"EnabledPairs": "XBTEUR,XBTUSD,XBTGBP,XBTJPY,LTCEUR,LTCUSD,EURXVN,USDXVN,XBTLTC,XBTNMC,XBTSTR,XBTXDG,XBTXRP,XBTXVN",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "EUR,USD,GBP,JPY",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10
},
{
"Name": "LakeBTC",
"AvailablePairs": "BTCUSD,BTCCNY",
"EnabledPairs": "BTCUSD,BTCCNY",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD,CNY,SEK",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
},
{
"Name": "OKCOIN China",
"AvailablePairs": "BTCCNY,LTCCNY",
"EnabledPairs": "BTCCNY,LTCCNY",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
},
{
"Name": "OKCOIN International",
"AvailablePairs": "BTCUSD,LTCUSD",
"EnabledPairs": "BTCUSD,LTCUSD",
"APIKey": "Key",
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10
}
]
"Name": "Skynet",
"SMSGlobalUsername": "Username",
"SMSGlobalPassword": "Password",
"SMSContacts": [
{
"Name": "Bob",
"Number": "12345",
"Enabled": false
}
],
"Exchanges": [
{
"Name": "ANX",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC",
"EnabledPairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC",
"BaseCurrencies": "USD,HKD,EUR,CAD,AUD,SGD,JPY,GBP,NZD"
},
{
"Name": "Bitfinex",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCUSD,LTCUSD,DRKUSD",
"EnabledPairs": "BTCUSD,LTCUSD,DRKUSD",
"BaseCurrencies": "USD"
},
{
"Name": "Bitstamp",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"ClientID": "ClientID",
"AvailablePairs": "BTCUSD",
"EnabledPairs": "BTCUSD",
"BaseCurrencies": "USD"
},
{
"Name": "BTC China",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCCNY,LTCCNY,LTCBTC",
"EnabledPairs": "BTCCNY,LTCCNY,LTCBTC",
"BaseCurrencies": "CNY"
},
{
"Name": "BTCE",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCUSD,BTCRUR,BTCEUR,BTCCNH,BTCGBP,LTCBTC,LTCUSD,LTCRUR,LTCEUR,LTCCNH,LTCGBP,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,USDCNH,GDPUSD,PPCBTC,PPCUSD",
"EnabledPairs": "BTCUSD,BTCRUR,BTCEUR,BTCCNH,BTCGBP,LTCBTC,LTCUSD,LTCRUR,LTCEUR,LTCCNH,LTCGBP,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,USDCNH,GDPUSD,PPCBTC,PPCUSD",
"BaseCurrencies": "USD,RUB,EUR,CNY,GBP"
},
{
"Name": "BTC Markets",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "LTC,BTC",
"EnabledPairs": "LTC,BTC",
"BaseCurrencies": "AUD"
},
{
"Name": "Coinbase",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"ClientID": "ClientID",
"AvailablePairs": "BTCUSD,BTCGBP,BTCEUR",
"EnabledPairs": "BTCUSD,BTCGBP,BTCEUR",
"BaseCurrencies": "USD,GBP,EUR"
},
{
"Name": "Cryptsy",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "AEROXRP,DBLLTC,GLYPHLTC,GMLBTC,HBNBTC,MNCBTC,MOONXRP,CKCBTC,LGDBTC,PXCLTC,XBSBTC,DMDXRP,ARIBTC,BTCEUR,CINBTC,CLOAKLTC,CRYPTLTC,DGCBTC,DMCLTC,EKNBTC,ICBBTC,NMCBTC,SRCBTC,SXCLTC,SFRBTC,ADTLTC,AGSBTC,DEMXRP,EFLBTC,IOCBTC,PHSBTC,PXCBTC,TITBTC,ZRCBTC,VIABTC,GDCBTC,IFCBTC,JKCBTC,MYRBTC,NBLBTC,STARTBTC,TESBTC,ZEDBTC,ASCLTC,BLKBTC,GLDLTC,LSDBTC,TRCBTC,UROXRP,XPMBTC,SPABTC,BTCUSD,IXCBTC,MNEBTC,MRYBTC,MSTLTC,NXTBTC,PPCXRP,IXCXRP,BENBTC,COLXRP,CRAVEBTC,DGBBTC,EMC2BTC,GMELTC,HALBTC,MECLTC,NMBBTC,NXTXRP,SPAXRP,VRCBTC,UROBTC,CCNBTC,COLLTC,DOGEXRP,KDCBTC,LTCUSD,MINBTC,NXTLTC,DOGEBTC,FSTLTC,IFCXRP,MEMLTC,MYRXRP,PPCLTC,VIAXRP,TESLTC,DEMBTC,DGBXRP,EMC2XRP,IFCLTC,NAUTBTC,NECBTC,RYCBTC,VRCXRP,XAUBTC,NMCXRP,ALFBTC,BTEBTC,CPRLTC,DGCXRP,EACLTC,GLXBTC,ICBXRP,PSEUDBTC,SRCXRP,SUPERLTC,VTCLTC,GLCBTC,ARGBTC,BLKXRP,CLOAKBTC,CRYPTBTC,CYPBTC,DGCLTC,FLOXRP,PYCBTC,SAT2BTC,SXCBTC,TRCXRP,XPMXRP,KGCBTC,LABBTC,MECBTC,RDDUSD,TIXLTC,VRCLTC,EMDBTC,GLYPHBTC,MEDBTC,UTCBTC,LTBXRP,SHLDBTC,XCLTC,SDCBTC,BTBBTC,CATBTC,CKCXRP,CTMLTC,LYCBTC,PPCUSD,RZRLTC,SSVBTC,YBCBTC,AURXRP,NETBTC,SLGXRP,SWIFTBTC,TEKXRP,XSTBTC,TGCBTC,ACOINBTC,AURLTC,BQCBTC,CRCBTC,DOGEUSD,EZCLTC,SBCBTC,XLBBTC,DSBBTC,8BITBTC,ALNBTC,AXRBTC,BCXBTC,BLUBTC,BTMBTC,CADUSD,WBBBTC,EURUSD,JBSBTC,LTCBTC,NETLTC,NVCBTC,SHADEBTC,SYSBTC,UNBXRP,ANCBTC,CAPBTC,CLRXRP,HVCXRP,LKYBTC,MZCBTC,TAGBTC,UNOBTC,WDCBTC,FRKLTC,GUEBTC,KEYBTC,POTBTC,STRBTC,YACBTC,ZETBTC,APEXBTC,BUKBTC,CRACKBTC,MAXBTC,RDDBTC,XAIBTC,SPTBTC,CBXLTC,FRCBTC,LXCBTC,MAXXRP,PTSBTC,RDDXRP,REDLTC,ZRCUSD,EACXRP,HUCBTC,JUDGEXRP,MAXLTC,RDDLTC,TAKBTC,VTCXRP,RPCBTC,CAIxBTC,CAPXRP,CINNIBTC,EACBTC,HTML5XRP,JUDGEBTC,MZCXRP,SUPERBTC,UNOXRP,VTCBTC,WDCXRP,ANCLTC,FLTBTC,FRCXRP,HTML5LTC,NRBBTC,WDCLTC,BATLTC,DVCLTC,FTCLTC,LOTLTC,LTCDBTC,SLGBTC,AURBTC,CRAIGBTC,EXEBTC,EZCBTC,KEYXRP,POTXRP,SBCLTC,TEKBTC,XXXBTC,YACXRP,ZCCBTC,ZETXRP,UNBBTC,BETBTC,BTBXRP,CBXBTC,CLRBTC,HVCBTC,NXTUSD,OSCBTC,VDOBTC,XJOBTC,LTBBTC,RZRBTC,XRPBTC,LTCXBTC,NANBTC,NETXRP,BTCDBTC,SOLEBTC,WCXRP,DRKCBTC,MINTBTC,NYANLTC,BITBBTC,KARMLTC,FIBREBTC,XCBTC,ACBTC,DASHBTC,CASHBTC,DASHXRP,NAVBTC,ZEITXRP,DASHLTC,DVCXRP,EXCLBTC,FTCXRP,OPALBTC,ZEITLTC,XPYBTC,AMCBTC,BTGBTC,CENTXRP,CSCBTC,DVCBTC,FTCBTC,TIPSXRP,DTBTC,FLAPXRP,FRACBTC,NAVXRP,TIPSLTC,ULTCBTC,ELPLTC,MINTXRP,NYANBTC,WCBTC,XCXRP,COOLBTC,FLAPLTC,NOBLBTC,ALNXRP,BLUXRP,LTCXRP,NVCXRP,SYSXRP,XCRBTC,BLKLTC,CMCBTC,DMDBTC,FLOLTC,GLDBTC,NRSBTC,TORBTC,XPMLTC,BTCDXRP,KARMXRP,QRKBTC,RT2BTC,42XRP,AEROBTC,GBBTC,XBOTBTC,XCASHBTC,BOSTBTC,FTCUSD,RBBTLTC,XPYUSD,DIMELTC,MNBTC,MOONLTC,SYNCBTC,DOGEDBTC,FC2BTC,LTCXLTC,MONABTC,MYSTBTC,XRPUSD,CNCBTC,COMMBTC,ELCBTC,UTILBTC,007BTC,CACHBTC,CNCXRP,LEAFXRP,TRONBTC,CNCLTC,LEAFLTC,BNCRBTC,SILKBTC,BTCCAD,CANNBTC,LK7BTC,VOOTBTC,DOGELTC,FFCBTC,FSTBTC,HYPBTC,ORBBTC,PPCBTC,TTCBTC,42BTC,MEOWLTC,NTRNBTC,CLAMBTC,CNLBTC,DASHUSD,QRKXRP,ARCHBTC,QRKLTC,RIPOBTC,XNCLTC,FRKBTC,GUELTC,PointsBTC,SLINGBTC,SMCBTC,USDeBTC,UTCXRP,YACLTC,ZETLTC",
"EnabledPairs": "BTCUSD,LTCUSD,DASHBTC,DOGEBTC",
"BaseCurrencies": "USD"
},
{
"Name": "Huobi",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCCNY,LTCCNY",
"EnabledPairs": "BTCCNY,LTCCNY",
"BaseCurrencies": "CNY"
},
{
"Name": "ITBIT",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"ClientID": "ClientID",
"AvailablePairs": "XBTUSD,XBTSGD,XBTEUR",
"EnabledPairs": "XBTUSD,XBTSGD,XBTEUR",
"BaseCurrencies": "USD,SGD,EUR"
},
{
"Name": "Kraken",
"Enabled": true,
"Verbose": false,
"Websocket": false,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "XBTEUR,XBTUSD,XBTGBP,XBTJPY,LTCEUR,LTCUSD,EURXVN,USDXVN,XBTLTC,XBTNMC,XBTSTR,XBTXDG,XBTXRP,XBTXVN",
"EnabledPairs": "XBTEUR,XBTUSD,XBTGBP,XBTJPY,LTCEUR,LTCUSD,EURXVN,USDXVN,XBTLTC,XBTNMC,XBTSTR,XBTXDG,XBTXRP,XBTXVN",
"BaseCurrencies": "EUR,USD,GBP,JPY"
},
{
"Name": "LakeBTC",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCUSD,BTCCNY",
"EnabledPairs": "BTCUSD,BTCCNY",
"BaseCurrencies": "USD,CNY,SEK"
},
{
"Name": "OKCOIN China",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCCNY,LTCCNY",
"EnabledPairs": "BTCCNY,LTCCNY",
"BaseCurrencies": "CNY"
},
{
"Name": "OKCOIN International",
"Enabled": true,
"Verbose": false,
"Websocket": true,
"RESTPollingDelay": 10,
"AuthenticatedAPISupport": false,
"APIKey": "Key",
"APISecret": "Secret",
"AvailablePairs": "BTCUSD,LTCUSD",
"EnabledPairs": "BTCUSD,LTCUSD",
"BaseCurrencies": "USD"
}
]
}

View File

@@ -32,20 +32,21 @@ const (
)
type Cryptsy struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
APIKey, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Market map[string]CryptsyMarket
Ticker map[string]CryptsyTicker
Volume map[string]CryptsyVolume
Currencies map[string]CryptsyCurrency
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIKey, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Market map[string]CryptsyMarket
Ticker map[string]CryptsyTicker
Volume map[string]CryptsyVolume
Currencies map[string]CryptsyCurrency
}
type CryptsyMarket struct {

View File

@@ -15,16 +15,17 @@ const (
)
type HUOBI struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AccessKey, SecretKey string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
AccessKey, SecretKey string
Fee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
type HuobiTicker struct {

View File

@@ -20,6 +20,7 @@ type ItBit struct {
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
ClientKey, APISecret, UserID string
MakerFee, TakerFee float64
BaseCurrencies []string

View File

@@ -37,17 +37,18 @@ const (
)
type Kraken struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
ClientKey, APISecret string
FiatFee, CryptoFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Ticker map[string]KrakenTicker
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
ClientKey, APISecret string
FiatFee, CryptoFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Ticker map[string]KrakenTicker
}
func (k *Kraken) SetDefaults() {

View File

@@ -25,16 +25,17 @@ const (
)
type LakeBTC struct {
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
Email, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
Name string
Enabled bool
Verbose bool
Websocket bool
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
Email, APISecret string
TakerFee, MakerFee float64
BaseCurrencies []string
AvailablePairs []string
EnabledPairs []string
}
type LakeBTCTicker struct {

34
main.go
View File

@@ -114,11 +114,17 @@ func main() {
}
for _, exch := range bot.config.Exchanges {
if exch.Enabled {
log.Printf("%s: Exchange support: %s (Authenticated API support: %s - Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.AuthenticatedAPISupport), IsEnabled(exch.Verbose))
} else {
log.Printf("%s: Exchange support: %s\n", exch.Name, IsEnabled(exch.Enabled))
}
if bot.exchange.anx.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -129,10 +135,10 @@ func main() {
go bot.exchange.anx.Run()
}
} else if bot.exchange.btcchina.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
if !exch.Enabled {
bot.exchange.btcchina.SetEnabled(false)
} else {
bot.exchange.btcchina.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
bot.exchange.btcchina.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btcchina.RESTPollingDelay = exch.RESTPollingDelay
bot.exchange.btcchina.Verbose = exch.Verbose
@@ -143,10 +149,10 @@ func main() {
go bot.exchange.btcchina.Run()
}
} else if bot.exchange.bitstamp.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -157,10 +163,10 @@ func main() {
go bot.exchange.bitstamp.Run()
}
} else if bot.exchange.bitfinex.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -171,10 +177,10 @@ func main() {
go bot.exchange.bitfinex.Run()
}
} else if bot.exchange.btce.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -185,10 +191,10 @@ func main() {
go bot.exchange.btce.Run()
}
} else if bot.exchange.btcmarkets.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -199,10 +205,10 @@ func main() {
go bot.exchange.btcmarkets.Run()
}
} else if bot.exchange.coinbase.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -213,10 +219,10 @@ func main() {
go bot.exchange.coinbase.Run()
}
} else if bot.exchange.cryptsy.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
if !exch.Enabled {
bot.exchange.cryptsy.SetEnabled(false)
} else {
bot.exchange.cryptsy.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
bot.exchange.cryptsy.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.cryptsy.RESTPollingDelay = exch.RESTPollingDelay
bot.exchange.cryptsy.Verbose = exch.Verbose
@@ -227,10 +233,10 @@ func main() {
go bot.exchange.cryptsy.Run()
}
} else if bot.exchange.okcoinChina.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -241,10 +247,10 @@ func main() {
go bot.exchange.okcoinChina.Run()
}
} else if bot.exchange.okcoinIntl.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -255,10 +261,10 @@ func main() {
go bot.exchange.okcoinIntl.Run()
}
} else if bot.exchange.itbit.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -269,10 +275,10 @@ func main() {
go bot.exchange.itbit.Run()
}
} else if bot.exchange.kraken.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -283,10 +289,10 @@ func main() {
go bot.exchange.kraken.Run()
}
} else if bot.exchange.lakebtc.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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
@@ -297,10 +303,10 @@ func main() {
go bot.exchange.lakebtc.Run()
}
} else if bot.exchange.huobi.GetName() == exch.Name {
log.Printf("%s: %s (Verbose mode: %s).\n", exch.Name, IsEnabled(exch.Enabled), IsEnabled(exch.Verbose))
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

View File

@@ -24,6 +24,7 @@ type OKCoin struct {
Websocket bool
WebsocketURL string
RESTPollingDelay time.Duration
AuthenticatedAPISupport bool
APIUrl, PartnerID, SecretKey string
TakerFee, MakerFee float64
RESTErrors map[string]string

View File

@@ -412,21 +412,28 @@ func (o *OKCoin) WebsocketClient() {
}
OKConnWebsocket.SetPingHandler(o.PingHandler)
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_REALTRADES, map[string]string{})
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_USERINFO, map[string]string{})
if o.AuthenticatedAPISupport {
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_REALTRADES, map[string]string{})
o.AddChannelAuthenticated(OKCOIN_WEBSOCKET_FUTURES_USERINFO, map[string]string{})
}
o.AddChannelAuthenticated(currencyChan, map[string]string{})
o.AddChannelAuthenticated(userinfoChan, map[string]string{})
}
o.AddChannelAuthenticated(currencyChan, map[string]string{})
o.AddChannelAuthenticated(userinfoChan, map[string]string{})
for _, x := range o.EnabledPairs {
currency := StringToLower(x)
currencyUL := currency[0:3] + "_" + currency[3:]
o.WebsocketSpotOrderInfo(currencyUL, -1)
if o.AuthenticatedAPISupport {
o.WebsocketSpotOrderInfo(currencyUL, -1)
}
if o.WebsocketURL == OKCOIN_WEBSOCKET_URL {
o.AddChannel(fmt.Sprintf("ok_%s_future_index", currency))
for _, y := range o.FuturesValues {
o.WebsocketFuturesOrderInfo(currencyUL, y, -1, 1, 1, 50)
if o.AuthenticatedAPISupport {
o.WebsocketFuturesOrderInfo(currencyUL, y, -1, 1, 1, 50)
}
o.AddChannel(fmt.Sprintf("ok_%s_future_ticker_%s", currency, y))
o.AddChannel(fmt.Sprintf("ok_%s_future_depth_%s_60", currency, y))
o.AddChannel(fmt.Sprintf("ok_%s_future_trade_v1_%s", currency, y))