lakebtc

package
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2020 License: MIT Imports: 27 Imported by: 0

README

GoCryptoTrader package Lakebtc

Build Status Software License GoDoc Coverage Status Go Report Card

This lakebtc package is part of the GoCryptoTrader codebase.

This is still in active development

You can track ideas, planned features and what's in progress on this Trello board: https://trello.com/b/ZAhMhpOy/gocryptotrader.

Join our slack to discuss all things related to GoCryptoTrader! GoCryptoTrader Slack

LakeBTC Exchange

Current Features
  • REST Support
  • Websocket Support
How to enable
  // Exchanges will be abstracted out in further updates and examples will be
  // supplied then
How to do REST public/private calls
  • If enabled via "configuration".json file the exchange will be added to the IBotExchange array in the go var bot Bot and you will only be able to use the wrapper interface functions for accessing exchange data. View routines.go for an example of integration usage with GoCryptoTrader. Rudimentary example below:

main.go

var l exchange.IBotExchange

for i := range bot.Exchanges {
  if bot.Exchanges[i].GetName() == "LakeBTC" {
    l = bot.Exchanges[i]
  }
}

// Public calls - wrapper functions

// Fetches current ticker information
tick, err := l.FetchTicker()
if err != nil {
  // Handle error
}

// Fetches current orderbook information
ob, err := l.FetchOrderbook()
if err != nil {
  // Handle error
}

// Private calls - wrapper functions - make sure your APIKEY and APISECRET are
// set and AuthenticatedAPISupport is set to true

// Fetches current account information
accountInfo, err := l.GetAccountInfo()
if err != nil {
  // Handle error
}
  • If enabled via individually importing package, rudimentary example below:
// Public calls

// Fetches current ticker information
ticker, err := l.GetTicker()
if err != nil {
  // Handle error
}

// Fetches current orderbook information
ob, err := l.GetOrderBook()
if err != nil {
  // Handle error
}

// Private calls - make sure your APIKEY and APISECRET are set and
// AuthenticatedAPISupport is set to true

// GetUserInfo returns account info
accountInfo, err := l.GetUserInfo(...)
if err != nil {
  // Handle error
}

// Submits an order and the exchange and returns its tradeID
tradeID, err := l.Trade(...)
if err != nil {
  // Handle error
}
Please click GoDocs chevron above to view current GoDoc information for this package

Contribution

Please feel free to submit any pull requests or suggest any desired features to be added.

When submitting a PR, please abide by our coding guidelines:

  • Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
  • Code must be documented adhering to the official Go commentary guidelines.
  • Code must adhere to our coding style.
  • Pull requests need to be based on and opened against the master branch.

Donations

If this framework helped you in any way, or you would like to support the developers working on it, please donate Bitcoin to:

bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountInfo

type AccountInfo struct {
	Balance map[string]string `json:"balance"`
	Locked  map[string]string `json:"locked"`
	Profile struct {
		Email             string `json:"email"`
		UID               string `json:"uid"`
		BTCDepositAddress string `json:"btc_deposit_addres"` // nolint // API misspelling
	} `json:"profile"`
}

AccountInfo contains account information

type AuthenticatedTradeHistory

type AuthenticatedTradeHistory struct {
	Type   string  `json:"type"`
	Symbol string  `json:"symbol"`
	Amount float64 `json:"amount,string"`
	Total  float64 `json:"total,string"`
	At     int64   `json:"at"`
}

AuthenticatedTradeHistory is a store of personalised auth trade history

type ExternalAccounts

type ExternalAccounts struct {
	ID         int64       `json:"id,string"`
	Type       string      `json:"type"`
	Address    string      `json:"address"`
	Alias      interface{} `json:"alias"`
	Currencies string      `json:"currencies"`
	State      string      `json:"state"`
	UpdatedAt  int64       `json:"updated_at,string"`
}

ExternalAccounts holds external account information

type LakeBTC

type LakeBTC struct {
	exchange.Base
	WebsocketConn
}

LakeBTC is the overarching type across the LakeBTC package

func (*LakeBTC) CancelAllOrders

func (l *LakeBTC) CancelAllOrders(_ *order.Cancel) (order.CancelAllResponse, error)

CancelAllOrders cancels all orders associated with a currency pair

func (*LakeBTC) CancelExistingOrder

