mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-17 15:09:59 +00:00
Adds walletRoutes.go Adds method to get all exchange account stuff in go Adds method to get all exchange account stuff in server.js
247 lines
7.0 KiB
Go
247 lines
7.0 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
BRIGHTONPEAK_API_URL = "https://api.brightonpeak.com:8400"
|
|
BRIGHTONPEAK_WEBSOCKET_URL = "wss://api.brightonpeak.com:8401"
|
|
)
|
|
|
|
type BrightonPeak struct {
|
|
Name string
|
|
Enabled bool
|
|
Verbose bool
|
|
Websocket bool
|
|
RESTPollingDelay time.Duration
|
|
AuthenticatedAPISupport bool
|
|
APIKey, APISecret, ClientID string
|
|
TakerFee, MakerFee float64
|
|
BaseCurrencies []string
|
|
AvailablePairs []string
|
|
EnabledPairs []string
|
|
API Alphapoint
|
|
}
|
|
|
|
func (b *BrightonPeak) SetDefaults() {
|
|
b.Name = "Brighton Peak"
|
|
b.Enabled = false
|
|
b.TakerFee = 0.5
|
|
b.MakerFee = 0.5
|
|
b.Verbose = false
|
|
b.Websocket = false
|
|
b.RESTPollingDelay = 10
|
|
b.API.APIUrl = BRIGHTONPEAK_API_URL
|
|
b.API.WebsocketURL = BRIGHTONPEAK_WEBSOCKET_URL
|
|
}
|
|
|
|
func (b *BrightonPeak) GetName() string {
|
|
return b.Name
|
|
}
|
|
|
|
func (b *BrightonPeak) SetEnabled(enabled bool) {
|
|
b.Enabled = enabled
|
|
}
|
|
|
|
func (b *BrightonPeak) Setup(exch Exchanges) {
|
|
if !exch.Enabled {
|
|
b.SetEnabled(false)
|
|
} else {
|
|
b.Enabled = true
|
|
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
|
b.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID)
|
|
b.RESTPollingDelay = exch.RESTPollingDelay
|
|
b.Verbose = exch.Verbose
|
|
b.Websocket = exch.Websocket
|
|
b.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
|
|
b.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
|
|
b.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
|
|
}
|
|
}
|
|
|
|
func (k *BrightonPeak) GetEnabledCurrencies() []string {
|
|
return k.EnabledPairs
|
|
}
|
|
|
|
func (b *BrightonPeak) Start() {
|
|
go b.Run()
|
|
}
|
|
|
|
func (b *BrightonPeak) IsEnabled() bool {
|
|
return b.Enabled
|
|
}
|
|
|
|
func (b *BrightonPeak) SetAPIKeys(apiKey, apiSecret, clientID string) {
|
|
b.API.UserID = clientID
|
|
b.API.APIKey = apiKey
|
|
b.API.APISecret = apiSecret
|
|
}
|
|
|
|
func (b *BrightonPeak) GetFee(maker bool) float64 {
|
|
if maker {
|
|
return b.MakerFee
|
|
} else {
|
|
return b.TakerFee
|
|
}
|
|
}
|
|
|
|
func (b *BrightonPeak) Run() {
|
|
if b.Verbose {
|
|
log.Printf("%s Websocket: %s. (url: %s).\n", b.GetName(), IsEnabled(b.Websocket), BRIGHTONPEAK_WEBSOCKET_URL)
|
|
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 {
|
|
//go b.WebsocketClient()
|
|
}
|
|
|
|
exchangeProducts, err := b.GetProductPairs()
|
|
if err != nil || !exchangeProducts.IsAccepted {
|
|
log.Printf("%s Failed to get available products.\n", b.GetName())
|
|
} else {
|
|
currencies := []string{}
|
|
for _, x := range exchangeProducts.ProductPairs {
|
|
currencies = append(currencies, x.Name)
|
|
}
|
|
diff := StringSliceDifference(b.AvailablePairs, currencies)
|
|
if len(diff) > 0 {
|
|
exch, err := GetExchangeConfig(b.Name)
|
|
if err != nil {
|
|
log.Println(err)
|
|
} else {
|
|
log.Printf("%s Updating available pairs. Difference: %s.\n", b.Name, diff)
|
|
exch.AvailablePairs = JoinStrings(currencies, ",")
|
|
UpdateExchangeConfig(exch)
|
|
}
|
|
}
|
|
}
|
|
|
|
for b.Enabled {
|
|
for _, x := range b.EnabledPairs {
|
|
ticker, err := b.GetTicker(x)
|
|
|
|
if err != nil {
|
|
log.Println(err)
|
|
continue
|
|
}
|
|
log.Printf("%s %s Last %f High %f Low %f Volume %f\n", b.GetName(), x, ticker.Last, ticker.High, ticker.Low, ticker.Volume)
|
|
AddExchangeInfo(b.GetName(), x[0:3], x[3:], ticker.Last, 0)
|
|
}
|
|
time.Sleep(time.Second * b.RESTPollingDelay)
|
|
}
|
|
}
|
|
|
|
func (b *BrightonPeak) GetTicker(symbol string) (AlphapointTicker, error) {
|
|
return b.API.GetTicker(symbol)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetTickerPrice(currency string) TickerPrice {
|
|
var tickerPrice TickerPrice
|
|
ticker, err := b.GetTicker(currency)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return tickerPrice
|
|
}
|
|
tickerPrice.Ask = ticker.Ask
|
|
tickerPrice.Bid = ticker.Bid
|
|
tickerPrice.CryptoCurrency = currency
|
|
tickerPrice.Low = ticker.Low
|
|
tickerPrice.Last = ticker.Last
|
|
tickerPrice.Volume = ticker.Volume
|
|
tickerPrice.High = ticker.High
|
|
|
|
return tickerPrice
|
|
}
|
|
|
|
func (b *BrightonPeak) GetTrades(symbol string, startIndex, count int) (AlphapointTrades, error) {
|
|
return b.API.GetTrades(symbol, startIndex, count)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetTradesByDate(symbol string, startIndex, count int) (AlphapointTrades, error) {
|
|
return b.API.GetTrades(symbol, startIndex, count)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetOrderBook(symbol string) (AlphapointOrderbook, error) {
|
|
return b.API.GetOrderbook(symbol)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetProductPairs() (AlphapointProductPairs, error) {
|
|
return b.API.GetProductPairs()
|
|
}
|
|
|
|
func (b *BrightonPeak) GetProducts() (AlphapointProducts, error) {
|
|
return b.API.GetProducts()
|
|
}
|
|
|
|
func (b *BrightonPeak) GreateAccount(firstName, lastName, email, phone, password string) error {
|
|
return b.API.CreateAccount(firstName, lastName, email, phone, password)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetUserInfo() (AlphapointUserInfo, error) {
|
|
return b.API.GetUserInfo()
|
|
}
|
|
|
|
func (b *BrightonPeak) SetUserInfo() {} // to-do
|
|
|
|
func (b *BrightonPeak) GetAccountInfo() (AlphapointAccountInfo, error) {
|
|
return b.API.GetAccountInfo()
|
|
}
|
|
|
|
//GetExchangeAccountInfo : Retrieves balances for all enabled currencies for the BrightonPeak exchange
|
|
func (e *BrightonPeak) GetExchangeAccountInfo() (ExchangeAccountInfo, error) {
|
|
var response ExchangeAccountInfo
|
|
response.ExchangeName = e.GetName()
|
|
accountBalance, err := e.GetAccountInfo()
|
|
if err != nil {
|
|
return response, err
|
|
}
|
|
for i := 0; i < len(accountBalance.Currencies); i++ {
|
|
var exchangeCurrency ExchangeAccountCurrencyInfo
|
|
exchangeCurrency.CurrencyName = accountBalance.Currencies[i].Name
|
|
exchangeCurrency.TotalValue = float64(accountBalance.Currencies[i].Balance)
|
|
exchangeCurrency.Hold = float64(accountBalance.Currencies[i].Hold)
|
|
|
|
response.Currencies = append(response.Currencies, exchangeCurrency)
|
|
}
|
|
return response, nil
|
|
}
|
|
|
|
func (b *BrightonPeak) GetAccountTrades(symbol string, startIndex, count int) (AlphapointTrades, error) {
|
|
return b.API.GetAccountTrades(symbol, startIndex, count)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetDepositAddresses() ([]AlphapointDepositAddresses, error) {
|
|
return b.API.GetDepositAddresses()
|
|
}
|
|
|
|
func (b *BrightonPeak) WithdrawCoins(symbol, product string, amount float64, address string) error {
|
|
return b.API.WithdrawCoins(symbol, product, amount, address)
|
|
}
|
|
|
|
func (b *BrightonPeak) CreateOrder(symbol, side string, orderType int, quantity, price float64) (int64, error) {
|
|
return b.API.CreateOrder(symbol, side, orderType, quantity, price)
|
|
}
|
|
|
|
func (b *BrightonPeak) ModifyOrder(symbol string, OrderID, action int64) (int64, error) {
|
|
return b.API.ModifyOrder(symbol, OrderID, action)
|
|
}
|
|
|
|
func (b *BrightonPeak) CancelOrder(symbol string, OrderID int64) (int64, error) {
|
|
return b.API.CancelOrder(symbol, OrderID)
|
|
}
|
|
|
|
func (b *BrightonPeak) CancelAllOrders(symbol string) error {
|
|
return b.API.CancelAllOrders(symbol)
|
|
}
|
|
|
|
func (b *BrightonPeak) GetOrders() ([]AlphapointOpenOrders, error) {
|
|
return b.API.GetOrders()
|
|
}
|
|
|
|
func (b *BrightonPeak) GetOrderFee(symbol, side string, quantity, price float64) (float64, error) {
|
|
return b.API.GetOrderFee(symbol, side, quantity, price)
|
|
}
|