hitbtc

package
v0.0.0-...-eb07c7e Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2019 License: MIT Imports: 19 Imported by: 0

README

GoCryptoTrader package Hitbtc

Build Status Software License GoDoc Coverage Status Go Report Card

This hitbtc package is part of the GoCryptoTrader codebase.

This is still in active development

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

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

HitBTC 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 h exchange.IBotExchange

for i := range bot.exchanges {
  if bot.exchanges[i].GetName() == "HitBTC" {
    h = bot.exchanges[i]
  }
}

// Public calls - wrapper functions

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

// Fetches current orderbook information
ob, err := h.GetOrderbookEx()
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 := h.GetAccountInfo()
if err != nil {
  // Handle error
}
  • If enabled via individually importing package, rudimentary example below:
// Public calls

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

// Fetches current orderbook information
ob, err := h.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 := h.GetUserInfo(...)
if err != nil {
  // Handle error
}

// Submits an order and the exchange and returns its tradeID
tradeID, err := h.Trade(...)
if err != nil {
  // Handle error
}
How to do Websocket public/private calls
  // Exchanges will be abstracted out in further updates and examples will be
  // supplied then
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:

1F5zVDgNjorJ51oGebSvNCrSAHpwGkUdDB

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActiveLoans

type ActiveLoans struct {
	Provided []LoanOffer `json:"provided"`
	Used     []LoanOffer `json:"used"`
}

ActiveLoans holds information about your active loans

type AuthenticatedTradeHistoryAll

type AuthenticatedTradeHistoryAll struct {
	Data map[string][]AuthentictedTradeHistory
}

AuthenticatedTradeHistoryAll contains the full trade history

type AuthenticatedTradeHistoryResponse

type AuthenticatedTradeHistoryResponse struct {
	Data []AuthentictedTradeHistory
}

AuthenticatedTradeHistoryResponse is the resp type for trade history

type AuthentictedTradeHistory

type AuthentictedTradeHistory struct {
	GlobalTradeID int64   `json:"globalTradeID"`
	TradeID       int64   `json:"tradeID,string"`
	Date          string  `json:"date"`
	Rate          float64 `json:"rate,string"`
	Amount        float64 `json:"amount,string"`
	Total         float64 `json:"total,string"`
	Fee           float64 `json:"fee,string"`
	OrderNumber   int64   `json:"orderNumber,string"`
	Type          string  `json:"type"`
	Category      string  `json:"category"`
}

AuthentictedTradeHistory contains trade history data

type Balance

type Balance struct {
	Currency  string  `json:"currency"`
	Available float64 `json:"available,string"` // Amount available for trading or transfer to main account
	Reserved  float64 `json:"reserved,string"`  // Amount reserved for active orders or incomplete transfers to main account

}

Balance is a simple balance type

type ChartData

type ChartData struct {
	Timestamp   time.Time `json:"timestamp,string"`
	Max         float64   `json:"max,string"`         // Max price
	Min         float64   `json:"min,string"`         // Min price
	Open        float64   `json:"open,string"`        // Open price
	Close       float64   `json:"close,string"`       // Close price
	Volume      float64   `json:"volume,string"`      // Volume in base currency
	VolumeQuote float64   `json:"volumeQuote,string"` // Volume in quote currency
}

ChartData contains chart data

type Currencies

type Currencies struct {
	ID                 string `json:"id"`                 // Currency identifier.
	FullName           string `json:"fullName"`           // Currency full name
	Crypto             bool   `json:"crypto,boolean"`     // Is currency belongs to blockchain (false for ICO and fiat, like EUR)
	PayinEnabled       bool   `json:"payinEnabled"`       // Is allowed for deposit (false for ICO)
	PayinPaymentID     bool   `json:"payinPaymentId"`     // Is required to provide additional information other than the address for deposit
	PayinConfirmations int64  `json:"payinConfirmations"` // Blocks confirmations count for deposit
	PayoutEnabled      bool   `json:"payoutEnabled"`      // Is allowed for withdraw (false for ICO)
	PayoutIsPaymentID  bool   `json:"payoutIsPaymentId"`  // Is allowed to provide additional information for withdraw
	TransferEnabled    bool   `json:"transferEnabled"`    // Is allowed to transfer between trading and account (may be disabled on maintain)
	Delisted           bool   `json:"delisted"`           // True if currency delisted (stopped deposit and trading)
	PayoutFee          string `json:"payoutFee"`          // Default withdraw fee
}

Currencies hold the full range of data for a specified currency

type DepositCryptoAddresses

type DepositCryptoAddresses struct {
	Address   string `json:"address"`   // Address for deposit
	PaymentID string `json:"paymentId"` // Optional additional parameter. Required for deposit if persist
}

DepositCryptoAddresses contains address information

type Fee