func (l *LakeBTC) CancelExistingOrder(orderID int64) error

CancelExistingOrder cancels an order by ID number and returns an error

func (*LakeBTC) CancelExistingOrders

func (l *LakeBTC) CancelExistingOrders(orderIDs []string) error

CancelExistingOrders cancels an order by ID number and returns an error

func (*LakeBTC) CancelOrder

func (l *LakeBTC) CancelOrder(order *order.Cancel) error

CancelOrder cancels an order by its corresponding ID number

func (*LakeBTC) CreateWithdraw

func (l *LakeBTC) CreateWithdraw(amount float64, accountID string) (Withdraw, error)

CreateWithdraw allows your to withdraw to external account WARNING: Only for BTC!

func (*LakeBTC) FetchAccountInfo

func (l *LakeBTC) FetchAccountInfo() (account.Holdings, error)

FetchAccountInfo retrieves balances for all enabled currencies

func (*LakeBTC) FetchOrderbook

func (l *LakeBTC) FetchOrderbook(p currency.Pair, assetType asset.Item) (*orderbook.Base, error)

FetchOrderbook returns orderbook base on the currency pair

func (*LakeBTC) FetchTicker

func (l *LakeBTC) FetchTicker(p currency.Pair, assetType asset.Item) (*ticker.Price, error)

FetchTicker returns the ticker for a currency pair

func (*LakeBTC) FetchTradablePairs

func (l *LakeBTC) FetchTradablePairs(asset asset.Item) ([]string, error)

FetchTradablePairs returns a list of the exchanges tradable pairs

func (*LakeBTC) GenerateDefaultSubscriptions

func (l *LakeBTC) GenerateDefaultSubscriptions() ([]stream.ChannelSubscription, error)

GenerateDefaultSubscriptions Adds default subscriptions to websocket to be handled by ManageSubscriptions()

func (*LakeBTC) GetAccountInformation

func (l *LakeBTC) GetAccountInformation() (AccountInfo, error)

GetAccountInformation returns your current account information

func (*LakeBTC) GetActiveOrders

func (l *LakeBTC) GetActiveOrders(req *order.GetOrdersRequest) ([]order.Detail, error)

GetActiveOrders retrieves any orders that are active/open

func (*LakeBTC) GetDefaultConfig

func (l *LakeBTC) GetDefaultConfig() (*config.ExchangeConfig, error)

GetDefaultConfig returns a default exchange config

func (*LakeBTC) GetDepositAddress

func (l *LakeBTC) GetDepositAddress(cryptocurrency currency.Code, _ string) (string, error)

GetDepositAddress returns a deposit address for a specified currency

func (*LakeBTC) GetExchangeHistory

func (l *LakeBTC) GetExchangeHistory(p currency.Pair, assetType asset.Item, timestampStart, timestampEnd time.Time) ([]exchange.TradeHistory, error)

GetExchangeHistory returns historic trade data within the timeframe provided.

func (*LakeBTC) GetExternalAccounts

func (l *LakeBTC) GetExternalAccounts() ([]ExternalAccounts, error)

GetExternalAccounts returns your external accounts WARNING: Only for BTC!

func (*LakeBTC) GetFee

func (l *LakeBTC) GetFee(feeBuilder *exchange.FeeBuilder) (float64, error)

GetFee returns an estimate of fee based on type of transaction

func (*LakeBTC) GetFeeByType

func (l *LakeBTC) GetFeeByType(feeBuilder *exchange.FeeBuilder) (float64, error)

GetFeeByType returns an estimate of fee based on type of transaction

func (*LakeBTC) GetFundingHistory

func (l *LakeBTC) GetFundingHistory() ([]exchange.FundHistory, error)

GetFundingHistory returns funding history, deposits and withdrawals

func (*LakeBTC) GetHistoricCandles

func (l *LakeBTC) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error)

GetHistoricCandles returns candles between a time period for a set time interval

func (*LakeBTC) GetHistoricCandlesExtended

func (l *LakeBTC) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error)

GetHistoricCandlesExtended returns candles between a time period for a set time interval

func (*LakeBTC) GetOpenOrders

func (l *LakeBTC) GetOpenOrders() ([]OpenOrders, error)

GetOpenOrders returns all open orders associated with your account

