mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Added the ability to enable/disable Cryptocurrencies on Exchanges via config file. A few more exchanges need to be completed.
This commit is contained in:
17
anxhttp.go
17
anxhttp.go
@@ -32,7 +32,8 @@ type ANX struct {
|
||||
APIKey, APISecret string
|
||||
TakerFee, MakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type ANXOrder struct {
|
||||
@@ -134,14 +135,18 @@ func (a *ANX) GetFee(maker bool) float64 {
|
||||
func (a *ANX) Run() {
|
||||
if a.Verbose {
|
||||
log.Printf("%s polling delay: %ds.\n", a.GetName(), a.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", a.GetName(), len(a.EnabledPairs), a.EnabledPairs)
|
||||
}
|
||||
|
||||
for a.Enabled {
|
||||
go func() {
|
||||
ANXBTC := a.GetTicker("BTCUSD")
|
||||
log.Printf("ANX BTC: Last %f High %f Low %f Volume %f\n", ANXBTC.Data.Last.Value, ANXBTC.Data.High.Value, ANXBTC.Data.Low.Value, ANXBTC.Data.Vol.Value)
|
||||
AddExchangeInfo(a.GetName(), "BTC", ANXBTC.Data.Last.Value, ANXBTC.Data.Vol.Value)
|
||||
}()
|
||||
for _, x := range a.EnabledPairs {
|
||||
currency := x
|
||||
go func() {
|
||||
ticker := a.GetTicker(currency)
|
||||
log.Printf("ANX %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Data.Last.Value, ticker.Data.High.Value, ticker.Data.Low.Value, ticker.Data.Vol.Value)
|
||||
AddExchangeInfo(a.GetName(), currency, ticker.Data.Last.Value, ticker.Data.Vol.Value)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * a.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,8 @@ type Bitfinex struct {
|
||||
ActiveOrders []BitfinexActiveOrder
|
||||
AccountBalance []BitfinexBalance
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
func (b *Bitfinex) SetDefaults() {
|
||||
@@ -187,23 +188,25 @@ func (b *Bitfinex) SetAPIKeys(apiKey, apiSecret string) {
|
||||
func (b *Bitfinex) Run() {
|
||||
if b.Verbose {
|
||||
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", b.GetName(), len(b.EnabledPairs), b.EnabledPairs)
|
||||
}
|
||||
|
||||
b.GetAccountFeeInfo()
|
||||
b.GetAccountBalance()
|
||||
exchangeProducts, err := b.GetSymbols()
|
||||
if err != nil {
|
||||
log.Printf("%s Failed to get available symbols.\n", b.GetName())
|
||||
} else {
|
||||
b.AvailablePairs = SplitStrings(StringToUpper(JoinStrings(exchangeProducts, ",")), ",")
|
||||
}
|
||||
|
||||
for b.Enabled {
|
||||
go func() {
|
||||
BitfinexLTC := b.GetTicker("ltcusd")
|
||||
log.Printf("Bitfinex LTC: Last %f High %f Low %f Volume %f\n", BitfinexLTC.Last, BitfinexLTC.High, BitfinexLTC.Low, BitfinexLTC.Volume)
|
||||
AddExchangeInfo(b.GetName(), "LTC", BitfinexLTC.Last, BitfinexLTC.Volume)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
BitfinexBTC := b.GetTicker("btcusd")
|
||||
log.Printf("Bitfinex BTC: Last %f High %f Low %f Volume %f\n", BitfinexBTC.Last, BitfinexBTC.High, BitfinexBTC.Low, BitfinexBTC.Volume)
|
||||
AddExchangeInfo(b.GetName(), "BTC", BitfinexBTC.Last, BitfinexBTC.Volume)
|
||||
}()
|
||||
for _, x := range b.EnabledPairs {
|
||||
currency := x
|
||||
go func() {
|
||||
ticker := b.GetTicker(currency)
|
||||
log.Printf("Bitfinex %s Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Volume)
|
||||
AddExchangeInfo(b.GetName(), currency, ticker.Last, ticker.Volume)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * b.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
@@ -342,13 +345,13 @@ func (b *Bitfinex) GetTrades(symbol string) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (b *Bitfinex) GetSymbols() bool {
|
||||
err := SendHTTPGetRequest(BITFINEX_API_URL+BITFINEX_SYMBOLS, false, nil)
|
||||
func (b *Bitfinex) GetSymbols() ([]string, error) {
|
||||
products := []string{}
|
||||
err := SendHTTPGetRequest(BITFINEX_API_URL+BITFINEX_SYMBOLS, true, &products)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return false
|
||||
return nil, err
|
||||
}
|
||||
return true
|
||||
return products, nil
|
||||
}
|
||||
|
||||
func (b *Bitfinex) GetSymbolsDetails() bool {
|
||||
|
||||
@@ -44,7 +44,8 @@ type Bitstamp struct {
|
||||
Balance BitstampAccountBalance
|
||||
TakerFee, MakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type BitstampTicker struct {
|
||||
@@ -117,20 +118,22 @@ func (b *Bitstamp) Run() {
|
||||
if b.Verbose {
|
||||
log.Printf("%s Websocket: %s.", b.GetName(), IsEnabled(b.Websocket))
|
||||
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", b.GetName(), len(b.EnabledPairs), b.EnabledPairs)
|
||||
}
|
||||
|
||||
b.GetBalance()
|
||||
|
||||
if b.Websocket {
|
||||
go b.PusherClient()
|
||||
}
|
||||
|
||||
for b.Enabled {
|
||||
go func() {
|
||||
BitstampBTC := b.GetTicker()
|
||||
log.Printf("Bitstamp BTC: Last %f High %f Low %f Volume %f\n", BitstampBTC.Last, BitstampBTC.High, BitstampBTC.Low, BitstampBTC.Volume)
|
||||
AddExchangeInfo(b.GetName(), "BTC", BitstampBTC.Last, BitstampBTC.Volume)
|
||||
}()
|
||||
for _, x := range b.EnabledPairs {
|
||||
currency := x
|
||||
go func() {
|
||||
ticker := b.GetTicker()
|
||||
log.Printf("Bitstamp %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Volume)
|
||||
AddExchangeInfo(b.GetName(), currency, ticker.Last, ticker.Volume)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * b.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ type BTCChina struct {
|
||||
APISecret, APIKey string
|
||||
Fee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type BTCChinaTicker struct {
|
||||
@@ -202,7 +203,9 @@ func (b *BTCChina) GetFee() float64 {
|
||||
|
||||
func (b *BTCChina) Run() {
|
||||
if b.Verbose {
|
||||
log.Printf("%s Websocket: %s.", b.GetName(), IsEnabled(b.Websocket))
|
||||
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", b.GetName(), len(b.EnabledPairs), b.EnabledPairs)
|
||||
}
|
||||
|
||||
if b.Websocket {
|
||||
@@ -210,23 +213,22 @@ func (b *BTCChina) Run() {
|
||||
}
|
||||
|
||||
for b.Enabled {
|
||||
go func() {
|
||||
BTCChinaBTC := b.GetTicker("btccny")
|
||||
BTCChinaBTCLastUSD, _ := ConvertCurrency(BTCChinaBTC.Last, "CNY", "USD")
|
||||
BTCChinaBTCHighUSD, _ := ConvertCurrency(BTCChinaBTC.High, "CNY", "USD")
|
||||
BTCChinaBTCLowUSD, _ := ConvertCurrency(BTCChinaBTC.Low, "CNY", "USD")
|
||||
log.Printf("BTCChina BTC: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", BTCChinaBTCLastUSD, BTCChinaBTC.Last, BTCChinaBTCHighUSD, BTCChinaBTC.High, BTCChinaBTCLowUSD, BTCChinaBTC.Low, BTCChinaBTC.Vol)
|
||||
AddExchangeInfo(b.GetName(), "BTC", BTCChinaBTCLastUSD, BTCChinaBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
BTCChinaLTC := b.GetTicker("ltccny")
|
||||
BTCChinaLTCLastUSD, _ := ConvertCurrency(BTCChinaLTC.Last, "CNY", "USD")
|
||||
BTCChinaLTCHighUSD, _ := ConvertCurrency(BTCChinaLTC.High, "CNY", "USD")
|
||||
BTCChinaLTCLowUSD, _ := ConvertCurrency(BTCChinaLTC.Low, "CNY", "USD")
|
||||
log.Printf("BTCChina LTC: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", BTCChinaLTCLastUSD, BTCChinaLTC.Last, BTCChinaLTCHighUSD, BTCChinaLTC.High, BTCChinaLTCLowUSD, BTCChinaLTC.Low, BTCChinaLTC.Vol)
|
||||
AddExchangeInfo(b.GetName(), "LTC", BTCChinaLTCLastUSD, BTCChinaLTC.Vol)
|
||||
}()
|
||||
for _, x := range b.EnabledPairs {
|
||||
currency := StringToLower(x)
|
||||
go func() {
|
||||
ticker := b.GetTicker(currency)
|
||||
if currency != "ltcbtc" {
|
||||
tickerLastUSD, _ := ConvertCurrency(ticker.Last, "CNY", "USD")
|
||||
tickerHighUSD, _ := ConvertCurrency(ticker.High, "CNY", "USD")
|
||||
tickerLowUSD, _ := ConvertCurrency(ticker.Low, "CNY", "USD")
|
||||
log.Printf("BTCChina %s: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", currency, tickerLastUSD, ticker.Last, tickerHighUSD, ticker.High, tickerLowUSD, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(b.GetName(), currency, tickerLastUSD, ticker.Vol)
|
||||
} else {
|
||||
log.Printf("BTCChina %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(b.GetName(), currency, ticker.Last, ticker.Vol)
|
||||
}
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * b.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,12 @@ func (b *BTCChina) OnConnect(output chan socketio.Message) {
|
||||
if b.Verbose {
|
||||
log.Printf("%s Connected to Websocket.", b.GetName())
|
||||
}
|
||||
currencies := []string{"cnybtc", "cnyltc", "btcltc"}
|
||||
|
||||
currencies := []string{}
|
||||
for _, x := range b.EnabledPairs {
|
||||
currency := StringToLower(x[3:] + x[0:3])
|
||||
currencies = append(currencies, currency)
|
||||
}
|
||||
endpoints := []string{"marketdata", "grouporder"}
|
||||
|
||||
for _, x := range endpoints {
|
||||
|
||||
41
btcehttp.go
41
btcehttp.go
@@ -35,7 +35,9 @@ type BTCE struct {
|
||||
APIKey, APISecret string
|
||||
Fee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
Ticker map[string]BTCeTicker
|
||||
}
|
||||
|
||||
type BTCeTicker struct {
|
||||
@@ -70,6 +72,7 @@ func (b *BTCE) SetDefaults() {
|
||||
b.Verbose = false
|
||||
b.Websocket = false
|
||||
b.RESTPollingDelay = 10
|
||||
b.Ticker = make(map[string]BTCeTicker)
|
||||
}
|
||||
|
||||
func (b *BTCE) GetName() string {
|
||||
@@ -95,20 +98,31 @@ func (b *BTCE) GetFee() float64 {
|
||||
|
||||
func (b *BTCE) Run() {
|
||||
if b.Verbose {
|
||||
log.Printf("%s Websocket: %s.", b.GetName(), IsEnabled(b.Websocket))
|
||||
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", b.GetName(), len(b.EnabledPairs), b.EnabledPairs)
|
||||
}
|
||||
|
||||
pairs := []string{}
|
||||
for _, x := range b.EnabledPairs {
|
||||
x = StringToLower(x[0:3] + "_" + x[3:6])
|
||||
pairs = append(pairs, x)
|
||||
}
|
||||
pairsString := JoinStrings(pairs, "-")
|
||||
|
||||
for b.Enabled {
|
||||
go func() {
|
||||
BTCeBTC := b.GetTicker("btc_usd")
|
||||
log.Printf("BTC-e BTC: Last %f High %f Low %f Volume %f\n", BTCeBTC.Last, BTCeBTC.High, BTCeBTC.Low, BTCeBTC.Vol_cur)
|
||||
AddExchangeInfo(b.GetName(), "BTC", BTCeBTC.Last, BTCeBTC.Vol_cur)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
BTCeLTC := b.GetTicker("ltc_usd")
|
||||
log.Printf("BTC-e LTC: Last %f High %f Low %f Volume %f\n", BTCeLTC.Last, BTCeLTC.High, BTCeLTC.Low, BTCeLTC.Vol_cur)
|
||||
AddExchangeInfo(b.GetName(), "LTC", BTCeLTC.Last, BTCeLTC.Vol_cur)
|
||||
ticker, err := b.GetTicker(pairsString)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
for x, y := range ticker {
|
||||
x = StringToUpper(x[0:3] + x[4:])
|
||||
log.Printf("BTC-e %s: Last %f High %f Low %f Volume %f\n", x, y.Last, y.High, y.Low, y.Vol_cur)
|
||||
b.Ticker[x] = y
|
||||
AddExchangeInfo(b.GetName(), x, y.Last, y.Vol_cur)
|
||||
}
|
||||
}()
|
||||
time.Sleep(time.Second * b.RESTPollingDelay)
|
||||
}
|
||||
@@ -123,7 +137,7 @@ func (b *BTCE) GetInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *BTCE) GetTicker(symbol string) BTCeTicker {
|
||||
func (b *BTCE) GetTicker(symbol string) (map[string]BTCeTicker, error) {
|
||||
type Response struct {
|
||||
Data map[string]BTCeTicker
|
||||
}
|
||||
@@ -133,10 +147,9 @@ func (b *BTCE) GetTicker(symbol string) BTCeTicker {
|
||||
err := SendHTTPGetRequest(req, true, &response.Data)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return BTCeTicker{}
|
||||
return nil, err
|
||||
}
|
||||
return response.Data[symbol]
|
||||
return response.Data, nil
|
||||
}
|
||||
|
||||
func (b *BTCE) GetDepth(symbol string) {
|
||||
|
||||
@@ -30,7 +30,8 @@ type BTCMarkets struct {
|
||||
Ticker map[string]BTCMarketsTicker
|
||||
APIKey, APISecret string
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type BTCMarketsTicker struct {
|
||||
@@ -123,36 +124,26 @@ func (b *BTCMarkets) GetFee() float64 {
|
||||
func (b *BTCMarkets) Run() {
|
||||
if b.Verbose {
|
||||
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", b.GetName(), len(b.EnabledPairs), b.EnabledPairs)
|
||||
}
|
||||
|
||||
for b.Enabled {
|
||||
go func() {
|
||||
BTCMarketsBTC, err := b.GetTicker("BTC")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
b.Ticker["BTC"] = BTCMarketsBTC
|
||||
BTCMarketsBTCLastUSD, _ := ConvertCurrency(BTCMarketsBTC.LastPrice, "AUD", "USD")
|
||||
BTCMarketsBTCBestBidUSD, _ := ConvertCurrency(BTCMarketsBTC.BestBID, "AUD", "USD")
|
||||
BTCMarketsBTCBestAskUSD, _ := ConvertCurrency(BTCMarketsBTC.BestAsk, "AUD", "USD")
|
||||
log.Printf("BTC Markets BTC: Last %f (%f) Bid %f (%f) Ask %f (%f)\n", BTCMarketsBTCLastUSD, BTCMarketsBTC.LastPrice, BTCMarketsBTCBestBidUSD, BTCMarketsBTC.BestBID, BTCMarketsBTCBestAskUSD, BTCMarketsBTC.BestAsk)
|
||||
AddExchangeInfo(b.GetName(), "BTC", BTCMarketsBTCLastUSD, 0)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
BTCMarketsLTC, err := b.GetTicker("LTC")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
b.Ticker["LTC"] = BTCMarketsLTC
|
||||
BTCMarketsLTCLastUSD, _ := ConvertCurrency(BTCMarketsLTC.LastPrice, "AUD", "USD")
|
||||
BTCMarketsLTCBestBidUSD, _ := ConvertCurrency(BTCMarketsLTC.BestBID, "AUD", "USD")
|
||||
BTCMarketsLTCBestAskUSD, _ := ConvertCurrency(BTCMarketsLTC.BestAsk, "AUD", "USD")
|
||||
log.Printf("BTC Markets LTC: Last %f (%f) Bid %f (%f) Ask %f (%f)", BTCMarketsLTCLastUSD, BTCMarketsLTC.LastPrice, BTCMarketsLTCBestBidUSD, BTCMarketsLTC.BestBID, BTCMarketsLTCBestAskUSD, BTCMarketsLTC.BestAsk)
|
||||
AddExchangeInfo(b.GetName(), "LTC", BTCMarketsLTCLastUSD, 0)
|
||||
}()
|
||||
for _, x := range b.EnabledPairs {
|
||||
currency := x
|
||||
go func() {
|
||||
ticker, err := b.GetTicker(currency)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
b.Ticker[currency] = ticker
|
||||
BTCMarketsLastUSD, _ := ConvertCurrency(ticker.LastPrice, "AUD", "USD")
|
||||
BTCMarketsBestBidUSD, _ := ConvertCurrency(ticker.BestBID, "AUD", "USD")
|
||||
BTCMarketsBestAskUSD, _ := ConvertCurrency(ticker.BestAsk, "AUD", "USD")
|
||||
log.Printf("BTC Markets %s: Last %f (%f) Bid %f (%f) Ask %f (%f)\n", currency, BTCMarketsLastUSD, ticker.LastPrice, BTCMarketsBestBidUSD, ticker.BestBID, BTCMarketsBestAskUSD, ticker.BestAsk)
|
||||
AddExchangeInfo(b.GetName(), currency, BTCMarketsLastUSD, 0)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * b.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@ type Coinbase struct {
|
||||
Password, APIKey, APISecret string
|
||||
TakerFee, MakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type CoinbaseTicker struct {
|
||||
@@ -129,25 +130,36 @@ func (c *Coinbase) Run() {
|
||||
if c.Verbose {
|
||||
log.Printf("%s Websocket: %s. (url: %s).\n", c.GetName(), IsEnabled(c.Websocket), COINBASE_WEBSOCKET_URL)
|
||||
log.Printf("%s polling delay: %ds.\n", c.GetName(), c.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", c.GetName(), len(c.EnabledPairs), c.EnabledPairs)
|
||||
}
|
||||
|
||||
if c.Websocket {
|
||||
go c.WebsocketClient()
|
||||
}
|
||||
|
||||
exchangeProducts, err := c.GetProducts()
|
||||
if err != nil {
|
||||
log.Printf("%s Failed to get available products.\n", c.GetName())
|
||||
} else {
|
||||
currencies := []string{}
|
||||
for _, x := range exchangeProducts {
|
||||
if x.ID != "BTC" && x.ID != "USD" && x.ID != "GBP" {
|
||||
currencies = append(currencies, x.ID[0:3]+x.ID[4:])
|
||||
}
|
||||
}
|
||||
c.AvailablePairs = currencies
|
||||
}
|
||||
|
||||
for c.Enabled {
|
||||
go func() {
|
||||
CoinbaseStats := c.GetStats("BTC-USD")
|
||||
CoinbaseTicker := c.GetTicker("BTC-USD")
|
||||
log.Printf("Coinbase BTC: Last $%f High $%f Low $%f Volume %f\n", CoinbaseTicker.Price, CoinbaseStats.High, CoinbaseStats.Low, CoinbaseStats.Volume)
|
||||
AddExchangeInfo(c.GetName(), "BTC", CoinbaseTicker.Price, CoinbaseStats.Volume)
|
||||
}()
|
||||
go func() {
|
||||
CoinbaseStats := c.GetStats("BTC-GBP")
|
||||
CoinbaseTicker := c.GetTicker("BTC-GBP")
|
||||
log.Printf("Coinbase BTC: Last £%f High £%f Low £%f Volume %f\n", CoinbaseTicker.Price, CoinbaseStats.High, CoinbaseStats.Low, CoinbaseStats.Volume)
|
||||
AddExchangeInfo(c.GetName(), "BTC-GDP", CoinbaseTicker.Price, CoinbaseStats.Volume)
|
||||
}()
|
||||
for _, x := range c.EnabledPairs {
|
||||
currency := x[0:3] + "-" + x[3:]
|
||||
go func() {
|
||||
stats := c.GetStats(currency)
|
||||
ticker := c.GetTicker(currency)
|
||||
log.Printf("Coinbase %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Price, stats.High, stats.Low, stats.Volume)
|
||||
AddExchangeInfo(c.GetName(), currency, ticker.Price, stats.Volume)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * c.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
@@ -166,15 +178,15 @@ func (c *Coinbase) SetAPIKeys(password, apiKey, apiSecret string) {
|
||||
c.APISecret = string(result)
|
||||
}
|
||||
|
||||
func (c *Coinbase) GetProducts() {
|
||||
func (c *Coinbase) GetProducts() ([]CoinbaseProduct, error) {
|
||||
products := []CoinbaseProduct{}
|
||||
err := SendHTTPGetRequest(COINBASE_API_URL+COINBASE_PRODUCTS, true, &products)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Println(products)
|
||||
return products, nil
|
||||
}
|
||||
|
||||
func (c *Coinbase) GetOrderbook(symbol string, level int) {
|
||||
|
||||
@@ -96,7 +96,11 @@ func (c *Coinbase) WebsocketClient() {
|
||||
|
||||
log.Printf("%s Connected to Websocket.\n", c.GetName())
|
||||
|
||||
currencies := []string{"BTC-USD", "BTC-GBP"}
|
||||
currencies := []string{}
|
||||
for _, x := range c.EnabledPairs {
|
||||
currency := x[0:3] + "-" + x[3:]
|
||||
currencies = append(currencies, currency)
|
||||
}
|
||||
|
||||
for _, x := range currencies {
|
||||
err = c.WebsocketSubscribe(x, conn)
|
||||
|
||||
@@ -198,6 +198,7 @@ func SendHTTPGetRequest(url string, jsonDecode bool, result interface{}) (err er
|
||||
}
|
||||
|
||||
contents, err := ioutil.ReadAll(res.Body)
|
||||
//log.Println(string(contents))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
36
config.go
36
config.go
@@ -1,9 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"time"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -11,30 +11,31 @@ const (
|
||||
)
|
||||
|
||||
type SMSContacts struct {
|
||||
Name string
|
||||
Number string
|
||||
Name string
|
||||
Number string
|
||||
Enabled bool
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
Name string
|
||||
Name string
|
||||
SMSGlobalUsername string
|
||||
SMSGlobalPassword string
|
||||
SMSContacts []SMSContacts
|
||||
Exchanges []Exchanges
|
||||
SMSContacts []SMSContacts
|
||||
Exchanges []Exchanges
|
||||
}
|
||||
|
||||
type Exchanges struct {
|
||||
Name string
|
||||
Enabled bool
|
||||
Verbose bool
|
||||
Websocket bool
|
||||
Name string
|
||||
Enabled bool
|
||||
Verbose bool
|
||||
Websocket bool
|
||||
RESTPollingDelay time.Duration
|
||||
APIKey string
|
||||
APISecret string
|
||||
ClientID string
|
||||
Pairs string
|
||||
BaseCurrencies string
|
||||
APIKey string
|
||||
APISecret string
|
||||
ClientID string
|
||||
AvailablePairs string
|
||||
EnabledPairs string
|
||||
BaseCurrencies string
|
||||
}
|
||||
|
||||
func ReadConfig() (Config, error) {
|
||||
@@ -49,7 +50,7 @@ func ReadConfig() (Config, error) {
|
||||
return cfg, err
|
||||
}
|
||||
|
||||
func SaveConfig() (error) {
|
||||
func SaveConfig() error {
|
||||
payload, err := json.MarshalIndent(bot.config, "", " ")
|
||||
|
||||
if err != nil {
|
||||
@@ -61,7 +62,6 @@ func SaveConfig() (error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1,172 +1,186 @@
|
||||
{
|
||||
"Name": "Skynet",
|
||||
"SMSGlobalUsername": "Username",
|
||||
"SMSGlobalPassword": "Password",
|
||||
"SMSContacts" : [
|
||||
{
|
||||
"Name": "Bob",
|
||||
"Number": "12345",
|
||||
"Enabled": false
|
||||
}
|
||||
],
|
||||
"Exchanges": [
|
||||
{
|
||||
"Name": "ANX",
|
||||
"Pairs": "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",
|
||||
"Pairs": "BTCUSD,LTCUSD,DRKUSD",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "USD",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": false,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "Bitstamp",
|
||||
"Pairs": "BTCUSD",
|
||||
"ClientID": "ClientID",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "USD",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": true,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "BTC China",
|
||||
"Pairs": "BTCCNY,LTCCNY,LTCBTC",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "CNY",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": false,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "BTCE",
|
||||
"Pairs": "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",
|
||||
"Pairs": "LTCAUD,BTCAUD,LTCBTC",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "AUD",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": false,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "Coinbase",
|
||||
"Pairs": "BTCUSD",
|
||||
"ClientID": "Password",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "USD,GBP",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": true,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "Cryptsy",
|
||||
"Pairs": "42BTC,42XRP,ACBTC,ACXRP,ACOINBTC,ADTLTC,AEROBTC,AEROXRP,AGSBTC,ALFBTC,ALNBTC,ALNXRP,AMCBTC,ANCBTC,ANCLTC,ANCXRP,APEXBTC,APEXXRP,ARCHBTC,ARGBTC,ARGXRP,ARIBTC,ASCLTC,AURBTC,AURLTC,AURXRP,AXRBTC,BATLTC,BCXBTC,BENBTC,BETBTC,BITBBTC,BLKBTC,BLKLTC,BLKXRP,BLUBTC,BLUXRP,BNCRBTC,BOSTBTC,BQCBTC,BTBBTC,BTBXRP,BTCUSD,BTCDBTC,BTCDXRP,BTEBTC,BTGBTC,BTGXRP,BTMBTC,BTMXRP,BUKBTC,CACHBTC,CAIxBTC,CANNBTC,CANNXRP,CAPBTC,CAPXRP,CASHBTC,CATBTC,CBXBTC,CBXLTC,CBXXRP,CCNBTC,CENTXRP,CINBTC,CINNIBTC,CKCBTC,CKCXRP,CLAMBTC,CLOAKBTC,CLOAKLTC,CLOAKXRP,CLRBTC,CLRXRP,CMCBTC,CNCBTC,CNCLTC,CNCXRP,CNLBTC,COLLTC,COLXRP,COMMBTC,COOLBTC,CPRLTC,CRACKBTC,CRACKXRP,CRAIGBTC,CRAIGXRP,CRCBTC,CRYPTBTC,CRYPTLTC,CRYPTXRP,CSCBTC,CTMLTC,DBLLTC,DEMBTC,DEMXRP,DGBBTC,DGBXRP,DGCBTC,DGCLTC,DGCXRP,DIMELTC,DMCLTC,DMDBTC,DMDXRP,DOGEBTC,DOGELTC,DOGEUSD,DOGEXRP,DOGEDBTC,DRKBTC,DRKLTC,DRKUSD,DRKXRP,DRKCBTC,DRKCXRP,DSBBTC,DTBTC,DTXRP,DVCBTC,DVCLTC,DVCXRP,EACBTC,EACLTC,EACXRP,EFLBTC,ELCBTC,ELPLTC,EMC2BTC,EMC2XRP,EMDBTC,EXCLBTC,EXEBTC,EXEXRP,EZCBTC,EZCLTC,FC2BTC,FFCBTC,FFCXRP,FIBREBTC,FIBREXRP,FLAPLTC,FLAPXRP,FLOLTC,FLOXRP,FLTBTC,FLTXRP,FRACBTC,FRCBTC,FRCXRP,FRKBTC,FRKLTC,FRKXRP,FSTBTC,FSTLTC,FTCBTC,FTCLTC,FTCUSD,FTCXRP,GBBTC,GBXRP,GDCBTC,GLCBTC,GLDBTC,GLDLTC,GLDXRP,GLXBTC,GLYPHBTC,GLYPHLTC,GLYPHXRP,GMELTC,GMLBTC,GUEBTC,GUELTC,HALBTC,HALXRP,HBNBTC,HBNXRP,HTML5LTC,HTML5XRP,HUCBTC,HUCXRP,HVCBTC,HVCXRP,HYPBTC,ICBBTC,ICBXRP,IFCBTC,IFCLTC,IFCXRP,IOCBTC,IOCXRP,IXCBTC,IXCXRP,JBSBTC,JKCBTC,JUDGEBTC,JUDGEXRP,KARMLTC,KARMXRP,KDCBTC,KEYBTC,KEYXRP,KGCBTC,LABBTC,LEAFLTC,LEAFXRP,LGDBTC,LK7BTC,LKYBTC,LKYXRP,LOTLTC,LOTXRP,LSDBTC,LSDXRP,LTBBTC,LTBXRP,LTCBTC,LTCUSD,LTCXRP,LTCDBTC,LTCDXRP,LTCXBTC,LTCXLTC,LXCBTC,LXCXRP,LYCBTC,MAXBTC,MAXLTC,MAXXRP,MECBTC,MECLTC,MECXRP,MEDBTC,MEMLTC,MEOWLTC,MEOWXRP,MINBTC,MINTBTC,MINTXRP,MNBTC,MNCBTC,MNCXRP,MNEBTC,MOONLTC,MOONXRP,MRYBTC,MRYXRP,MSTLTC,MYRBTC,MYRXRP,MYSTBTC,MZCBTC,MZCXRP,NANBTC,NAUTBTC,NAUTXRP,NAVBTC,NAVXRP,NBLBTC,NECBTC,NECXRP,NETBTC,NETLTC,NETXRP,NMBBTC,NMBXRP,NMCBTC,NMCXRP,NOBLBTC,NRBBTC,NRSBTC,NVCBTC,NVCXRP,NXTBTC,NXTLTC,NXTUSD,NXTXRP,NYANBTC,NYANLTC,OPALBTC,OPALXRP,ORBBTC,ORBXRP,OSCBTC,OSCXRP,PHSBTC,PHSXRP,PointsBTC,POTBTC,POTXRP,PPCBTC,PPCLTC,PPCUSD,PPCXRP,PSEUDBTC,PTSBTC,PTSXRP,PXCBTC,PXCLTC,PXCXRP,PYCBTC,QRKBTC,QRKLTC,QRKXRP,RBBTLTC,RDDBTC,RDDLTC,RDDUSD,RDDXRP,REDLTC,RIPOBTC,RPCBTC,RT2BTC,RYCBTC,RZRBTC,RZRLTC,RZRXRP,SAT2BTC,SBCBTC,SBCLTC,SDCBTC,SDCXRP,SFRBTC,SFRXRP,SHADEBTC,SHADEXRP,SHLDBTC,SILKBTC,SILKXRP,SLGBTC,SLGXRP,SMCBTC,SOLEBTC,SPABTC,SPAXRP,SPTBTC,SRCBTC,SRCXRP,SSVBTC,SSVXRP,STRBTC,SUPERBTC,SUPERLTC,SUPERXRP,SWIFTBTC,SXCBTC,SXCLTC,SXCXRP,SYNCBTC,SYSBTC,SYSXRP,TAGBTC,TAGXRP,TAKBTC,TEKBTC,TEKXRP,TESBTC,TESLTC,TESXRP,TGCBTC,TIPSLTC,TIPSXRP,TITBTC,TIXLTC,TORBTC,TRCBTC,TRCXRP,TTCBTC,ULTCBTC,UNBBTC,UNBXRP,UNOBTC,UNOXRP,UROBTC,UROXRP,USDeBTC,USDeXRP,UTCBTC,UTCXRP,UTILBTC,VDOBTC,VIABTC,VIAXRP,VOOTBTC,VRCBTC,VRCLTC,VRCXRP,VTCBTC,VTCLTC,VTCXRP,WCBTC,WCXRP,WDCBTC,WDCLTC,WDCXRP,XAIBTC,XBOTBTC,XBOTXRP,XCBTC,XCLTC,XCXRP,XCASHBTC,XCRBTC,XCRXRP,XJOBTC,XLBBTC,XNCLTC,XPMBTC,XPMLTC,XPMXRP,XPYBTC,XPYUSD,XRPBTC,XRPUSD,XSTBTC,XSTXRP,XXXBTC,XXXXRP,YACBTC,YACLTC,YACXRP,YBCBTC,ZCCBTC,ZEDBTC,ZEITLTC,ZEITXRP,ZETBTC,ZETLTC,ZETXRP,ZRCBTC,ZRCUSD",
|
||||
"ClientID": "Password",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "USD",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": true,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "Huobi",
|
||||
"Pairs": "BTCCNY,LTCCNY,LTCBTC",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "CNY",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": false,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "ITBIT",
|
||||
"Pairs": "XBTUSD,XBTSGD,XBTEUR",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"ClientID": "ClientID",
|
||||
"BaseCurrencies": "USD,SGD,EUR",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": false,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "Kraken",
|
||||
"Pairs": "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",
|
||||
"Pairs": "BTCCNY,LTCCNY,LTCBTC",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "CNY",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": true,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "OKCOIN China",
|
||||
"Pairs": "BTCCNY,LTCCNY",
|
||||
"APIKey": "Key",
|
||||
"APISecret": "Secret",
|
||||
"BaseCurrencies": "CNY",
|
||||
"Enabled": true,
|
||||
"Verbose": false,
|
||||
"Websocket": true,
|
||||
"RESTPollingDelay": 10
|
||||
},
|
||||
{
|
||||
"Name": "OKCOIN International",
|
||||
"Pairs": "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",
|
||||
"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": "42BTC,42XRP,ACBTC,ACXRP,ACOINBTC,ADTLTC,AEROBTC,AEROXRP,AGSBTC,ALFBTC,ALNBTC,ALNXRP,AMCBTC,ANCBTC,ANCLTC,ANCXRP,APEXBTC,APEXXRP,ARCHBTC,ARGBTC,ARGXRP,ARIBTC,ASCLTC,AURBTC,AURLTC,AURXRP,AXRBTC,BATLTC,BCXBTC,BENBTC,BETBTC,BITBBTC,BLKBTC,BLKLTC,BLKXRP,BLUBTC,BLUXRP,BNCRBTC,BOSTBTC,BQCBTC,BTBBTC,BTBXRP,BTCUSD,BTCDBTC,BTCDXRP,BTEBTC,BTGBTC,BTGXRP,BTMBTC,BTMXRP,BUKBTC,CACHBTC,CAIxBTC,CANNBTC,CANNXRP,CAPBTC,CAPXRP,CASHBTC,CATBTC,CBXBTC,CBXLTC,CBXXRP,CCNBTC,CENTXRP,CINBTC,CINNIBTC,CKCBTC,CKCXRP,CLAMBTC,CLOAKBTC,CLOAKLTC,CLOAKXRP,CLRBTC,CLRXRP,CMCBTC,CNCBTC,CNCLTC,CNCXRP,CNLBTC,COLLTC,COLXRP,COMMBTC,COOLBTC,CPRLTC,CRACKBTC,CRACKXRP,CRAIGBTC,CRAIGXRP,CRCBTC,CRYPTBTC,CRYPTLTC,CRYPTXRP,CSCBTC,CTMLTC,DBLLTC,DEMBTC,DEMXRP,DGBBTC,DGBXRP,DGCBTC,DGCLTC,DGCXRP,DIMELTC,DMCLTC,DMDBTC,DMDXRP,DOGEBTC,DOGELTC,DOGEUSD,DOGEXRP,DOGEDBTC,DRKBTC,DRKLTC,DRKUSD,DRKXRP,DRKCBTC,DRKCXRP,DSBBTC,DTBTC,DTXRP,DVCBTC,DVCLTC,DVCXRP,EACBTC,EACLTC,EACXRP,EFLBTC,ELCBTC,ELPLTC,EMC2BTC,EMC2XRP,EMDBTC,EXCLBTC,EXEBTC,EXEXRP,EZCBTC,EZCLTC,FC2BTC,FFCBTC,FFCXRP,FIBREBTC,FIBREXRP,FLAPLTC,FLAPXRP,FLOLTC,FLOXRP,FLTBTC,FLTXRP,FRACBTC,FRCBTC,FRCXRP,FRKBTC,FRKLTC,FRKXRP,FSTBTC,FSTLTC,FTCBTC,FTCLTC,FTCUSD,FTCXRP,GBBTC,GBXRP,GDCBTC,GLCBTC,GLDBTC,GLDLTC,GLDXRP,GLXBTC,GLYPHBTC,GLYPHLTC,GLYPHXRP,GMELTC,GMLBTC,GUEBTC,GUELTC,HALBTC,HALXRP,HBNBTC,HBNXRP,HTML5LTC,HTML5XRP,HUCBTC,HUCXRP,HVCBTC,HVCXRP,HYPBTC,ICBBTC,ICBXRP,IFCBTC,IFCLTC,IFCXRP,IOCBTC,IOCXRP,IXCBTC,IXCXRP,JBSBTC,JKCBTC,JUDGEBTC,JUDGEXRP,KARMLTC,KARMXRP,KDCBTC,KEYBTC,KEYXRP,KGCBTC,LABBTC,LEAFLTC,LEAFXRP,LGDBTC,LK7BTC,LKYBTC,LKYXRP,LOTLTC,LOTXRP,LSDBTC,LSDXRP,LTBBTC,LTBXRP,LTCBTC,LTCUSD,LTCXRP,LTCDBTC,LTCDXRP,LTCXBTC,LTCXLTC,LXCBTC,LXCXRP,LYCBTC,MAXBTC,MAXLTC,MAXXRP,MECBTC,MECLTC,MECXRP,MEDBTC,MEMLTC,MEOWLTC,MEOWXRP,MINBTC,MINTBTC,MINTXRP,MNBTC,MNCBTC,MNCXRP,MNEBTC,MOONLTC,MOONXRP,MRYBTC,MRYXRP,MSTLTC,MYRBTC,MYRXRP,MYSTBTC,MZCBTC,MZCXRP,NANBTC,NAUTBTC,NAUTXRP,NAVBTC,NAVXRP,NBLBTC,NECBTC,NECXRP,NETBTC,NETLTC,NETXRP,NMBBTC,NMBXRP,NMCBTC,NMCXRP,NOBLBTC,NRBBTC,NRSBTC,NVCBTC,NVCXRP,NXTBTC,NXTLTC,NXTUSD,NXTXRP,NYANBTC,NYANLTC,OPALBTC,OPALXRP,ORBBTC,ORBXRP,OSCBTC,OSCXRP,PHSBTC,PHSXRP,PointsBTC,POTBTC,POTXRP,PPCBTC,PPCLTC,PPCUSD,PPCXRP,PSEUDBTC,PTSBTC,PTSXRP,PXCBTC,PXCLTC,PXCXRP,PYCBTC,QRKBTC,QRKLTC,QRKXRP,RBBTLTC,RDDBTC,RDDLTC,RDDUSD,RDDXRP,REDLTC,RIPOBTC,RPCBTC,RT2BTC,RYCBTC,RZRBTC,RZRLTC,RZRXRP,SAT2BTC,SBCBTC,SBCLTC,SDCBTC,SDCXRP,SFRBTC,SFRXRP,SHADEBTC,SHADEXRP,SHLDBTC,SILKBTC,SILKXRP,SLGBTC,SLGXRP,SMCBTC,SOLEBTC,SPABTC,SPAXRP,SPTBTC,SRCBTC,SRCXRP,SSVBTC,SSVXRP,STRBTC,SUPERBTC,SUPERLTC,SUPERXRP,SWIFTBTC,SXCBTC,SXCLTC,SXCXRP,SYNCBTC,SYSBTC,SYSXRP,TAGBTC,TAGXRP,TAKBTC,TEKBTC,TEKXRP,TESBTC,TESLTC,TESXRP,TGCBTC,TIPSLTC,TIPSXRP,TITBTC,TIXLTC,TORBTC,TRCBTC,TRCXRP,TTCBTC,ULTCBTC,UNBBTC,UNBXRP,UNOBTC,UNOXRP,UROBTC,UROXRP,USDeBTC,USDeXRP,UTCBTC,UTCXRP,UTILBTC,VDOBTC,VIABTC,VIAXRP,VOOTBTC,VRCBTC,VRCLTC,VRCXRP,VTCBTC,VTCLTC,VTCXRP,WCBTC,WCXRP,WDCBTC,WDCLTC,WDCXRP,XAIBTC,XBOTBTC,XBOTXRP,XCBTC,XCLTC,XCXRP,XCASHBTC,XCRBTC,XCRXRP,XJOBTC,XLBBTC,XNCLTC,XPMBTC,XPMLTC,XPMXRP,XPYBTC,XPYUSD,XRPBTC,XRPUSD,XSTBTC,XSTXRP,XXXBTC,XXXXRP,YACBTC,YACLTC,YACXRP,YBCBTC,ZCCBTC,ZEDBTC,ZEITLTC,ZEITXRP,ZETBTC,ZETLTC,ZETXRP,ZRCBTC,ZRCUSD",
|
||||
"EnabledPairs": "42BTC,42XRP,ACBTC,ACXRP,ACOINBTC,ADTLTC,AEROBTC,AEROXRP,AGSBTC,ALFBTC,ALNBTC,ALNXRP,AMCBTC,ANCBTC,ANCLTC,ANCXRP,APEXBTC,APEXXRP,ARCHBTC,ARGBTC,ARGXRP,ARIBTC,ASCLTC,AURBTC,AURLTC,AURXRP,AXRBTC,BATLTC,BCXBTC,BENBTC,BETBTC,BITBBTC,BLKBTC,BLKLTC,BLKXRP,BLUBTC,BLUXRP,BNCRBTC,BOSTBTC,BQCBTC,BTBBTC,BTBXRP,BTCUSD,BTCDBTC,BTCDXRP,BTEBTC,BTGBTC,BTGXRP,BTMBTC,BTMXRP,BUKBTC,CACHBTC,CAIxBTC,CANNBTC,CANNXRP,CAPBTC,CAPXRP,CASHBTC,CATBTC,CBXBTC,CBXLTC,CBXXRP,CCNBTC,CENTXRP,CINBTC,CINNIBTC,CKCBTC,CKCXRP,CLAMBTC,CLOAKBTC,CLOAKLTC,CLOAKXRP,CLRBTC,CLRXRP,CMCBTC,CNCBTC,CNCLTC,CNCXRP,CNLBTC,COLLTC,COLXRP,COMMBTC,COOLBTC,CPRLTC,CRACKBTC,CRACKXRP,CRAIGBTC,CRAIGXRP,CRCBTC,CRYPTBTC,CRYPTLTC,CRYPTXRP,CSCBTC,CTMLTC,DBLLTC,DEMBTC,DEMXRP,DGBBTC,DGBXRP,DGCBTC,DGCLTC,DGCXRP,DIMELTC,DMCLTC,DMDBTC,DMDXRP,DOGEBTC,DOGELTC,DOGEUSD,DOGEXRP,DOGEDBTC,DRKBTC,DRKLTC,DRKUSD,DRKXRP,DRKCBTC,DRKCXRP,DSBBTC,DTBTC,DTXRP,DVCBTC,DVCLTC,DVCXRP,EACBTC,EACLTC,EACXRP,EFLBTC,ELCBTC,ELPLTC,EMC2BTC,EMC2XRP,EMDBTC,EXCLBTC,EXEBTC,EXEXRP,EZCBTC,EZCLTC,FC2BTC,FFCBTC,FFCXRP,FIBREBTC,FIBREXRP,FLAPLTC,FLAPXRP,FLOLTC,FLOXRP,FLTBTC,FLTXRP,FRACBTC,FRCBTC,FRCXRP,FRKBTC,FRKLTC,FRKXRP,FSTBTC,FSTLTC,FTCBTC,FTCLTC,FTCUSD,FTCXRP,GBBTC,GBXRP,GDCBTC,GLCBTC,GLDBTC,GLDLTC,GLDXRP,GLXBTC,GLYPHBTC,GLYPHLTC,GLYPHXRP,GMELTC,GMLBTC,GUEBTC,GUELTC,HALBTC,HALXRP,HBNBTC,HBNXRP,HTML5LTC,HTML5XRP,HUCBTC,HUCXRP,HVCBTC,HVCXRP,HYPBTC,ICBBTC,ICBXRP,IFCBTC,IFCLTC,IFCXRP,IOCBTC,IOCXRP,IXCBTC,IXCXRP,JBSBTC,JKCBTC,JUDGEBTC,JUDGEXRP,KARMLTC,KARMXRP,KDCBTC,KEYBTC,KEYXRP,KGCBTC,LABBTC,LEAFLTC,LEAFXRP,LGDBTC,LK7BTC,LKYBTC,LKYXRP,LOTLTC,LOTXRP,LSDBTC,LSDXRP,LTBBTC,LTBXRP,LTCBTC,LTCUSD,LTCXRP,LTCDBTC,LTCDXRP,LTCXBTC,LTCXLTC,LXCBTC,LXCXRP,LYCBTC,MAXBTC,MAXLTC,MAXXRP,MECBTC,MECLTC,MECXRP,MEDBTC,MEMLTC,MEOWLTC,MEOWXRP,MINBTC,MINTBTC,MINTXRP,MNBTC,MNCBTC,MNCXRP,MNEBTC,MOONLTC,MOONXRP,MRYBTC,MRYXRP,MSTLTC,MYRBTC,MYRXRP,MYSTBTC,MZCBTC,MZCXRP,NANBTC,NAUTBTC,NAUTXRP,NAVBTC,NAVXRP,NBLBTC,NECBTC,NECXRP,NETBTC,NETLTC,NETXRP,NMBBTC,NMBXRP,NMCBTC,NMCXRP,NOBLBTC,NRBBTC,NRSBTC,NVCBTC,NVCXRP,NXTBTC,NXTLTC,NXTUSD,NXTXRP,NYANBTC,NYANLTC,OPALBTC,OPALXRP,ORBBTC,ORBXRP,OSCBTC,OSCXRP,PHSBTC,PHSXRP,PointsBTC,POTBTC,POTXRP,PPCBTC,PPCLTC,PPCUSD,PPCXRP,PSEUDBTC,PTSBTC,PTSXRP,PXCBTC,PXCLTC,PXCXRP,PYCBTC,QRKBTC,QRKLTC,QRKXRP,RBBTLTC,RDDBTC,RDDLTC,RDDUSD,RDDXRP,REDLTC,RIPOBTC,RPCBTC,RT2BTC,RYCBTC,RZRBTC,RZRLTC,RZRXRP,SAT2BTC,SBCBTC,SBCLTC,SDCBTC,SDCXRP,SFRBTC,SFRXRP,SHADEBTC,SHADEXRP,SHLDBTC,SILKBTC,SILKXRP,SLGBTC,SLGXRP,SMCBTC,SOLEBTC,SPABTC,SPAXRP,SPTBTC,SRCBTC,SRCXRP,SSVBTC,SSVXRP,STRBTC,SUPERBTC,SUPERLTC,SUPERXRP,SWIFTBTC,SXCBTC,SXCLTC,SXCXRP,SYNCBTC,SYSBTC,SYSXRP,TAGBTC,TAGXRP,TAKBTC,TEKBTC,TEKXRP,TESBTC,TESLTC,TESXRP,TGCBTC,TIPSLTC,TIPSXRP,TITBTC,TIXLTC,TORBTC,TRCBTC,TRCXRP,TTCBTC,ULTCBTC,UNBBTC,UNBXRP,UNOBTC,UNOXRP,UROBTC,UROXRP,USDeBTC,USDeXRP,UTCBTC,UTCXRP,UTILBTC,VDOBTC,VIABTC,VIAXRP,VOOTBTC,VRCBTC,VRCLTC,VRCXRP,VTCBTC,VTCLTC,VTCXRP,WCBTC,WCXRP,WDCBTC,WDCLTC,WDCXRP,XAIBTC,XBOTBTC,XBOTXRP,XCBTC,XCLTC,XCXRP,XCASHBTC,XCRBTC,XCRXRP,XJOBTC,XLBBTC,XNCLTC,XPMBTC,XPMLTC,XPMXRP,XPYBTC,XPYUSD,XRPBTC,XRPUSD,XSTBTC,XSTXRP,XXXBTC,XXXXRP,YACBTC,YACLTC,YACXRP,YBCBTC,ZCCBTC,ZEDBTC,ZEITLTC,ZEITXRP,ZETBTC,ZETLTC,ZETXRP,ZRCBTC,ZRCUSD",
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -39,7 +39,8 @@ type Cryptsy struct {
|
||||
APIKey, APISecret string
|
||||
TakerFee, MakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type CryptsyMarket struct {
|
||||
|
||||
@@ -126,7 +126,7 @@ func (e *Event) CheckCondition() bool {
|
||||
} else if bot.exchange.itbit.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.itbit.GetTicker("XBTUSD").LastPrice
|
||||
} else if bot.exchange.btce.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.btce.GetTicker("btc_usd").Last
|
||||
lastPrice = bot.exchange.btce.Ticker["btc_usd"].Last
|
||||
} else if bot.exchange.btcmarkets.GetName() == e.Exchange {
|
||||
lastPrice = bot.exchange.btcmarkets.Ticker["BTC"].LastPrice
|
||||
} else if bot.exchange.okcoinChina.GetName() == e.Exchange {
|
||||
|
||||
32
huobihttp.go
32
huobihttp.go
@@ -23,7 +23,8 @@ type HUOBI struct {
|
||||
AccessKey, SecretKey string
|
||||
Fee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type HuobiTicker struct {
|
||||
@@ -74,6 +75,7 @@ func (h *HUOBI) Run() {
|
||||
if h.Verbose {
|
||||
log.Printf("%s Websocket: %s (url: %s).\n", h.GetName(), IsEnabled(h.Websocket), HUOBI_SOCKETIO_ADDRESS)
|
||||
log.Printf("%s polling delay: %ds.\n", h.GetName(), h.RESTPollingDelay)
|
||||
log.Printf("%s %d currencies enabled: %s.\n", h.GetName(), len(h.EnabledPairs), h.EnabledPairs)
|
||||
}
|
||||
|
||||
if h.Websocket {
|
||||
@@ -81,23 +83,17 @@ func (h *HUOBI) Run() {
|
||||
}
|
||||
|
||||
for h.Enabled {
|
||||
go func() {
|
||||
HuobiBTC := h.GetTicker("btc")
|
||||
HuobiBTCLastUSD, _ := ConvertCurrency(HuobiBTC.Last, "CNY", "USD")
|
||||
HuobiBTCHighUSD, _ := ConvertCurrency(HuobiBTC.High, "CNY", "USD")
|
||||
HuobiBTCLowUSD, _ := ConvertCurrency(HuobiBTC.Low, "CNY", "USD")
|
||||
log.Printf("Huobi BTC: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", HuobiBTCLastUSD, HuobiBTC.Last, HuobiBTCHighUSD, HuobiBTC.High, HuobiBTCLowUSD, HuobiBTC.Low, HuobiBTC.Vol)
|
||||
AddExchangeInfo(h.GetName(), "BTC", HuobiBTCLastUSD, HuobiBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
HuobiLTC := h.GetTicker("ltc")
|
||||
HuobiLTCLastUSD, _ := ConvertCurrency(HuobiLTC.Last, "CNY", "USD")
|
||||
HuobiLTCHighUSD, _ := ConvertCurrency(HuobiLTC.High, "CNY", "USD")
|
||||
HuobiLTCLowUSD, _ := ConvertCurrency(HuobiLTC.Low, "CNY", "USD")
|
||||
log.Printf("Huobi LTC: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", HuobiLTCLastUSD, HuobiLTC.Last, HuobiLTCHighUSD, HuobiLTC.High, HuobiLTCLowUSD, HuobiLTC.Low, HuobiLTC.Vol)
|
||||
AddExchangeInfo(h.GetName(), "LTC", HuobiLTCLastUSD, HuobiLTC.Vol)
|
||||
}()
|
||||
for _, x := range h.EnabledPairs {
|
||||
currency := StringToLower(x[0:3])
|
||||
go func() {
|
||||
ticker := h.GetTicker(currency)
|
||||
HuobiLastUSD, _ := ConvertCurrency(ticker.Last, "CNY", "USD")
|
||||
HuobiHighUSD, _ := ConvertCurrency(ticker.High, "CNY", "USD")
|
||||
HuobiLowUSD, _ := ConvertCurrency(ticker.Low, "CNY", "USD")
|
||||
log.Printf("Huobi %s: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", currency, HuobiLastUSD, ticker.Last, HuobiHighUSD, ticker.High, HuobiLowUSD, ticker.Low, ticker.Vol)
|
||||
AddExchangeInfo(h.GetName(), StringToUpper(currency), HuobiLastUSD, ticker.Vol)
|
||||
}()
|
||||
}
|
||||
time.Sleep(time.Second * h.RESTPollingDelay)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,19 +163,15 @@ func (h *HUOBI) OnConnect(output chan socketio.Message) {
|
||||
log.Printf("%s Connected to Websocket.", h.GetName())
|
||||
}
|
||||
|
||||
msg := h.BuildHuobiWebsocketRequestExtra(HUOBI_SOCKET_REQ_SUBSCRIBE, 100, h.BuildHuobiWebsocketParamsList(HUOBI_SOCKET_MARKET_OVERVIEW, "btccny", "pushLong", "", "", "", "", ""))
|
||||
result, err := JSONEncode(msg)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
for _, x := range h.EnabledPairs {
|
||||
currency := StringToLower(x)
|
||||
msg := h.BuildHuobiWebsocketRequestExtra(HUOBI_SOCKET_REQ_SUBSCRIBE, 100, h.BuildHuobiWebsocketParamsList(HUOBI_SOCKET_MARKET_OVERVIEW, currency, "pushLong", "", "", "", "", ""))
|
||||
result, err := JSONEncode(msg)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
output <- socketio.CreateMessageEvent("request", string(result), nil, HuobiSocket.Version)
|
||||
}
|
||||
output <- socketio.CreateMessageEvent("request", string(result), nil, HuobiSocket.Version)
|
||||
|
||||
msg = h.BuildHuobiWebsocketRequestExtra(HUOBI_SOCKET_REQ_SUBSCRIBE, 100, h.BuildHuobiWebsocketParamsList(HUOBI_SOCKET_MARKET_OVERVIEW, "ltccny", "pushLong", "", "", "", "", ""))
|
||||
result, err = JSONEncode(msg)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
output <- socketio.CreateMessageEvent("request", string(result), nil, HuobiSocket.Version)
|
||||
}
|
||||
|
||||
func (h *HUOBI) OnDisconnect(output chan socketio.Message) {
|
||||
|
||||
@@ -23,7 +23,8 @@ type ItBit struct {
|
||||
ClientKey, APISecret, UserID string
|
||||
MakerFee, TakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type ItBitTicker struct {
|
||||
|
||||
@@ -45,7 +45,8 @@ type Kraken struct {
|
||||
ClientKey, APISecret string
|
||||
FiatFee, CryptoFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type KrakenResponse struct {
|
||||
|
||||
@@ -33,7 +33,8 @@ type LakeBTC struct {
|
||||
Email, APISecret string
|
||||
TakerFee, MakerFee float64
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type LakeBTCTicker struct {
|
||||
|
||||
44
main.go
44
main.go
@@ -103,7 +103,7 @@ func main() {
|
||||
err = RetrieveConfigCurrencyPairs(bot.config)
|
||||
|
||||
if err != nil {
|
||||
log.Println("Fatal error retrieving config currency pairs. Error: ", err)
|
||||
log.Println("Fatal error retrieving config currency AvailablePairs. Error: ", err)
|
||||
}
|
||||
|
||||
for _, exch := range bot.config.Exchanges {
|
||||
@@ -117,7 +117,8 @@ func main() {
|
||||
bot.exchange.anx.Verbose = exch.Verbose
|
||||
bot.exchange.anx.Websocket = exch.Websocket
|
||||
bot.exchange.anx.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.anx.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.anx.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.anx.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.anx.Run()
|
||||
}
|
||||
} else if bot.exchange.btcchina.GetName() == exch.Name {
|
||||
@@ -130,7 +131,8 @@ func main() {
|
||||
bot.exchange.btcchina.Verbose = exch.Verbose
|
||||
bot.exchange.btcchina.Websocket = exch.Websocket
|
||||
bot.exchange.btcchina.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.btcchina.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.btcchina.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.btcchina.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.btcchina.Run()
|
||||
}
|
||||
} else if bot.exchange.bitstamp.GetName() == exch.Name {
|
||||
@@ -143,7 +145,8 @@ func main() {
|
||||
bot.exchange.bitstamp.Verbose = exch.Verbose
|
||||
bot.exchange.bitstamp.Websocket = exch.Websocket
|
||||
bot.exchange.bitstamp.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.bitstamp.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -156,7 +159,8 @@ func main() {
|
||||
bot.exchange.bitfinex.Verbose = exch.Verbose
|
||||
bot.exchange.bitfinex.Websocket = exch.Websocket
|
||||
bot.exchange.bitfinex.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.bitfinex.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.bitfinex.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.bitfinex.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.bitfinex.Run()
|
||||
}
|
||||
} else if bot.exchange.btce.GetName() == exch.Name {
|
||||
@@ -169,7 +173,8 @@ func main() {
|
||||
bot.exchange.btce.Verbose = exch.Verbose
|
||||
bot.exchange.btce.Websocket = exch.Websocket
|
||||
bot.exchange.btce.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.btce.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -182,7 +187,8 @@ func main() {
|
||||
bot.exchange.btcmarkets.Verbose = exch.Verbose
|
||||
bot.exchange.btcmarkets.Websocket = exch.Websocket
|
||||
bot.exchange.btcmarkets.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.btcmarkets.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -195,7 +201,8 @@ func main() {
|
||||
bot.exchange.coinbase.Verbose = exch.Verbose
|
||||
bot.exchange.coinbase.Websocket = exch.Websocket
|
||||
bot.exchange.coinbase.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.coinbase.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.coinbase.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.coinbase.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.coinbase.Run()
|
||||
}
|
||||
} else if bot.exchange.cryptsy.GetName() == exch.Name {
|
||||
@@ -208,7 +215,8 @@ func main() {
|
||||
bot.exchange.cryptsy.Verbose = exch.Verbose
|
||||
bot.exchange.cryptsy.Websocket = exch.Websocket
|
||||
bot.exchange.cryptsy.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.cryptsy.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.cryptsy.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.cryptsy.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.cryptsy.Run()
|
||||
}
|
||||
} else if bot.exchange.okcoinChina.GetName() == exch.Name {
|
||||
@@ -221,7 +229,8 @@ func main() {
|
||||
bot.exchange.okcoinChina.Verbose = exch.Verbose
|
||||
bot.exchange.okcoinChina.Websocket = exch.Websocket
|
||||
bot.exchange.okcoinChina.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.okcoinChina.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -234,7 +243,8 @@ func main() {
|
||||
bot.exchange.okcoinIntl.Verbose = exch.Verbose
|
||||
bot.exchange.okcoinIntl.Websocket = exch.Websocket
|
||||
bot.exchange.okcoinIntl.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.okcoinIntl.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -247,7 +257,8 @@ func main() {
|
||||
bot.exchange.itbit.Verbose = exch.Verbose
|
||||
bot.exchange.itbit.Websocket = exch.Websocket
|
||||
bot.exchange.itbit.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.itbit.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -260,7 +271,8 @@ func main() {
|
||||
bot.exchange.kraken.Verbose = exch.Verbose
|
||||
bot.exchange.kraken.Websocket = exch.Websocket
|
||||
bot.exchange.kraken.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.kraken.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
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 {
|
||||
@@ -273,7 +285,8 @@ func main() {
|
||||
bot.exchange.lakebtc.Verbose = exch.Verbose
|
||||
bot.exchange.lakebtc.Websocket = exch.Websocket
|
||||
bot.exchange.lakebtc.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.lakebtc.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.lakebtc.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.lakebtc.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.lakebtc.Run()
|
||||
}
|
||||
} else if bot.exchange.huobi.GetName() == exch.Name {
|
||||
@@ -286,7 +299,8 @@ func main() {
|
||||
bot.exchange.huobi.Verbose = exch.Verbose
|
||||
bot.exchange.huobi.Websocket = exch.Websocket
|
||||
bot.exchange.huobi.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
||||
bot.exchange.huobi.Pairs = SplitStrings(exch.Pairs, ",")
|
||||
bot.exchange.huobi.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
||||
bot.exchange.huobi.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
||||
go bot.exchange.huobi.Run()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ type OKCoin struct {
|
||||
RESTErrors map[string]string
|
||||
WebsocketErrors map[string]string
|
||||
BaseCurrencies []string
|
||||
Pairs []string
|
||||
AvailablePairs []string
|
||||
EnabledPairs []string
|
||||
}
|
||||
|
||||
type OKCoinTicker struct {
|
||||
|
||||
Reference in New Issue
Block a user