type Fee struct {
	TakeLiquidityRate    float64 `json:"takeLiquidityRate,string"`    // Taker
	ProvideLiquidityRate float64 `json:"provideLiquidityRate,string"` // Maker
}

Fee holds fee structure

type GenericResponse

type GenericResponse struct {
	Success int    `json:"success"`
	Error   string `json:"error"`
}

GenericResponse is the common response from HitBTC

type HitBTC

type HitBTC struct {
	exchange.Base
	WebsocketConn *websocket.Conn
	// contains filtered or unexported fields
}

HitBTC is the overarching type across the hitbtc package

func (*HitBTC) AuthenticateWebsocket

func (h *HitBTC) AuthenticateWebsocket() error

AuthenticateWebsocket sends an authentication message to the websocket

func (*HitBTC) CancelAllExistingOrders

func (h *HitBTC) CancelAllExistingOrders() ([]Order, error)

CancelAllExistingOrders cancels all open orders

func (*HitBTC) CancelAllOrders

CancelAllOrders cancels all orders associated with a currency pair

func (*HitBTC) CancelExistingOrder

func (h *HitBTC) CancelExistingOrder(orderID int64) (bool, error)

CancelExistingOrder cancels a specific order by OrderID

func (*HitBTC) CancelOrder

func (h *HitBTC) CancelOrder(order *exchange.OrderCancellation) error

CancelOrder cancels an order by its corresponding ID number

func (*HitBTC) GenerateDefaultSubscriptions

func (h *HitBTC) GenerateDefaultSubscriptions()

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

func (*HitBTC) GenerateNewAddress

func (h *HitBTC) GenerateNewAddress(currency string) (DepositCryptoAddresses, error)

GenerateNewAddress generates a new deposit address for a currency

func (*HitBTC) GetAccountInfo

func (h *HitBTC) GetAccountInfo() (exchange.AccountInfo, error)

GetAccountInfo retrieves balances for all enabled currencies for the HitBTC exchange

func (*HitBTC) GetActiveOrders

func (h *HitBTC) GetActiveOrders(getOrdersRequest *exchange.GetOrdersRequest) ([]exchange.OrderDetail, error)

GetActiveOrders retrieves any orders that are active/open

func (*HitBTC) GetActiveorders

func (h *HitBTC) GetActiveorders(currency string) ([]Order, error)

GetActiveorders returns all your active orders

func (*HitBTC) GetBalances

func (h *HitBTC) GetBalances() (map[string]Balance, error)

GetBalances returns full balance for your account

func (*HitBTC) GetCandles

func (h *HitBTC) GetCandles(currencyPair, limit, period string) ([]ChartData, error)

GetCandles returns candles which is used for OHLC a specific currency. Note: Result contain candles only with non zero volume.

func (*HitBTC) GetCurrencies

func (h *HitBTC) GetCurrencies() (map[string]Currencies, error)

GetCurrencies returns the actual list of available currencies, tokens, ICO etc.

func (*HitBTC) GetCurrency

func (h *HitBTC) GetCurrency(currency string) (Currencies, error)

GetCurrency returns the actual list of available currencies, tokens, ICO etc.

func (*HitBTC) GetDepositAddress

func (h *HitBTC) GetDepositAddress(currency currency.Code, _ string) (string, error)

GetDepositAddress returns a deposit address for a specified currency

func (*HitBTC) GetDepositAddresses

func (h *HitBTC) GetDepositAddresses(currency string) (DepositCryptoAddresses, error)

GetDepositAddresses returns a deposit address for a specific currency

func (*HitBTC) GetExchangeHistory

func (h *HitBTC) GetExchangeHistory(p currency.Pair, assetType string) ([]exchange.TradeHistory, error)

GetExchangeHistory returns historic trade data since exchange opening.

func (*HitBTC) GetFee

func (h *HitBTC) GetFee(feeBuilder *exchange.FeeBuilder) (float64, error)

GetFee returns an estimate of fee based on type of transaction

func (*HitBTC) GetFeeByType

func (h *HitBTC) GetFeeByType(feeBuilder *exchange.FeeBuilder) (float64, error)

GetFeeByType returns an estimate of fee based on type of transaction

func (*HitBTC) GetFeeInfo

func (h *HitBTC) GetFeeInfo(currencyPair string) (Fee, error)

GetFeeInfo returns current fee information

func (*HitBTC) GetFundingHistory

func (h *HitBTC) GetFundingHistory() ([]exchange.FundHistory, error)

GetFundingHistory returns funding history, deposits and withdrawals

func (*HitBTC) GetOpenOrders

func (h *HitBTC) GetOpenOrders(currency string) ([]OrderHistoryResponse, error)

GetOpenOrders List of your currently open orders.

func (*HitBTC) GetOrderHistory

func (h *HitBTC) GetOrderHistory(getOrdersRequest *exchange.GetOrdersRequest) ([]exchange.OrderDetail, error)

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

func (*HitBTC) GetOrderInfo

func (h *HitBTC) GetOrderInfo(orderID string) (exchange.OrderDetail, error)

GetOrderInfo returns information on a current open order

func (*HitBTC) GetOrderbook

func (h *HitBTC) GetOrderbook(currencyPair string, limit int) (Orderbook, error)

GetOrderbook an order book is an electronic list of buy and sell orders for a specific symbol, organized by price level.

func (*HitBTC) GetOrderbookEx

func (h *HitBTC) GetOrderbookEx(currencyPair currency.Pair, assetType string) (orderbook.Base, error)

GetOrderbookEx returns orderbook base on the currency pair

func (*HitBTC) GetOrders

func (h *HitBTC) GetOrders(currency string) ([]OrderHistoryResponse, error)

GetOrders List of your order history.

func (*HitBTC) GetSubscriptions

func (h *HitBTC) GetSubscriptions() ([]exchange.WebsocketChannelSubscription, error)

GetSubscriptions returns a copied list of subscriptions

func (*HitBTC) GetSymbols

func (h *HitBTC) GetSymbols(symbol string) ([]string, error)

GetSymbols Return the actual list of currency symbols (currency pairs) traded on HitBTC exchange. The first listed currency of a symbol is called the base currency, and the second currency is called the quote currency. The currency pair indicates how much of the quote currency is needed to purchase one unit of the base currency.

func (*HitBTC) GetSymbolsDetailed

func (h *HitBTC) GetSymbolsDetailed() ([]Symbol, error)

GetSymbolsDetailed is the same as above but returns an array of symbols with all their details.

func (*HitBTC) GetTicker

func (h *HitBTC) GetTicker(symbol string) (map[string]Ticker, error)

GetTicker returns ticker information

func (*HitBTC) GetTickerPrice

func (h *HitBTC) GetTickerPrice(currencyPair currency.Pair, assetType string) (ticker.Price, error)

GetTickerPrice returns the ticker for a currency pair

func (*HitBTC) GetTradableBalances

func (h *HitBTC) GetTradableBalances() (map[string]map[string]float64, error)

GetTradableBalances returns current tradable balances

func (*HitBTC) GetTradeHistoryForAllCurrencies

func (h *HitBTC) GetTradeHistoryForAllCurrencies(start, end string) (AuthenticatedTradeHistoryAll, error)

GetTradeHistoryForAllCurrencies returns your trade history

func (*HitBTC) GetTradeHistoryForCurrency

func (h *HitBTC) GetTradeHistoryForCurrency(currency, start, end string) (AuthenticatedTradeHistoryResponse, error)

GetTradeHistoryForCurrency returns your trade history

func (*HitBTC) GetTrades

func (h *HitBTC) GetTrades(currencyPair, from, till, limit, offset, by, sort string) ([]TradeHistory, error)

GetTrades returns trades from hitbtc

func (*HitBTC) GetWebsocket

func (h *HitBTC) GetWebsocket() (*exchange.Websocket, error)

GetWebsocket returns a pointer to the exchange websocket

func (*HitBTC) ModifyOrder

func (h *HitBTC) ModifyOrder(action *exchange.ModifyOrder) (string, error)

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

func (*HitBTC) MoveOrder

func (h *HitBTC) MoveOrder(orderID int64, rate, amount float64) (MoveOrderResponse, error)

MoveOrder generates a new move order

func (*HitBTC) PlaceOrder

func (h *HitBTC) PlaceOrder(currency string, rate, amount float64, orderType, side string) (OrderResponse, error)

PlaceOrder places an order on the exchange

func (*HitBTC) Run

func (h *HitBTC) Run()

Run implements the HitBTC wrapper

func (*HitBTC) SendAuthenticatedHTTPRequest

func (h *HitBTC) SendAuthenticatedHTTPRequest(method, endpoint string, values url.Values, result interface{}) error

SendAuthenticatedHTTPRequest sends an authenticated http request

func (*HitBTC) SendHTTPRequest

func (h *HitBTC) SendHTTPRequest(path string, result interface{}) error

SendHTTPRequest sends an unauthenticated HTTP request

func (*HitBTC) SetDefaults

func (h *HitBTC) SetDefaults()

SetDefaults sets default settings for hitbtc

func (*HitBTC) Setup

func (h *HitBTC) Setup(exch *config.ExchangeConfig)

Setup sets user exchange configuration settings

func (*HitBTC) Start

func (h *HitBTC) Start(wg *sync.WaitGroup)

Start starts the HitBTC go routine

func (*HitBTC) SubmitOrder

func (h *HitBTC) SubmitOrder(p currency.Pair, side exchange.OrderSide, orderType exchange.OrderType, amount, price float64, _ string) (exchange.SubmitOrderResponse, error)

SubmitOrder submits a new order

func (*HitBTC) Subscribe

func (h *HitBTC) Subscribe(channelToSubscribe exchange.WebsocketChannelSubscription) error

Subscribe sends a websocket message to receive data from the channel

func (*HitBTC) SubscribeToWebsocketChannels

func (h *HitBTC) SubscribeToWebsocketChannels(channels []exchange.WebsocketChannelSubscription) error

SubscribeToWebsocketChannels appends to ChannelsToSubscribe which lets websocket.manageSubscriptions handle subscribing

func (*HitBTC) TransferBalance

func (h *HitBTC) TransferBalance(currency, from, to string, amount float64) (bool, error)

TransferBalance transfers a balance

func (*HitBTC) Unsubscribe

func (h *HitBTC) Unsubscribe(channelToSubscribe exchange.WebsocketChannelSubscription) error

Unsubscribe sends a websocket message to stop receiving data from the channel

func (*HitBTC) UnsubscribeToWebsocketChannels

func (h *HitBTC) UnsubscribeToWebsocketChannels(channels []exchange.WebsocketChannelSubscription) error

UnsubscribeToWebsocketChannels removes from ChannelsToSubscribe which lets websocket.manageSubscriptions handle unsubscribing

func (*HitBTC) UpdateOrderbook

func (h *HitBTC) UpdateOrderbook(currencyPair currency.Pair, assetType string) (orderbook.Base, error)

UpdateOrderbook updates and returns the orderbook for a currency pair

func (*HitBTC) UpdateTicker

func (h *HitBTC) UpdateTicker(currencyPair currency.Pair, assetType string) (ticker.Price, error)

UpdateTicker updates and returns the ticker for a currency pair

func (*HitBTC) Withdraw

func (h *HitBTC) Withdraw(currency, address string, amount float64) (bool, error)

Withdraw allows for the withdrawal to a specific address

func (*HitBTC) WithdrawCryptocurrencyFunds

func (h *HitBTC) WithdrawCryptocurrencyFunds(withdrawRequest *exchange.WithdrawRequest) (string, error)

WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted

func (*HitBTC) WithdrawFiatFunds

func (h *HitBTC) WithdrawFiatFunds(withdrawRequest *exchange.WithdrawRequest) (string, error)

WithdrawFiatFunds returns a withdrawal ID when a withdrawal is submitted

func (*HitBTC) WithdrawFiatFundsToInternationalBank

func (h *HitBTC) WithdrawFiatFundsToInternationalBank(withdrawRequest *exchange.WithdrawRequest) (string, error)

WithdrawFiatFundsToInternationalBank returns a withdrawal ID when a withdrawal is submitted

func (*HitBTC) WsConnect

func (h *HitBTC) WsConnect() error

WsConnect starts a new connection with the websocket API

func (*HitBTC) WsHandleData

func (h *HitBTC) WsHandleData()

WsHandleData handles websocket data

func (*HitBTC) WsProcessOrderbookSnapshot

func (h *HitBTC) WsProcessOrderbookSnapshot(ob WsOrderbook) error

WsProcessOrderbookSnapshot processes a full orderbook snapshot to a local cache

func (*HitBTC) WsProcessOrderbookUpdate

func (h *HitBTC) WsProcessOrderbookUpdate(ob WsOrderbook) error

WsProcessOrderbookUpdate updates a local cache

func (*HitBTC) WsReadData

func (h *HitBTC) WsReadData() (exchange.WebsocketResponse, error)

WsReadData reads from the websocket connection

type LendingHistory

type LendingHistory struct {
	ID       int64   `json:"id"`
	Currency string  `json:"currency"`
	Rate     float64 `json:"rate,string"`
	Amount   float64 `json:"amount,string"`
	Duration float64 `json:"duration,string"`
	Interest float64 `json:"interest,string"`
	Fee      float64 `json:"fee,string"`
	Earned   float64 `json:"earned,string"`
	Open     string  `json:"open"`
	Close    string  `json:"close"`
}

LendingHistory contains lending history data

type LoanOffer

type LoanOffer struct {
	ID        int64   `json:"id"`
	Rate      float64 `json:"rate,string"`
	Amount    float64 `json:"amount,string"`
	Duration  int     `json:"duration"`
	AutoRenew bool    `json:"autoRenew,int"`
	Date      string  `json:"date"`
}

LoanOffer holds information about your loan offers

type LoanOrder

type LoanOrder struct {
	Rate     float64 `json:"rate,string"`
	Amount   float64 `json:"amount,string"`
	RangeMin int     `json:"rangeMin"`
	RangeMax int     `json:"rangeMax"`
}

LoanOrder contains information about your loans

type LoanOrders

type LoanOrders struct {
	Offers  []LoanOrder `json:"offers"`
	Demands []LoanOrder `json:"demands"`
}

LoanOrders holds information on the full range of loan orders

type Margin

type Margin struct {
	TotalValue    float64 `json:"totalValue,string"`
	ProfitLoss    float64 `json:"pl,string"`
	LendingFees   float64 `json:"lendingFees,string"`
	NetValue      float64 `json:"netValue,string"`
	BorrowedValue float64 `json:"totalBorrowedValue,string"`
	CurrentMargin float64 `json:"currentMargin,string"`
}

Margin holds full margin information

type MarginPosition

type MarginPosition struct {
	Amount            float64 `json:"amount,string"`
	Total             float64 `json:"total,string"`
	BasePrice         float64 `json:"basePrice,string"`
	LiquidiationPrice float64 `json:"liquidiationPrice"`
	ProfitLoss        float64 `json:"pl,string"`
	LendingFees       float64 `json:"lendingFees,string"`
	Type              string  `json:"type"`
}

MarginPosition holds information about your current margin position

type MoveOrderResponse

type MoveOrderResponse struct {
	Success     int                          `json:"success"`
	Error       string                       `json:"error"`
	OrderNumber int64                        `json:"orderNumber,string"`
	Trades      map[string][]ResultingTrades `json:"resultingTrades"`
}

MoveOrderResponse holds information about a move order

type OpenOrdersResponse

type OpenOrdersResponse struct {
	Data []Order
}

OpenOrdersResponse contains open order information

type OpenOrdersResponseAll

type OpenOrdersResponseAll struct {
	Data map[string][]Order
}

OpenOrdersResponseAll holds the full open order response

type Order

type Order struct {
	ID            int64  `json:"id,string"`     //  Unique identifier for Order as assigned by exchange
	ClientOrderID string `json:"clientOrderId"` // Unique identifier for Order as assigned by trader. Uniqueness must be
	// guaranteed within a single trading day, including all active orders.
	Symbol      string `json:"symbol"`      // Trading symbol
	Side        string `json:"side"`        // sell buy
	Status      string `json:"status"`      // new, suspended, partiallyFilled, filled, canceled, expired
	Type        string `json:"type"`        // Enum: limit, market, stopLimit, stopMarket
	TimeInForce string `json:"timeInForce"` // Time in force is a special instruction used when placing a trade to
	//   indicate how long an order will remain active before it is executed or expires
	// GTC - Good till cancel. GTC order won't close until it is filled.
	// IOC - An immediate or cancel order is an order to buy or sell that must be executed immediately, and any portion
	//   of the order that cannot be immediately filled is cancelled.
	// FOK - Fill or kill is a type of time-in-force designation used in securities trading that instructs a brokerage
	//   to execute a transaction immediately and completely or not at all.
	// Day - keeps the order active until the end of the trading day in UTC.
	// GTD - Good till date specified in expireTime.
	Quantity    float64   `json:"quantity,string"`    // Order quantity
	Price       float64   `json:"price,string"`       // Order price
	CumQuantity float64   `json:"cumQuantity,string"` // Cumulative executed quantity
	CreatedAt   time.Time `json:"createdAt,string"`
	UpdatedAt   time.Time `json:"updatedAt,string"`
	StopPrice   float64   `json:"stopPrice,string"`
	ExpireTime  time.Time `json:"expireTime,string"`
}

Order contains information about an order

type OrderHistoryResponse

type OrderHistoryResponse struct {
	ID            string    `json:"id"`
	ClientOrderID string    `json:"clientOrderId"`
	Symbol        string    `json:"symbol"`
	Side          string    `json:"side"`
	Status        string    `json:"status"`
	Type          string    `json:"type"`
	TimeInForce   string    `json:"timeInForce"`
	Price         float64   `json:"price,string"`
	Quantity      float64   `json:"quantity,string"`
	PostOnly      bool      `json:"postOnly"`
	CumQuantity   float64   `json:"cumQuantity,string"`
	CreatedAt     time.Time `json:"createdAt"`
	UpdatedAt     time.Time `json:"updatedAt"`
}

OrderHistoryResponse used for GetOrderHistory

type OrderResponse

type OrderResponse struct {
	OrderNumber int64             `json:"orderNumber,string"`
	Trades      []ResultingTrades `json:"resultingTrades"`
}

OrderResponse holds the order response information

type Orderbook

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

Orderbook contains orderbook data

type OrderbookItem

type OrderbookItem struct {
	Price  float64 `json:"price,string"` // Price level
	Amount float64 `json:"size,string"`  // Total volume of orders with the specified price
}

OrderbookItem is a sub type for orderbook response

type OrderbookResponse

type OrderbookResponse struct {
	Asks []OrderbookItem `json:"ask"` // Ask side array of levels
	Bids []OrderbookItem `json:"bid"` // Bid side array of levels
}

OrderbookResponse is the full orderbook response

type ResultingTrades

type ResultingTrades struct {
	Amount  float64 `json:"amount,string"`
	Date    string  `json:"date"`
	Rate    float64 `json:"rate,string"`
	Total   float64 `json:"total,string"`
	TradeID int64   `json:"tradeID,string"`
	Type    string  `json:"type"`
}

ResultingTrades holds resulting trade information

type Symbol

type Symbol struct {
	ID                   string  `json:"id"` // Symbol identifier. In the future, the description will simply use the symbol
	BaseCurrency         string  `json:"baseCurrency"`
	QuoteCurrency        string  `json:"quoteCurrency"`
	QuantityIncrement    float64 `json:"quantityIncrement,string"`
	TickSize             float64 `json:"tickSize,string"`
	TakeLiquidityRate    float64 `json:"takeLiquidityRate,string"`    // Default fee rate
	ProvideLiquidityRate float64 `json:"provideLiquidityRate,string"` // Default fee rate for market making trades
	FeeCurrency          string  `json:"feeCurrency"`                 // Default fee rate for market making trades
}

Symbol holds symbol data

type Ticker

type Ticker struct {
	Last        float64
	Ask         float64
	Bid         float64
	Timestamp   time.Time
	Volume      float64
	VolumeQuote float64
	Symbol      string
	High        float64
	Low         float64
	Open        float64
}

Ticker holds ticker information

type TickerResponse

type TickerResponse struct {
	Last        string    `json:"last"`             // Last trade price
	Ask         string    `json:"ask"`              // Best ask price
	Bid         string    `json:"bid"`              // Best bid price
	Timestamp   time.Time `json:"timestamp,string"` // Last update or refresh ticker timestamp
	Volume      string    `json:"volume"`           // Total trading amount within 24 hours in base currency
	VolumeQuote string    `json:"volumeQuote"`      // Total trading amount within 24 hours in quote currency
	Symbol      string    `json:"symbol"`
	High        string    `json:"high"` // Highest trade price within 24 hours
	Low         string    `json:"low"`  // Lowest trade price within 24 hours
	Open        string    `json:"open"` // Last trade price 24 hours ago
}

TickerResponse is the response type

type TradeHistory

type TradeHistory struct {
	ID        int64   `json:"id"`              // Trade id
	Timestamp string  `json:"timestamp"`       // Trade timestamp
	Side      string  `json:"side"`            // Trade side sell or buy
	Price     float64 `json:"price,string"`    // Trade price
	Quantity  float64 `json:"quantity,string"` // Trade quantity
}

TradeHistory contains trade history data

type Withdraw

type Withdraw struct {
	Response string `json:"response"`
	Error    string `json:"error"`
}

Withdraw holds response for a withdrawal process

type WsActiveOrdersResponse

type WsActiveOrdersResponse struct {
	Params []WsActiveOrdersResponseData `json:"params"`
}

WsActiveOrdersResponse Active order response for auth subscription to reports

type WsActiveOrdersResponseData

type WsActiveOrdersResponseData struct {
	ID            string        `json:"id"`
	ClientOrderID string        `json:"clientOrderId"`
	Symbol        currency.Pair `json:"symbol"`
	Side          string        `json:"side"`
	Status        string        `json:"status"`
	Type          string        `json:"type"`
	TimeInForce   string        `json:"timeInForce"`
	Quantity      float64       `json:"quantity,string"`
	Price         float64       `json:"price,string"`
	CumQuantity   float64       `json:"cumQuantity,string"`
	PostOnly      bool          `json:"postOnly"`
	CreatedAt     time.Time     `json:"createdAt"`
	UpdatedAt     time.Time     `json:"updatedAt"`
	ReportType    string        `json:"reportType"`
}

WsActiveOrdersResponseData Active order data for WsActiveOrdersResponse

type WsCancelOrderRequest

type WsCancelOrderRequest struct {
	Method string                   `json:"method"`
	Params WsCancelOrderRequestData `json:"params"`
	ID     int64                    `json:"id"`
}

WsCancelOrderRequest WS request

type WsCancelOrderRequestData

type WsCancelOrderRequestData struct {
	ClientOrderID string `json:"clientOrderId"`
}

WsCancelOrderRequestData WS request data

type WsCancelOrderResponse

type WsCancelOrderResponse struct {
	Result WsCancelOrderResponseData `json:"result"`
	ID     int64                     `json:"id"`
}

WsCancelOrderResponse WS response

type WsCancelOrderResponseData

type WsCancelOrderResponseData struct {
	ID            string        `json:"id"`
	ClientOrderID string        `json:"clientOrderId"`
	Symbol        currency.Pair `json:"symbol"`
	Side          string        `json:"side"`
	Status        string        `json:"status"`
	Type          string        `json:"type"`
	TimeInForce   string        `json:"timeInForce"`
	Quantity      float64       `json:"quantity,string"`
	Price         float64       `json:"price,string"`
	CumQuantity   float64       `json:"cumQuantity,string"`
	PostOnly      bool          `json:"postOnly"`
	CreatedAt     time.Time     `json:"createdAt"`
	UpdatedAt     time.Time     `json:"updatedAt"`
	ReportType    string        `json:"reportType"`
}

WsCancelOrderResponseData WS response data

type WsGetActiveOrdersResponse

type WsGetActiveOrdersResponse struct {
	Result []WsGetActiveOrdersResponseData `json:"result"`
	ID     int64                           `json:"id"`
}

WsGetActiveOrdersResponse WS response

type WsGetActiveOrdersResponseData

type WsGetActiveOrdersResponseData struct {
	ID                           string        `json:"id"`
	ClientOrderID                string        `json:"clientOrderId"`
	Symbol                       currency.Pair `json:"symbol"`
	Side                         string        `json:"side"`
	Status                       string        `json:"status"`
	Type                         string        `json:"type"`
	TimeInForce                  string        `json:"timeInForce"`
	Quantity                     float64       `json:"quantity,string"`
	Price                        float64       `json:"price,string"`
	CumQuantity                  float64       `json:"cumQuantity,string"`
	PostOnly                     bool          `json:"postOnly"`
	CreatedAt                    time.Time     `json:"createdAt"`
	UpdatedAt                    time.Time     `json:"updatedAt"`
	ReportType                   string        `json:"reportType"`
	OriginalRequestClientOrderID string        `json:"originalRequestClientOrderId"`
}

WsGetActiveOrdersResponseData WS response data

type WsGetTradingBalanceResponse

type WsGetTradingBalanceResponse struct {
	Result []WsGetTradingBalanceResponseData `json:"result"`
	ID     int64                             `json:"id"`
}

WsGetTradingBalanceResponse WS response

type WsGetTradingBalanceResponseData

type WsGetTradingBalanceResponseData struct {
	Currency  currency.Code `json:"currency"`
	Available float64       `json:"available,string"`
	Reserved  float64       `json:"reserved,string"`
}

WsGetTradingBalanceResponseData WS response data

type WsLoginData

type WsLoginData struct {
	Algo      string `json:"algo"`
	PKey      string `json:"pKey"`
	Nonce     string `json:"nonce"`
	Signature string `json:"signature"`
}

WsLoginData sets credentials for WsLoginRequest

type WsLoginRequest

type WsLoginRequest struct {
	Method string      `json:"method"`
	Params WsLoginData `json:"params"`
}

WsLoginRequest defines login requirements for ws

type WsNotification

type WsNotification struct {
	JSONRPCVersion string      `json:"jsonrpc,omitempty"`
	Method         string      `json:"method"`
	Params         interface{} `json:"params"`
}

WsNotification defines a notification obj for the JSON-RPC this does not get a websocket response

type WsOrderbook

type WsOrderbook struct {
	Params struct {
		Ask []struct {
			Price float64 `json:"price,string"`
			Size  float64 `json:"size,string"`
		} `json:"ask"`
		Bid []struct {
			Price float64 `json:"price,string"`
			Size  float64 `json:"size,string"`
		} `json:"bid"`
		Symbol   string `json:"symbol"`
		Sequence int64  `json:"sequence"`
	} `json:"params"`
}

WsOrderbook defines websocket orderbook feed return params

type WsReplaceOrderRequest

type WsReplaceOrderRequest struct {
	Method string                    `json:"method"`
	Params WsReplaceOrderRequestData `json:"params"`
	ID     int64                     `json:"id,omitempty"`
}

WsReplaceOrderRequest WS request

type WsReplaceOrderRequestData

type WsReplaceOrderRequestData struct {
	ClientOrderID   string  `json:"clientOrderId,omitempty"`
	RequestClientID string  `json:"requestClientId,omitempty"`
	Quantity        float64 `json:"quantity,string,omitempty"`
	Price           float64 `json:"price,string,omitempty"`
}

WsReplaceOrderRequestData WS request data

type WsReplaceOrderResponse

type WsReplaceOrderResponse struct {
	Result WsReplaceOrderResponseData `json:"result"`
	ID     int64                      `json:"id"`
}

WsReplaceOrderResponse WS response

type WsReplaceOrderResponseData

type WsReplaceOrderResponseData struct {
	ID                           string        `json:"id"`
	ClientOrderID                string        `json:"clientOrderId"`
	Symbol                       currency.Pair `json:"symbol"`
	Side                         string        `json:"side"`
	Status                       string        `json:"status"`
	Type                         string        `json:"type"`
	TimeInForce                  string        `json:"timeInForce"`
	Quantity                     float64       `json:"quantity,string"`
	Price                        float64       `json:"price,string"`
	CumQuantity                  float64       `json:"cumQuantity,string"`
	PostOnly                     bool          `json:"postOnly"`
	CreatedAt                    time.Time     `json:"createdAt"`
	UpdatedAt                    time.Time     `json:"updatedAt"`
	ReportType                   string        `json:"reportType"`
	OriginalRequestClientOrderID string        `json:"originalRequestClientOrderId"`
}

WsReplaceOrderResponseData WS response data

type WsReportResponse

type WsReportResponse struct {
	Params WsReportResponseData `json:"params"`
}

WsReportResponse report response for auth subscription to reports

type WsReportResponseData

type WsReportResponseData struct {
	ID            string        `json:"id"`
	ClientOrderID string        `json:"clientOrderId"`
	Symbol        currency.Pair `json:"symbol"`
	Side          string        `json:"side"`
	Status        string        `json:"status"`
	Type          string        `json:"type"`
	TimeInForce   string        `json:"timeInForce"`
	Quantity      float64       `json:"quantity,string"`
	Price         float64       `json:"price,string"`
	CumQuantity   float64       `json:"cumQuantity,string"`
	PostOnly      bool          `json:"postOnly"`
	CreatedAt     time.Time     `json:"createdAt"`
	UpdatedAt     time.Time     `json:"updatedAt"`
	ReportType    string        `json:"reportType"`
	TradeQuantity float64       `json:"tradeQuantity,string"`
	TradePrice    float64       `json:"tradePrice,string"`
	TradeID       int64         `json:"tradeId"`
	TradeFee      float64       `json:"tradeFee,string"`
}

WsReportResponseData Report data for WsReportResponse

type WsRequest

type WsRequest struct {
	Method string      `json:"method"`
	Params interface{} `json:"params,omitempty"`
	ID     interface{} `json:"id"`
}

WsRequest defines a request obj for the JSON-RPC and gets a websocket response

type WsSubmitOrderErrorResponse

type WsSubmitOrderErrorResponse struct {
	Error WsSubmitOrderErrorResponseData `json:"error"`
	ID    int64                          `json:"id"`
}

WsSubmitOrderErrorResponse WS error response

type WsSubmitOrderErrorResponseData

type WsSubmitOrderErrorResponseData struct {
	Code        int64  `json:"code"`
	Message     string `json:"message"`
	Description string `json:"description"`
}

WsSubmitOrderErrorResponseData WS error response data

type WsSubmitOrderRequest

type WsSubmitOrderRequest struct {
	Method string                   `json:"method"`
	Params WsSubmitOrderRequestData `json:"params"`
	ID     int64                    `json:"id"`
}

WsSubmitOrderRequest WS request

type WsSubmitOrderRequestData

type WsSubmitOrderRequestData struct {
	ClientOrderID string        `json:"clientOrderId"`
	Symbol        currency.Pair `json:"symbol"`
	Side          string        `json:"side"`
	Price         float64       `json:"price,string"`
	Quantity      float64       `json:"quantity,string"`
}

WsSubmitOrderRequestData WS request data

type WsSubmitOrderSuccessResponse

type WsSubmitOrderSuccessResponse struct {
	Result WsSubmitOrderSuccessResponseData `json:"result"`
	ID     int64                            `json:"id"`
}

WsSubmitOrderSuccessResponse WS response

type WsSubmitOrderSuccessResponseData

type WsSubmitOrderSuccessResponseData struct {
	ID            string    `json:"id"`
	ClientOrderID string    `json:"clientOrderId"`
	Symbol        string    `json:"symbol"`
	Side          string    `json:"side"`
	Status        string    `json:"status"`
	Type          string    `json:"type"`
	TimeInForce   string    `json:"timeInForce"`
	Quantity      float64   `json:"quantity,string"`
	Price         float64   `json:"price,string"`
	CumQuantity   float64   `json:"cumQuantity,string"`
	PostOnly      bool      `json:"postOnly"`
	CreatedAt     time.Time `json:"createdAt"`
	UpdatedAt     time.Time `json:"updatedAt"`
	ReportType    string    `json:"reportType"`
}

WsSubmitOrderSuccessResponseData WS response data

type WsTicker

type WsTicker struct {
	Params struct {
		Ask         float64 `json:"ask,string"`
		Bid         float64 `json:"bid,string"`
		Last        float64 `json:"last,string"`
		Open        float64 `json:"open,string"`
		Low         float64 `json:"low,string"`
		High        float64 `json:"high,string"`
		Volume      float64 `json:"volume,string"`
		VolumeQuote float64 `json:"volumeQuote,string"`
		Timestamp   string  `json:"timestamp"`
		Symbol      string  `json:"symbol"`
	} `json:"params"`
}

WsTicker defines websocket ticker feed return params

type WsTrade

type WsTrade struct {
	Params struct {
		Data []struct {
			ID        int64   `json:"id"`
			Price     float64 `json:"price,string"`
			Quantity  float64 `json:"quantity,string"`
			Side      string  `json:"side"`
			Timestamp string  `json:"timestamp"`
		} `json:"data"`
		Symbol string `json:"symbol"`
	} `json:"params"`
}

WsTrade defines websocket trade feed return params

Jump to

Keyboard shortcuts

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