func (*LakeBTC) GetOrderBook

func (l *LakeBTC) GetOrderBook(currency string) (Orderbook, error)

GetOrderBook returns the order book from LakeBTC

func (*LakeBTC) GetOrderHistory

func (l *LakeBTC) GetOrderHistory(req *order.GetOrdersRequest) ([]order.Detail, error)

GetOrderHistory retrieves account order information Can Limit response to specific order status

func (*LakeBTC) GetOrderHistoryById

func (b *LakeBTC) GetOrderHistoryById(getOrdersRequest string) ([]order.Detail, error)

GetOrderHistoryById retrieves specified closed order information Can Limit response to specific order status

func (*LakeBTC) GetOrderInfo

func (l *LakeBTC) GetOrderInfo(orderID string) (order.Detail, error)

GetOrderInfo returns information on a current open order

func (*LakeBTC) GetOrders

func (l *LakeBTC) GetOrders(orders []int64) ([]Orders, error)

GetOrders returns your orders

func (*LakeBTC) GetTicker

func (l *LakeBTC) GetTicker() (map[string]Ticker, error)

GetTicker returns the current ticker from lakeBTC

func (*LakeBTC) GetTradeHistory

func (l *LakeBTC) GetTradeHistory(currency string, start int64) ([]TradeHistory, error)

GetTradeHistory returns the trade history for a given currency pair

func (*LakeBTC) GetTrades

func (l *LakeBTC) GetTrades(timestamp int64) ([]AuthenticatedTradeHistory, error)

GetTrades returns trades associated with your account by timestamp

func (*LakeBTC) ModifyOrder

func (l *LakeBTC) ModifyOrder(action *order.Modify) (string, error)

ModifyOrder will allow of changing orderbook placement and limit to market conversion

func (*LakeBTC) Run

func (l *LakeBTC) Run()

Run implements the LakeBTC wrapper

func (*LakeBTC) SendAuthenticatedHTTPRequest

func (l *LakeBTC) SendAuthenticatedHTTPRequest(method, params string, result interface{}) (err error)

SendAuthenticatedHTTPRequest sends an autheticated HTTP request to a LakeBTC

func (*LakeBTC) SendHTTPRequest

func (l *LakeBTC) SendHTTPRequest(path string, result interface{}) error

SendHTTPRequest sends an unauthenticated http request

func (*LakeBTC) SetDefaults

func (l *LakeBTC) SetDefaults()

SetDefaults sets LakeBTC defaults

func (*LakeBTC) Setup

func (l *LakeBTC) Setup(exch *config.ExchangeConfig) error

Setup sets exchange configuration profile

func (*LakeBTC) Start

func (l *LakeBTC) Start(wg *sync.WaitGroup)

Start starts the LakeBTC go routine

func (*LakeBTC) SubmitOrder

func (l *LakeBTC) SubmitOrder(s *order.Submit) (order.SubmitResponse, error)

SubmitOrder submits a new order

func (*LakeBTC) Subscribe

func (l *LakeBTC) Subscribe(channelsToSubscribe []stream.ChannelSubscription) error

Subscribe sends a websocket message to receive data from the channel

func (*LakeBTC) Trade

func (l *LakeBTC) Trade(isBuyOrder bool, amount, price float64, currency string) (Trade, error)

Trade executes an order on the exchange and returns trade inforamtion or an error

func (*LakeBTC) Unsubscribe

func (l *LakeBTC) Unsubscribe(channelsToUnsubscribe []stream.ChannelSubscription) error

Unsubscribe sends a websocket message to unsubscribe from the channel

func (*LakeBTC) UpdateAccountInfo

func (l *LakeBTC) UpdateAccountInfo() (account.Holdings, error)

UpdateAccountInfo retrieves balances for all enabled currencies for the LakeBTC exchange

func (*LakeBTC) UpdateOrderbook

func (l *LakeBTC) UpdateOrderbook(p currency.Pair, assetType asset.Item) (*orderbook.Base, error)

UpdateOrderbook updates and returns the orderbook for a currency pair

func (*LakeBTC) UpdateTicker

func (l *LakeBTC) UpdateTicker(p currency.Pair, assetType asset.Item) (*ticker.Price, error)

UpdateTicker updates and returns the ticker for a currency pair

func (*LakeBTC) UpdateTradablePairs

