Added REST polling delay config variable.

This commit is contained in:
Adrian Gallagher
2015-03-18 17:29:33 +11:00
parent b23070d7be
commit e65fbf6a77
14 changed files with 114 additions and 23 deletions

View File

@@ -145,6 +145,7 @@ type Bitfinex struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
APIKey, APISecret string
Ticker BitfinexTicker
Stats []BitfinexStats
@@ -160,6 +161,7 @@ func (b *Bitfinex) SetDefaults() {
b.Name = "Bitfinex"
b.Enabled = true
b.Verbose = false
b.PollingDelay = 10
}
func (b *Bitfinex) GetName() (string) {
@@ -180,6 +182,10 @@ func (b *Bitfinex) SetAPIKeys(apiKey, apiSecret string) {
}
func (b *Bitfinex) Run() {
if b.Verbose {
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.PollingDelay)
}
b.GetAccountFeeInfo()
b.GetAccountBalance()
@@ -193,7 +199,7 @@ func (b *Bitfinex) Run() {
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * b.PollingDelay)
}
}

View File

@@ -35,6 +35,7 @@ type Bitstamp struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
ClientID, APIKey, APISecret string
Ticker BitstampTicker
Orderbook Orderbook
@@ -84,6 +85,7 @@ func (b *Bitstamp) SetDefaults() {
b.Name = "Bitstamp"
b.Enabled = true
b.Verbose = false
b.PollingDelay = 10
}
func (b *Bitstamp) GetName() (string) {
@@ -109,6 +111,10 @@ func (b *Bitstamp) SetAPIKeys(clientID, apiKey, apiSecret string) {
}
func (b *Bitstamp) Run() {
if b.Verbose {
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.PollingDelay)
}
b.GetBalance()
for b.Enabled {
@@ -116,7 +122,7 @@ func (b *Bitstamp) Run() {
BitstampBTC := b.GetTicker()
log.Printf("Bitstamp BTC: Last %f High %f Low %f Volume %f\n", BitstampBTC.Last, BitstampBTC.High, BitstampBTC.Low, BitstampBTC.Volume)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * b.PollingDelay)
}
}

View File

@@ -42,6 +42,7 @@ type BTCChina struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
APISecret, APIKey string
Fee float64
}
@@ -171,6 +172,7 @@ func (b *BTCChina) SetDefaults() {
b.Enabled = true
b.Fee = 0
b.Verbose = false
b.PollingDelay = 10
}
func (b *BTCChina) GetName() (string) {
@@ -195,6 +197,10 @@ func (b *BTCChina) GetFee() (float64) {
}
func (b *BTCChina) Run() {
if b.Verbose {
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.PollingDelay)
}
for b.Enabled {
go func() {
BTCChinaBTC := b.GetTicker("btccny")
@@ -211,7 +217,7 @@ func (b *BTCChina) Run() {
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * b.PollingDelay)
}
}

View File

@@ -30,6 +30,7 @@ type BTCE struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
APIKey, APISecret string
Fee float64
}
@@ -64,6 +65,7 @@ func (b *BTCE) SetDefaults() {
b.Enabled = true
b.Fee = 0.2
b.Verbose = false
b.PollingDelay = 10
}
func (b *BTCE) GetName() (string) {
@@ -88,6 +90,10 @@ func (b *BTCE) GetFee() (float64) {
}
func (b *BTCE) Run() {
if b.Verbose {
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.PollingDelay)
}
for b.Enabled {
go func() {
BTCeBTC := b.GetTicker("btc_usd")
@@ -98,7 +104,7 @@ func (b *BTCE) Run() {
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * b.PollingDelay)
}
}

View File

@@ -17,6 +17,7 @@ type BTCMarkets struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
Fee float64
APIKey, APISecret string
}
@@ -35,6 +36,7 @@ func (b *BTCMarkets) SetDefaults() {
b.Enabled = true
b.Fee = 0.85
b.Verbose = false
b.PollingDelay = 10
}
func (b *BTCMarkets) GetName() (string) {
@@ -59,6 +61,10 @@ func (b *BTCMarkets) GetFee() (float64) {
}
func (b *BTCMarkets) Run() {
if b.Verbose {
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.PollingDelay)
}
for b.Enabled {
go func() {
BTCMarketsBTC := b.GetTicker("BTC")
@@ -75,7 +81,7 @@ func (b *BTCMarkets) Run() {
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * b.PollingDelay)
}
}

View File

@@ -24,6 +24,7 @@ type Coinbase struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
Password, APIKey, APISecret string
TakerFee, MakerFee float64
}
@@ -87,6 +88,8 @@ func (c *Coinbase) SetDefaults() {
c.Verbose = false
c.TakerFee = 0.25
c.MakerFee = 0
c.Verbose = false
c.PollingDelay = 10
}
func (c *Coinbase) GetName() (string) {
@@ -110,13 +113,17 @@ func (c *Coinbase) GetFee(maker bool) (float64) {
}
func (c *Coinbase) Run() {
if c.Verbose {
log.Printf("%s polling delay: %ds.\n", c.GetName(), c.PollingDelay)
}
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * c.PollingDelay)
}
}

View File

@@ -2,6 +2,7 @@ package main
import (
"io/ioutil"
"time"
"encoding/json"
)
@@ -27,6 +28,7 @@ type Exchanges struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
APIKey string
APISecret string
ClientID string

View File

@@ -17,7 +17,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "Bitstamp",
@@ -27,7 +28,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "BTC China",
@@ -36,7 +38,8 @@
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "BTCE",
@@ -45,7 +48,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD,RUB,EUR,CNY,GBP",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "BTC Markets",
@@ -54,7 +58,8 @@
"APISecret": "Secret",
"BaseCurrencies": "AUD",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "Coinbase",
@@ -64,7 +69,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "Huobi",
@@ -73,7 +79,8 @@
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "ITBIT",
@@ -82,7 +89,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD,SGD,EUR",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "Kraken",
@@ -91,7 +99,8 @@
"APISecret": "Secret",
"BaseCurrencies": "EUR,USD,GBP,JPY",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "LakeBTC",
@@ -100,7 +109,8 @@
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "OKCOIN China",
@@ -109,7 +119,8 @@
"APISecret": "Secret",
"BaseCurrencies": "CNY",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
},
{
"Name": "OKCOIN International",
@@ -118,7 +129,8 @@
"APISecret": "Secret",
"BaseCurrencies": "USD",
"Enabled": true,
"Verbose": false
"Verbose": false,
"PollingDelay": 10
}
]
}

View File

@@ -18,6 +18,7 @@ type HUOBI struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
AccessKey, SecretKey string
Fee float64
}
@@ -41,6 +42,7 @@ func (h *HUOBI) SetDefaults() {
h.Enabled = true
h.Fee = 0
h.Verbose = false
h.PollingDelay = 10
}
func (h *HUOBI) GetName() (string) {
@@ -65,6 +67,10 @@ func (h *HUOBI) GetFee() (float64) {
}
func (h *HUOBI) Run() {
if h.Verbose {
log.Printf("%s polling delay: %ds.\n", h.GetName(), h.PollingDelay)
}
for h.Enabled {
go func() {
HuobiBTC := h.GetTicker("btc")
@@ -81,7 +87,7 @@ func (h *HUOBI) Run() {
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)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * h.PollingDelay)
}
}

View File

@@ -19,6 +19,7 @@ type ItBit struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
ClientKey, APISecret, UserID string
MakerFee, TakerFee float64
}
@@ -49,6 +50,7 @@ func (i *ItBit) SetDefaults() {
i.MakerFee = -0.10
i.TakerFee = 0.50
i.Verbose = false
i.PollingDelay = 10
}
func (i *ItBit) GetName() (string) {
@@ -77,12 +79,15 @@ func (i *ItBit) GetFee(maker bool) (float64) {
}
func (i *ItBit) Run() {
if i.Verbose {
log.Printf("%s polling delay: %ds.\n", i.GetName(), i.PollingDelay)
}
for i.Enabled {
go func() {
ItbitBTC := i.GetTicker("XBTUSD")
log.Printf("ItBit BTC: Last %f High %f Low %f Volume %f\n", ItbitBTC.LastPrice, ItbitBTC.High24h, ItbitBTC.Low24h, ItbitBTC.Volume24h)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * i.PollingDelay)
}
}

View File

@@ -41,6 +41,7 @@ type Kraken struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
ClientKey, APISecret string
FiatFee, CryptoFee float64
}
@@ -56,6 +57,7 @@ func (k *Kraken) SetDefaults() {
k.FiatFee = 0.35
k.CryptoFee = 0.10
k.Verbose = false
k.PollingDelay = 10
}
func (k *Kraken) GetName() (string) {
@@ -84,6 +86,10 @@ func (k *Kraken) GetFee(cryptoTrade bool) (float64) {
}
func (k *Kraken) Run() {
if k.Verbose {
log.Printf("%s polling delay: %ds.\n", k.GetName(), k.PollingDelay)
}
for k.Enabled {
go func() {
KrakenBTC := k.GetTicker("XBTUSD")
@@ -93,7 +99,7 @@ func (k *Kraken) Run() {
KrakenLTC := k.GetTicker("LTCUSD")
log.Printf("Kraken LTC: %v\n", KrakenLTC)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * k.PollingDelay)
}
}

View File

@@ -28,6 +28,7 @@ type LakeBTC struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
Email, APISecret string
TakerFee, MakerFee float64
}
@@ -52,6 +53,7 @@ func (l *LakeBTC) SetDefaults() {
l.TakerFee = 0.2
l.MakerFee = 0.15
l.Verbose = false
l.PollingDelay = 10
}
func (l *LakeBTC) GetName() (string) {
@@ -80,12 +82,15 @@ func (l *LakeBTC) GetFee(maker bool) (float64) {
}
func (l *LakeBTC) Run() {
if l.Verbose {
log.Printf("%s polling delay: %ds.\n", l.GetName(), l.PollingDelay)
}
for l.Enabled {
go func() {
LakeBTCTickerResponse := l.GetTicker()
log.Printf("LakeBTC USD: Last %f (%f) High %f (%f) Low %f (%f) Volume US %f (CNY %f)\n", LakeBTCTickerResponse.USD.Last, LakeBTCTickerResponse.CNY.Last, LakeBTCTickerResponse.USD.High, LakeBTCTickerResponse.CNY.High, LakeBTCTickerResponse.USD.Low, LakeBTCTickerResponse.CNY.Low, LakeBTCTickerResponse.USD.Volume, LakeBTCTickerResponse.CNY.Volume)
}()
time.Sleep(time.Second * 10)
time.Sleep(time.Second * l.PollingDelay)
}
}

12
main.go
View File

@@ -106,6 +106,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.btcchina.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btcchina.PollingDelay = exch.PollingDelay
go bot.exchange.btcchina.Run()
if exch.Verbose {
@@ -123,6 +124,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.bitstamp.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
bot.exchange.bitstamp.PollingDelay = exch.PollingDelay
go bot.exchange.bitstamp.Run()
if exch.Verbose {
@@ -139,6 +141,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.bitfinex.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.bitfinex.PollingDelay = exch.PollingDelay
go bot.exchange.bitfinex.Run()
if exch.Verbose {
@@ -155,6 +158,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.btce.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btce.PollingDelay = exch.PollingDelay
go bot.exchange.btce.Run()
if exch.Verbose {
@@ -171,6 +175,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.btcmarkets.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btcmarkets.PollingDelay = exch.PollingDelay
go bot.exchange.btcmarkets.Run()
if exch.Verbose {
@@ -187,6 +192,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.coinbase.SetAPIKeys(exch.ClientID, exch.APIKey, exch.APISecret)
bot.exchange.coinbase.PollingDelay = exch.PollingDelay
go bot.exchange.coinbase.Run()
if exch.Verbose {
@@ -203,6 +209,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.okcoinChina.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.okcoinChina.PollingDelay = exch.PollingDelay
go bot.exchange.okcoinChina.Run()
if exch.Verbose {
@@ -219,6 +226,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.okcoinIntl.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.okcoinIntl.PollingDelay = exch.PollingDelay
go bot.exchange.okcoinIntl.Run()
if exch.Verbose {
@@ -235,6 +243,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.itbit.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.itbit.PollingDelay = exch.PollingDelay
go bot.exchange.itbit.Run()
if exch.Verbose {
@@ -251,6 +260,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.kraken.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.kraken.PollingDelay = exch.PollingDelay
go bot.exchange.kraken.Run()
if exch.Verbose {
@@ -267,6 +277,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.lakebtc.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.lakebtc.PollingDelay = exch.PollingDelay
go bot.exchange.lakebtc.Run()
if exch.Verbose {
@@ -283,6 +294,7 @@ func main() {
} else {
log.Printf("%s enabled.\n", exch.Name)
bot.exchange.huobi.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.huobi.PollingDelay = exch.PollingDelay
go bot.exchange.huobi.Run()
if exch.Verbose {

View File

@@ -19,6 +19,7 @@ type OKCoin struct {
Name string
Enabled bool
Verbose bool
PollingDelay time.Duration
APIUrl, PartnerID, SecretKey string
TakerFee, MakerFee float64
}
@@ -60,6 +61,7 @@ func (o *OKCoin) SetDefaults() {
}
o.Enabled = true
o.Verbose = false
o.PollingDelay = 10
}
func (o *OKCoin) GetName() (string) {
@@ -96,6 +98,10 @@ func (o *OKCoin) GetFee(maker bool) (float64) {
}
func (o *OKCoin) Run() {
if o.Verbose {
log.Printf("%s polling delay: %ds.\n", o.GetName(), o.PollingDelay)
}
for o.Enabled {
if o.APIUrl == OKCOIN_API_URL {
go func() {
@@ -154,7 +160,7 @@ func (o *OKCoin) Run() {
log.Printf("OKCoin China: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", OKCoinChinaLTCLastUSD, OKCoinChinaLTC.Last, OKCoinChinaLTCHighUSD, OKCoinChinaLTC.High, OKCoinChinaLTCLowUSD, OKCoinChinaLTC.Low, OKCoinChinaLTC.Vol)
}()
}
time.Sleep(time.Second * 10)
time.Sleep(time.Second * o.PollingDelay)
}
}