mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 15:09:42 +00:00
Added Authenticated API variable to toggle on/off private authentication support.
This commit is contained in:
29
anxhttp.go
29
anxhttp.go
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -36,6 +36,7 @@ type Bitstamp struct {
|
||||
Verbose bool
|
||||
Websocket bool
|
||||
RESTPollingDelay time.Duration
|
||||
AuthenticatedAPISupport bool
|
||||
ClientID, APIKey, APISecret string
|
||||
Ticker BitstampTicker
|
||||
Orderbook Orderbook
|
||||
|
||||
@@ -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 {
|
||||
|
||||
23
btcehttp.go
23
btcehttp.go
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
46
config.go
46
config.go
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
21
huobihttp.go
21
huobihttp.go
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
23
kraken.go
23
kraken.go
@@ -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() {
|
||||
|
||||
@@ -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
34
main.go
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user