diff --git a/cmd/cli/config.go b/cmd/cli/config.go index 23e0ae7..7fef880 100644 --- a/cmd/cli/config.go +++ b/cmd/cli/config.go @@ -9,6 +9,7 @@ import ( type Config struct { PostgresConn string Bittrex *BittrexConfig + Binance *BinanceConfig LogLevel log.Level } @@ -17,6 +18,11 @@ type BittrexConfig struct { ApiSecret string } +type BinanceConfig struct { + ApiKey string + ApiSecret string +} + func NewConfig() *Config { logLevel := log.InfoLevel if os.Getenv("DEBUG") == "true" { @@ -29,13 +35,18 @@ func NewConfig() *Config { // Setup Bittrex Client bittrexConfig := loadBittrexConfig() + binanceConfig := loadBinanceConfig() + return &Config{ PostgresConn: postgresConn, Bittrex: bittrexConfig, + Binance: binanceConfig, LogLevel: logLevel, } } + +// @TODO: Make Generic func loadBittrexConfig() *BittrexConfig { apiKey := os.Getenv("BITTREX_API_KEY") apiSecret := os.Getenv("BITTREX_API_SECRET") @@ -49,6 +60,19 @@ func loadBittrexConfig() *BittrexConfig { return nil } +func loadBinanceConfig() *BinanceConfig { + apiKey := os.Getenv("BINANCE_API_KEY") + apiSecret := os.Getenv("BINANCE_API_SECRET") + + if apiKey != "" && apiSecret != "" { + return &BinanceConfig{ + ApiKey: apiKey, + ApiSecret: apiSecret, + } + } + return nil +} + func loadPostgres() string { postgresConn := os.Getenv("POSTGRES_CONN") if postgresConn != "" { diff --git a/cmd/cli/setup.go b/cmd/cli/setup.go index 72df921..fb6d856 100644 --- a/cmd/cli/setup.go +++ b/cmd/cli/setup.go @@ -1,13 +1,14 @@ package main import ( + "github.com/adshao/go-binance" _ "github.com/lib/pq" "github.com/payaaam/coin-trader/db" "github.com/payaaam/coin-trader/db/models" "github.com/payaaam/coin-trader/exchanges" "github.com/payaaam/coin-trader/utils" log "github.com/sirupsen/logrus" - "github.com/toorop/go-bittrex" + //"github.com/toorop/go-bittrex" "golang.org/x/net/context" "gopkg.in/volatiletech/null.v6" ) @@ -36,18 +37,21 @@ func (s *SetupCommand) Run(exchange string, interval string) { panic("No Bittrex Config Found") } - bittrex := bittrex.New(s.config.Bittrex.ApiKey, s.config.Bittrex.ApiSecret) - bittrexClient := exchanges.NewBittrexClient(bittrex) - - err := s.loadMarkets(ctx, exchange, bittrexClient) + //bittrex := bittrex.New(s.config.Bittrex.ApiKey, s.config.Bittrex.ApiSecret) + //bittrexClient := exchanges.NewBittrexClient(bittrex) + binance := binance.NewClient(s.config.Binance.ApiKey, s.config.Binance.ApiSecret) + binanceClient := exchanges.NewBinanceClient(binance) + err := s.loadMarkets(ctx, exchange, binanceClient) if err != nil { log.Error(err) } - err = s.loadTradingPairsByInterval(ctx, exchange, interval, bittrexClient) - if err != nil { - log.Error(err) - } + /* + err = s.loadTradingPairsByInterval(ctx, exchange, interval, bittrexClient) + if err != nil { + log.Error(err) + } + */ } func (s *SetupCommand) loadMarkets(ctx context.Context, exchange string, client exchanges.Exchange) error { diff --git a/exchanges/binance.go b/exchanges/binance.go index aedb66d..8055d84 100644 --- a/exchanges/binance.go +++ b/exchanges/binance.go @@ -2,17 +2,20 @@ package exchanges import ( "github.com/payaaam/coin-trader/charts" + "github.com/adshao/go-binance" + "golang.org/x/net/context" + "strings" + "fmt" ) -// Potential Libraries -// https://github.com/adshao/go-binance -// https://github.com/pdepip/go-binance - type BinanceClient struct { + client *binance.Client } -func NewBinanceClient() *BinanceClient { - return &BinanceClient{} +func NewBinanceClient(client *binance.Client) *BinanceClient { + return &BinanceClient{ + client: client, + } } func (b *BinanceClient) GetCandles(tradingPair string, chartInterval string) ([]*charts.Candle, error) { @@ -24,8 +27,28 @@ func (b *BinanceClient) GetLatestCandle(tradingPair string, chartInterval string } func (b *BinanceClient) GetBitcoinMarkets() ([]*Market, error) { - - return []*Market{}, nil + ctx := context.Background() + markets, err := b.client.NewListPricesService().Do(ctx) + if err != nil { + fmt.Println(err); + return nil, err + } + + var binanceMarkets []*Market + for _, market := range markets { + if strings.HasSuffix(market.Symbol, "BTC") { + fmt.Println(market.Symbol) + /*binanceMarkets = append(binanceMarkets, &Market{ + MarketKey: market.MarketName, + BaseCurrency: market.BaseCurrency, + MarketCurrency: market.MarketCurrency, + BaseCurrencyName: market.BaseCurrencyLong, + MarketCurrencyName: market.MarketCurrencyLong, + })*/ + } + } + + return binanceMarkets, nil } func (b *BinanceClient) ExecuteLimitBuy(tradingPair string, price string, quantity string) (string, error) { diff --git a/vendor/vendor.json b/vendor/vendor.json index 7d1068e..f4e5657 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -2,6 +2,18 @@ "comment": "", "ignore": "test", "package": [ + { + "checksumSHA1": "PN+bQLSGby7O9XhCU/L2az1TXiE=", + "path": "github.com/adshao/go-binance", + "revision": "9450e17197ea9865eb7fea8294a92094524c64a0", + "revisionTime": "2017-10-30T13:46:47Z" + }, + { + "checksumSHA1": "0EhLvZ6Og9HYqJtCc2Dzs1EgM30=", + "path": "github.com/bitly/go-simplejson", + "revision": "0c965951289cce37dec52ad1f34200fefc816777", + "revisionTime": "2017-10-23T17:51:54Z" + }, { "checksumSHA1": "DZLSNz6HKcs0MAI2tWtpkp426wY=", "path": "github.com/denisenkom/go-mssqldb",