func (l *LakeBTC) UpdateTradablePairs(forceUpdate bool) error

UpdateTradablePairs updates the exchanges available pairs and stores them in the exchanges config

func (*LakeBTC) ValidateCredentials

func (l *LakeBTC) ValidateCredentials() error

ValidateCredentials validates current credentials used for wrapper functionality

func (*LakeBTC) WithdrawCryptocurrencyFunds

func (l *LakeBTC) WithdrawCryptocurrencyFunds(withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted

func (*LakeBTC) WithdrawFiatFunds

func (l *LakeBTC) WithdrawFiatFunds(withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFunds returns a withdrawal ID when a withdrawal is submitted

func (*LakeBTC) WithdrawFiatFundsToInternationalBank

func (l *LakeBTC) WithdrawFiatFundsToInternationalBank(withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFundsToInternationalBank returns a withdrawal ID when a withdrawal is submitted

func (*LakeBTC) WsConnect

func (l *LakeBTC) WsConnect() error

WsConnect initiates a new websocket connection

type OpenOrders

type OpenOrders struct {
	ID     int64   `json:"id"`
	Amount float64 `json:"amount,string"`
	Price  float64 `json:"price,string"`
	Symbol string  `json:"symbol"`
	Type   string  `json:"type"`
	At     int64   `json:"at"`
}

OpenOrders stores full information on your open orders

type Orderbook

type Orderbook struct {
	Bids []OrderbookStructure `json:"bids"`
	Asks []OrderbookStructure `json:"asks"`
}

Orderbook contains arrays of orderbook information

type OrderbookStructure

type OrderbookStructure struct {
	Price  float64
	Amount float64
}

OrderbookStructure stores price and amount for order books

type Orders

type Orders struct {
	ID             int64   `json:"id"`
	OriginalAmount float64 `json:"original_amount,string"`
	Amount         float64 `json:"amount,string"`
	Price          float64 `json:"price,string"`
	Symbol         string  `json:"symbol"`
	Type           string  `json:"type"`
	State          string  `json:"state"`
	At             int64   `json:"at"`
}

Orders holds current order information

type Ticker

type Ticker struct {
	Last   float64
	Bid    float64
	Ask    float64
	High   float64
	Low    float64
	Volume float64
}

Ticker holds ticker information

type TickerResponse

type TickerResponse struct {
	Last   interface{}
	Bid    interface{}
	Ask    interface{}
	High   interface{}
	Low    interface{}
	Volume interface{}
}

TickerResponse stores temp response Silly hack due to API returning null instead of strings

type Trade

type Trade struct {
	ID     int64  `json:"id"`
	Result string `json:"result"`
}

Trade holds trade information

type TradeHistory

type TradeHistory struct {
	Date   int64   `json:"data"`
	Price  float64 `json:"price,string"`
	Amount float64 `json:"amount,string"`
	TID    int64   `json:"tid"`
}

TradeHistory holds trade history data

type WebsocketConn

type WebsocketConn struct {
	Client    *pusher.Client
	Ticker    chan *pusher.Event
	Orderbook chan *pusher.Event
	Trade     chan *pusher.Event
}

WebsocketConn defines a pusher websocket connection

type Withdraw

type Withdraw struct {
	ID                int64   `json:"id,string"`
	Amount            float64 `json:"amount,string"`
	Currency          string  `json:"currency"`
	Fee               float64 `json:"fee,string"`
	State             string  `json:"state"`
	Source            string  `json:"source"`
	ExternalAccountID int64   `json:"external_account_id,string"`
	At                int64   `json:"at"`
	Error             string  `json:"error"`
}

Withdraw holds withdrawal information

type WsOrderbookUpdate

type WsOrderbookUpdate struct {
	Asks [][2]string `json:"asks"`
	Bids [][2]string `json:"bids"`
}

WsOrderbookUpdate contains orderbook data from websocket

type WsTrade

type WsTrade struct {
	Type   string  `json:"type"`
	Date   int64   `json:"date"`
	Price  float64 `json:"price,string"`
	Amount float64 `json:"amount,string"`
}

WsTrade contains individual trade details from websocket

type WsTrades

type WsTrades struct {
	Trades []WsTrade `json:"trades"`
}

WsTrades contains trade data from websocket

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL