krakenapi

package module
v0.0.0-...-23bd417 Latest Latest
Warning

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

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

README

Kraken GO API Client

build status

A simple API Client for the Kraken Trading platform.

Example usage:

package main

import (
	"fmt"
	"log"

	"github.com/beldur/kraken-go-api-client"
)

func main() {
	api := krakenapi.New("KEY", "SECRET")
	result, err := api.Query("Ticker", map[string]string{
		"pair": "XXBTZEUR",
	})

	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Result: %+v\n", result)

	// There are also some strongly typed methods available
	ticker, err := api.Ticker(krakenapi.XXBTZEUR)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(ticker.XXBTZEUR.OpeningPrice)
}

Contributors

  • Piega
  • Glavic
  • MarinX
  • bjorand
  • khezen

Documentation

Index

Constants

View Source
const (
	// APIURL is the official Kraken API Endpoint
	APIURL = "https://api.kraken.com"
	// APIVersion is the official Kraken API Version Number
	APIVersion = "0"
	// APIUserAgent identifies this library with the Kraken API
	APIUserAgent = "gokrakenapi"
)
View Source
const (
	BCHEUR   = "BCHEUR"
	BCHUSD   = "BCHUSD"
	BCHXBT   = "BCHXBT"
	DASHEUR  = "DASHEUR"
	DASHUSD  = "DASHUSD"
	DASHXBT  = "DASHXBT"
	EOSETH   = "EOSETH"
	EOSEUR   = "EOSEUR"
	EOSUSD   = "EOSUSD"
	EOSXBT   = "EOSXBT"
	GNOETH   = "GNOETH"
	GNOEUR   = "GNOEUR"
	GNOUSD   = "GNOUSD"
	GNOXBT   = "GNOXBT"
	USDTZUSD = "USDTZUSD"
	XETCXETH = "XETCXETH"
	XETCXXBT = "XETCXXBT"
	XETCZEUR = "XETCZEUR"
	XETCXUSD = "XETCXUSD"
	XETHXXBT = "XETHXXBT"
	XETHZCAD = "XETHZCAD"
	XETHZEUR = "XETHZEUR"
	XETHZGBP = "XETHZGBP"
	XETHZJPY = "XETHZJPY"
	XETHZUSD = "XETHZUSD"
	XICNXETH = "XICNXETH"
	XICNXXBT = "XICNXXBT"
	XLTCXXBT = "XLTCXXBT"
	XLTCZEUR = "XLTCZEUR"
	XLTCZUSD = "XLTCZUSD"
	XMLNXETH = "XMLNXETH"
	XMLNXXBT = "XMLNXXBT"
	XREPXETH = "XREPXETH"
	XREPXXBT = "XREPXXBT"
	XREPZEUR = "XREPZEUR"
	XREPZUSD = "XREPZUSD"
	XXBTZCAD = "XXBTZCAD"
	XXBTZEUR = "XXBTZEUR"
	XXBTZGBP = "XXBTZGBP"
	XXBTZJPY = "XXBTZJPY"
	XXBTZUSD = "XXBTZUSD"
	XXDGXXBT = "XXDGXXBT"
	XXLMXXBT = "XXLMXXBT"
	XXLMZEUR = "XXLMZEUR"
	XXLMZUSD = "XXLMZUSD"
	XXMRXXBT = "XXMRXXBT"
	XXMRZEUR = "XXMRZEUR"
	XXMRZUSD = "XXMRZUSD"
	XXRPXXBT = "XXRPXXBT"
	XXRPZCAD = "XXRPZCAD"
	XXRPZEUR = "XXRPZEUR"
	XXRPZJPY = "XXRPZJPY"
	XXRPZUSD = "XXRPZUSD"
	XZECXXBT = "XZECXXBT"
	XZECZEUR = "XZECZEUR"
	XZECZUSD = "XZECZUSD"
)

Currencies available on kraken api.

View Source
const (
	BUY    = "b"
	SELL   = "s"
	MARKET = "m"
	LIMIT  = "l"
)

Actions available on kraken api.

View Source
const (
	OTMarket              = "market"
	OTLimit               = "limit"                  // (price = limit price)
	OTStopLoss            = "stop-loss"              // (price = stop loss price)
	OTTakeProfi           = "take-profit"            // (price = take profit price)
	OTStopLossProfit      = "stop-loss-profit"       // (price = stop loss price, price2 = take profit price)
	OTStopLossProfitLimit = "stop-loss-profit-limit" // (price = stop loss price, price2 = take profit price)
	OTStopLossLimit       = "stop-loss-limit"        // (price = stop loss trigger price, price2 = triggered limit price)
	OTTakeProfitLimit     = "take-profit-limit"      // (price = take profit trigger price, price2 = triggered limit price)
	OTTrailingStop        = "trailing-stop"          // (price = trailing stop offset)
	OTTrailingStopLimit   = "trailing-stop-limit"    // (price = trailing stop offset, price2 = triggered limit offset)
	OTStopLossAndLimit    = "stop-loss-and-limit"    // (price = stop loss price, price2 = limit price)
	OTSettlePosition      = "settle-position"
)

OrderTypes for AddOrder

Variables

This section is empty.

Functions

This section is empty.

Types

type AddOrderResponse

type AddOrderResponse struct {
	Description    OrderDescription `json:"descr"`
	TransactionIds []string         `json:"txid"`
}

AddOrderResponse add orders.

type AssetInfo

type AssetInfo struct {
	// Alternate name
	Altname string
	// Asset class
	AssetClass string `json:"aclass"`
	// Scaling decimal places for record keeping
	Decimals int
	// Scaling decimal places for output display
	DisplayDecimals int `json:"display_decimals"`
}

AssetInfo represents an asset information

type AssetPairInfo

type AssetPairInfo struct {
	// Alternate pair name
	Altname string `json:"altname"`
	// Asset class of base component
	AssetClassBase string `json:"aclass_base"`
	// Asset id of base component
	Base string `json:"base"`
	// Asset class of quote component
	AssetClassQuote string `json:"aclass_quote"`
	// Asset id of quote component
	Quote string `json:"quote"`
	// Volume lot size
	Lot string `json:"lot"`
	// Scaling decimal places for pair
	PairDecimals int `json:"pair_decimals"`
	// Scaling decimal places for volume
	LotDecimals int `json:"lot_decimals"`
	// Amount to multiply lot volume by to get currency volume
	LotMultiplier int `json:"lot_multiplier"`
	// Array of leverage amounts available when buying
	LeverageBuy []float32 `json:"leverage_buy"`
	// Array of leverage amounts available when selling
	LeverageSell []float32 `json:"leverage_sell"`
	// Fee schedule array in [volume, percent fee] tuples
	Fees [][]float64 `json:"fees"`
	// // Maker fee schedule array in [volume, percent fee] tuples (if on maker/taker)
	FeesMaker [][]float64 `json:"fees_maker"`
	// // Volume discount currency
	FeeVolumeCurrency string `json:"fee_volume_currency"`
	// Margin call level
	MarginCall int `json:"margin_call"`
	// Stop-out/Liquidation margin level
	MarginStop int `json:"margin_stop"`
}

AssetPairInfo represents asset pair information

type AssetPairsResponse

type AssetPairsResponse struct {
	BCHEUR   AssetPairInfo `json:",omitempty"`
	BCHUSD   AssetPairInfo `json:",omitempty"`
	BCHXBT   AssetPairInfo `json:",omitempty"`
	DASHEUR  AssetPairInfo `json:",omitempty"`
	DASHUSD  AssetPairInfo `json:",omitempty"`
	DASHXBT  AssetPairInfo `json:",omitempty"`
	EOSETH   AssetPairInfo `json:",omitempty"`
	EOSXBT   AssetPairInfo `json:",omitempty"`
	GNOETH   AssetPairInfo `json:",omitempty"`
	GNOEUR   AssetPairInfo `json:",omitempty"`
	GNOUSD   AssetPairInfo `json:",omitempty"`
	GNOXBT   AssetPairInfo `json:",omitempty"`
	USDTZUSD AssetPairInfo `json:",omitempty"`
	XETCXETH AssetPairInfo `json:",omitempty"`
	XETCXXBT AssetPairInfo `json:",omitempty"`
	XETCZEUR AssetPairInfo `json:",omitempty"`
	XETCXUSD AssetPairInfo `json:",omitempty"`
	XETHXXBT AssetPairInfo `json:",omitempty"`
	XETHZCAD AssetPairInfo `json:",omitempty"`
	XETHZEUR AssetPairInfo `json:",omitempty"`
	XETHZGBP AssetPairInfo `json:",omitempty"`
	XETHZJPY AssetPairInfo `json:",omitempty"`
	XETHZUSD AssetPairInfo `json:",omitempty"`
	XICNXETH AssetPairInfo `json:",omitempty"`
	XICNXXBT AssetPairInfo `json:",omitempty"`
	XLTCXXBT AssetPairInfo `json:",omitempty"`
	XLTCZEUR AssetPairInfo `json:",omitempty"`
	XLTCZUSD AssetPairInfo `json:",omitempty"`
	XMLNXETH AssetPairInfo `json:",omitempty"`
	XMLNXXBT AssetPairInfo `json:",omitempty"`
	XREPXETH AssetPairInfo `json:",omitempty"`
	XREPXXBT AssetPairInfo `json:",omitempty"`
	XREPZEUR AssetPairInfo `json:",omitempty"`
	XREPZUSD AssetPairInfo `json:",omitempty"`
	XXBTZCAD AssetPairInfo `json:",omitempty"`
	XXBTZEUR AssetPairInfo `json:",omitempty"`
	XXBTZJPY AssetPairInfo `json:",omitempty"`
	XXBTZUSD AssetPairInfo `json:",omitempty"`
	XXDGXXBT AssetPairInfo `json:",omitempty"`
	XXLMXXBT AssetPairInfo `json:",omitempty"`
	XXLMZEUR AssetPairInfo `json:",omitempty"`
	XXLMZUSD AssetPairInfo `json:",omitempty"`
	XXMRXXBT AssetPairInfo `json:",omitempty"`
	XXMRZEUR AssetPairInfo `json:",omitempty"`
	XXMRZUSD AssetPairInfo `json:",omitempty"`
	XXRPXXBT AssetPairInfo `json:",omitempty"`
	XXRPZCAD AssetPairInfo `json:",omitempty"`
	XXRPZEUR AssetPairInfo `json:",omitempty"`
	XXRPZJPY AssetPairInfo `json:",omitempty"`
	XXRPZUSD AssetPairInfo `json:",omitempty"`
	XZECXXBT AssetPairInfo `json:",omitempty"`
	XZECZEUR AssetPairInfo `json:",omitempty"`
	XZECZUSD AssetPairInfo `json:",omitempty"`
}

AssetPairsResponse includes asset pair information

type AssetsResponse

type AssetsResponse struct {
	BCH  AssetInfo
	DASH AssetInfo
	EOS  AssetInfo
	GNO  AssetInfo
	KFEE AssetInfo
	USDT AssetInfo
	XDAO AssetInfo
	XETC AssetInfo
	XETH AssetInfo
	XICN AssetInfo
	XLTC AssetInfo
	XMLN AssetInfo
	XNMC AssetInfo
	XREP AssetInfo
	XXBT AssetInfo
	XXDG AssetInfo
	XXLM AssetInfo
	XXMR AssetInfo
	XXRP AssetInfo
	XXVN AssetInfo
	XZEC AssetInfo
	ZCAD AssetInfo
	ZEUR AssetInfo
	ZGBP AssetInfo
	ZJPY AssetInfo
	ZKRW AssetInfo
	ZUSD AssetInfo
}

AssetsResponse includes asset informations

type BalanceResponse

type BalanceResponse struct {
	BCH  float32 `json:"BCH,string"`
	DASH float32 `json:"DASH,string"`
	EOS  float32 `json:"EOS,string"`
	GNO  float32 `json:"GNO,string"`
	KFEE float32 `json:"KFEE,string"`
	USDT float32 `json:"USDT,string"`
	XDAO float32 `json:"XDAO,string"`
	XETC float32 `json:"XETC,string"`
	XETH float32 `json:"XETH,string"`
	XICN float32 `json:"XICN,string"`
	XLTC float32 `json:"XLTC,string"`
	XMLN float32 `json:"XMLN,string"`
	XNMC float32 `json:"XNMC,string"`
	XREP float32 `json:"XREP,string"`
	XXBT float32 `json:"XXBT,string"`
	XXDG float32 `json:"XXDG,string"`
	XXLM float32 `json:"XXLM,string"`
	XXMR float32 `json:"XXMR,string"`
	XXRP float32 `json:"XXRP,string"`
	XXVN float32 `json:"XXVN,string"`
	XZEC float32 `json:"XZEC,string"`
	ZCAD float32 `json:"ZCAD,string"`
	ZEUR float32 `json:"ZEUR,string"`
	ZGBP float32 `json:"ZGBP,string"`
	ZJPY float32 `json:"ZJPY,string"`
	ZKRW float32 `json:"ZKRW,string"`
	ZUSD float32 `json:"ZUSD,string"`
}

BalanceResponse returns the balance.

type CancelOrderResponse

type CancelOrderResponse struct {
	Count   int  `json:"count"`
	Pending bool `json:"pending"`
}

CancelOrderResponse cancel orders

type ClosedOrdersResponse

type ClosedOrdersResponse struct {
	Closed map[string]Order `json:"closed"`
	Count  int              `json:"count"`
}

ClosedOrdersResponse represents a list of closed orders, indexed by id

type DepthResponse

type DepthResponse map[string]OrderBook

DepthResponse is a response from kraken to Depth request.

type KrakenAPI

type KrakenAPI struct {
	// contains filtered or unexported fields
}

KrakenAPI represents a Kraken API Client connection

func New

func New(key, secret string) *KrakenAPI

New creates a new Kraken API client

func NewWithClient

func NewWithClient(key, secret string, httpClient *http.Client) *KrakenAPI

NewWithClient creates a new Kraken API with client.

func (*KrakenAPI) AddOrder

func (api *KrakenAPI) AddOrder(pair string, direction string, orderType string, volume string, args map[string]string) (*AddOrderResponse, error)

AddOrder adds new order

func (*KrakenAPI) AssetPairs

func (api *KrakenAPI) AssetPairs() (*AssetPairsResponse, error)

AssetPairs returns the servers available asset pairs

func (*KrakenAPI) Assets

func (api *KrakenAPI) Assets() (*AssetsResponse, error)

Assets returns the servers available assets

func (*KrakenAPI) Balance

func (api *KrakenAPI) Balance() (*BalanceResponse, error)

Balance returns all account asset balances

func (*KrakenAPI) CancelOrder

func (api *KrakenAPI) CancelOrder(txid string) (*CancelOrderResponse, error)

CancelOrder cancels order

func (*KrakenAPI) ClosedOrders

func (api *KrakenAPI) ClosedOrders(args map[string]string) (*ClosedOrdersResponse, error)

ClosedOrders returns all closed orders

func (*KrakenAPI) Depth

func (api *KrakenAPI) Depth(pair string, count int) (*OrderBook, error)

Depth returns the order book for given pair and orders count.

func (*KrakenAPI) OHLC

func (api *KrakenAPI) OHLC(pair string) (*OHLCResponse, error)

OHLC returns ohcl data.

func (*KrakenAPI) OpenOrders

func (api *KrakenAPI) OpenOrders(args map[string]string) (*OpenOrdersResponse, error)

OpenOrders returns all open orders

func (*KrakenAPI) Query

func (api *KrakenAPI) Query(method string, data map[string]string) (interface{}, error)

Query sends a query to Kraken api for given method and parameters

func (*KrakenAPI) QueryOrders

func (api *KrakenAPI) QueryOrders(txids string, args map[string]string) (*QueryOrdersResponse, error)

QueryOrders shows order

func (*KrakenAPI) Ticker

func (api *KrakenAPI) Ticker(pairs ...string) (*TickerResponse, error)

Ticker returns the ticker for given comma separated pairs

func (*KrakenAPI) Time

func (api *KrakenAPI) Time() (*TimeResponse, error)

Time returns the server's time

func (*KrakenAPI) Trades

func (api *KrakenAPI) Trades(pair string, since int64) (*TradesResponse, error)

Trades returns the recent trades for given pair

type KrakenResponse

type KrakenResponse struct {
	Error  []string    `json:"error"`
	Result interface{} `json:"result"`
}

KrakenResponse wraps the Kraken API JSON response

type OHLCInfo

type OHLCInfo struct {
	Time   int64
	Open   float64
	High   float64
	Low    float64
	Close  float64
	Vwap   float64
	Volume float64
	Count  int64
}

OHLCInfo the ohlc info.

type OHLCResponse

type OHLCResponse struct {
	*OHLCInfo
	Currency string `json:"currency"`
}

OHLCResponse the ohlc response.

type OpenOrdersResponse

type OpenOrdersResponse struct {
	Open  map[string]Order `json:"open"`
	Count int              `json:"count"`
}

OpenOrdersResponse open orders.

type Order

type Order struct {
	TransactionID  string           `json:"-"`
	ReferenceID    string           `json:"refid"`
	UserRef        string           `json:"userref"`
	Status         string           `json:"status"`
	OpenTime       float64          `json:"opentm"`
	StartTime      float64          `json:"starttm"`
	ExpireTime     float64          `json:"expiretm"`
	Description    OrderDescription `json:"descr"`
	Volume         string           `json:"vol1"`
	VolumeExecuted float64          `json:"vol_exec,string"`
	Cost           float64          `json:"cost,string"`
	Fee            float64          `json:"fee,string"`
	Price          float64          `json:"price,string"`
	StopPrice      float64          `json:"stopprice.string"`
	LimitPrice     float64          `json:"limitprice,string"`
	Misc           string           `json:"misc"`
	OrderFlags     string           `json:"oflags"`
	CloseTime      float64          `json:"closetm"`
	Reason         string           `json:"reason"`
}

Order represents a single order

type OrderBook

type OrderBook struct {
	Asks []OrderBookItem
	Bids []OrderBookItem
}

OrderBook contains top asks and bids.

type OrderBookItem

type OrderBookItem struct {
	Price  float64
	Amount float64
	Ts     int64
}

OrderBookItem is a piece of information about an order.

func (*OrderBookItem) UnmarshalJSON

func (o *OrderBookItem) UnmarshalJSON(data []byte) error

UnmarshalJSON takes a json array from kraken and converts it into an OrderBookItem.

type OrderDescription

type OrderDescription struct {
	AssetPair      string `json:"pair"`
	Close          string `json:"close"`
	Leverage       string `json:"leverage"`
	Order          string `json:"order"`
	OrderType      string `json:"ordertype"`
	PrimaryPrice   string `json:"price"`
	SecondaryPrice string `json:"price2"`
	Type           string `json:"type"`
}

OrderDescription represents an orders description

type PairTickerInfo

type PairTickerInfo struct {
	// Ask array(<price>, <whole lot volume>, <lot volume>)
	Ask []string `json:"a"`
	// Bid array(<price>, <whole lot volume>, <lot volume>)
	Bid []string `json:"b"`
	// Last trade closed array(<price>, <lot volume>)
	Close []string `json:"c"`
	// Volume array(<today>, <last 24 hours>)
	Volume []string `json:"v"`
	// Volume weighted average price array(<today>, <last 24 hours>)
	VolumeAveragePrice []string `json:"p"`
	// Number of trades array(<today>, <last 24 hours>)
	Trades []int `json:"t"`
	// Low array(<today>, <last 24 hours>)
	Low []string `json:"l"`
	// High array(<today>, <last 24 hours>)
	High []string `json:"h"`
	// Today's opening price
	OpeningPrice float32 `json:"o,string"`
}

PairTickerInfo represents ticker information for a pair

type QueryOrdersResponse

type QueryOrdersResponse map[string]Order

QueryOrdersResponse query orders.

type TickerResponse

type TickerResponse struct {
	BCHEUR   PairTickerInfo
	BCHUSD   PairTickerInfo
	BCHXBT   PairTickerInfo
	DASHEUR  PairTickerInfo
	DASHUSD  PairTickerInfo
	DASHXBT  PairTickerInfo
	EOSETH   PairTickerInfo
	EOSEUR   PairTickerInfo
	EOSUSD   PairTickerInfo
	EOSXBT   PairTickerInfo
	GNOETH   PairTickerInfo
	GNOEUR   PairTickerInfo
	GNOUSD   PairTickerInfo
	GNOXBT   PairTickerInfo
	USDTZUSD PairTickerInfo
	XETCXETH PairTickerInfo
	XETCXXBT PairTickerInfo
	XETCZEUR PairTickerInfo
	XETCXUSD PairTickerInfo
	XETHXXBT PairTickerInfo
	XETHZCAD PairTickerInfo
	XETHZEUR PairTickerInfo
	XETHZGBP PairTickerInfo
	XETHZJPY PairTickerInfo
	XETHZUSD PairTickerInfo
	XICNXETH PairTickerInfo
	XICNXXBT PairTickerInfo
	XLTCXXBT PairTickerInfo
	XLTCZEUR PairTickerInfo
	XLTCZUSD PairTickerInfo
	XMLNXETH PairTickerInfo
	XMLNXXBT PairTickerInfo
	XREPXETH PairTickerInfo
	XREPXXBT PairTickerInfo
	XREPZEUR PairTickerInfo
	XREPZUSD PairTickerInfo
	XXBTZCAD PairTickerInfo
	XXBTZEUR PairTickerInfo
	XXBTZGBP PairTickerInfo
	XXBTZJPY PairTickerInfo
	XXBTZUSD PairTickerInfo
	XXDGXXBT PairTickerInfo
	XXLMXXBT PairTickerInfo
	XXLMZEUR PairTickerInfo
	XXLMZUSD PairTickerInfo
	XXMRXXBT PairTickerInfo
	XXMRZEUR PairTickerInfo
	XXMRZUSD PairTickerInfo
	XXRPXXBT PairTickerInfo
	XXRPZCAD PairTickerInfo
	XXRPZEUR PairTickerInfo
	XXRPZJPY PairTickerInfo
	XXRPZUSD PairTickerInfo
	XZECXXBT PairTickerInfo
	XZECZEUR PairTickerInfo
	XZECZUSD PairTickerInfo
}

TickerResponse includes the requested ticker pairs

type TimeResponse

type TimeResponse struct {
	// Unix timestamp
	Unixtime int64
	// RFC 1123 time format
	Rfc1123 string
}

TimeResponse represents the server's time

type TradeInfo

type TradeInfo struct {
	Price         string
	PriceFloat    float64
	Volume        string
	VolumeFloat   float64
	Time          int64
	Buy           bool
	Sell          bool
	Market        bool
	Limit         bool
	Miscellaneous string
}

TradeInfo represents a trades information

type TradesResponse

type TradesResponse struct {
	Last   int64
	Trades []TradeInfo
}

TradesResponse represents a list of the last trades

Jump to

Keyboard shortcuts

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