deribit

package module
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2021 License: MIT Imports: 14 Imported by: 0

README

deribit-api

Go library for using the Deribit's v2 Websocket API.

V2 API Documentation: https://docs.deribit.com/v2/

Example
package main

import (
	deribit "github.com/KyberNetwork/deribit-api"
	"github.com/KyberNetwork/deribit-api/models"
	"log"
)

func main() {
	cfg := &deribit.Configuration{
		Addr:          deribit.TestBaseURL,
		ApiKey:        "AsJTU16U",
		SecretKey:     "mM5_K8LVxztN6TjjYpv_cJVGQBvk4jglrEpqkw1b87U",
		AutoReconnect: true,
		DebugMode:     true,
	}
	client, err := deribit.New(cfg)
	if err != nil {
	    log.Printf("%v", err)
	    return
	}

	client.GetTime()
	client.Test()

	var err error

	// GetBookSummaryByCurrency
	getBookSummaryByCurrencyParams := &models.GetBookSummaryByCurrencyParams{
		Currency: "BTC",
		Kind:     "future",
	}
	var getBookSummaryByCurrencyResult []models.BookSummary
	getBookSummaryByCurrencyResult, err = client.GetBookSummaryByCurrency(context.Background(), getBookSummaryByCurrencyParams)
	if err != nil {
		log.Printf("%v", err)
		return
	}
	log.Printf("%v", getBookSummaryByCurrencyResult)

	// GetOrderBook
	getOrderBookParams := &models.GetOrderBookParams{
		InstrumentName: "BTC-PERPETUAL",
		Depth:          5,
	}
	var getOrderBookResult models.GetOrderBookResponse
	getOrderBookResult, err = client.GetOrderBook(context.Background(), getOrderBookParams)
	if err != nil {
		log.Printf("%v", err)
		return
	}
	log.Printf("%v", getOrderBookResult)

	// GetPosition
	getPositionParams := &models.GetPositionParams{
		InstrumentName: "BTC-PERPETUAL",
	}
	var getPositionResult models.Position
	getPositionResult, err = client.GetPosition(context.Background(), getPositionParams)
	if err != nil {
		log.Printf("%v", err)
		return
	}
	log.Printf("%v", getPositionResult)

	// Buy
	guyParams := &models.BuyParams{
		InstrumentName: "BTC-PERPETUAL",
		Amount:         40,
		Price:          6000.0,
		Type:           "limit",
	}
	var buyResult models.BuyResponse
	buyResult, err = client.Buy(context.Background(), guyParams)
	if err != nil {
		log.Printf("%v", err)
		return
	}
	log.Printf("%v", buyResult)

	// Subscribe
	client.On("announcements", func(e *models.AnnouncementsNotification) {
    
    })
    client.On("book.ETH-PERPETUAL.100.1.100ms", func(e *models.OrderBookGroupNotification) {

    })
    client.On("book.BTC-PERPETUAL.100ms", func(e *models.OrderBookNotification) {

    })
    client.On("book.BTC-PERPETUAL.raw", func(e *models.OrderBookRawNotification) {

    })
    client.On("deribit_price_index.btc_usd", func(e *models.DeribitPriceIndexNotification) {

    })
    client.On("deribit_price_ranking.btc_usd", func(e *models.DeribitPriceRankingNotification) {

    })
    client.On("estimated_expiration_price.btc_usd", func(e *models.EstimatedExpirationPriceNotification) {

    })
    client.On("markprice.options.btc_usd", func(e *models.MarkpriceOptionsNotification) {

    })
    client.On("perpetual.BTC-PERPETUAL.raw", func(e *models.PerpetualNotification) {

    })
    client.On("quote.BTC-PERPETUAL", func(e *models.QuoteNotification) {

    })
    client.On("ticker.BTC-PERPETUAL.raw", func(e *models.TickerNotification) {

    })
    client.On("trades.BTC-PERPETUAL.raw", func(e *models.TradesNotification) {

    })

    client.On("user.changes.BTC-PERPETUAL.raw", func(e *models.UserChangesNotification) {

    })
    client.On("user.changes.future.BTC.raw", func(e *models.UserChangesNotification) {

    })
    client.On("user.orders.BTC-PERPETUAL.raw", func(e *models.UserOrderNotification) {

    })
    client.On("user.orders.future.BTC.100ms", func(e *models.UserOrderNotification) {

    })
    client.On("user.portfolio.btc", func(e *models.PortfolioNotification) {

    })
    client.On("user.trades.BTC-PERPETUAL.raw", func(e *models.UserTradesNotification) {

    })
    client.On("user.trades.future.BTC.100ms", func(e *models.UserTradesNotification) {

    })
    
    client.Subscribe([]string{
    	"announcements",
    	"book.BTC-PERPETUAL.none.10.100ms",	// none/1,2,5,10,25,100,250
    	"book.BTC-PERPETUAL.100ms",	// type: snapshot/change
    	"book.BTC-PERPETUAL.raw",
    	"deribit_price_index.btc_usd",
    	"deribit_price_ranking.btc_usd",
    	"estimated_expiration_price.btc_usd",
    	"markprice.options.btc_usd",
    	"perpetual.BTC-PERPETUAL.raw",
    	"quote.BTC-PERPETUAL",
    	"ticker.BTC-PERPETUAL.raw",
    	"trades.BTC-PERPETUAL.raw",
    	"user.changes.BTC-PERPETUAL.raw",
    	"user.changes.future.BTC.raw",
    	"user.orders.BTC-PERPETUAL.raw",
    	"user.orders.future.BTC.100ms",
    	"user.portfolio.btc",
    	"user.trades.BTC-PERPETUAL.raw",
    	"user.trades.future.BTC.100ms",
    })

	forever := make(chan bool)
	<- forever
}

Documentation

Index

Constants

View Source
const (
	RealBaseURL = "wss://www.deribit.com/ws/api/v2/"
	TestBaseURL = "wss://test.deribit.com/ws/api/v2/"
)

Variables

View Source
var (
	ErrAuthenticationIsRequired = errors.New("authentication is required")
	ErrNotConnected             = errors.New("not connected")
)

Functions

func Float32Pointer

func Float32Pointer(value float32) *float32

func Float64Pointer

func Float64Pointer(value float64) *float64

func Int32Pointer

func Int32Pointer(value int32) *int32

func Int64Pointer

func Int64Pointer(value int64) *int64

func IntPointer

func IntPointer(value int) *int

func StringPointer

func StringPointer(value string) *string

Types

type Client

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

func New

func New(l *zap.SugaredLogger, cfg *Configuration) *Client

func (*Client) Auth

func (c *Client) Auth(ctx context.Context) (result models.AuthResponse, err error)

func (*Client) Buy

func (c *Client) Buy(ctx context.Context, params *models.BuyParams) (result models.BuyResponse, err error)

func (*Client) Call

func (c *Client) Call(ctx context.Context, method string, params interface{}, result interface{}) (err error)

Call issues JSONRPC v2 calls

func (*Client) Cancel

func (c *Client) Cancel(ctx context.Context, params *models.CancelParams) (result models.Order, err error)

func (*Client) CancelAll

func (c *Client) CancelAll(ctx context.Context) (result uint, err error)

func (*Client) CancelAllByCurrency

func (c *Client) CancelAllByCurrency(ctx context.Context, params *models.CancelAllByCurrencyParams) (result uint, err error)

func (*Client) CancelAllByInstrument

func (c *Client) CancelAllByInstrument(ctx context.Context, params *models.CancelAllByInstrumentParams) (result uint, err error)

func (*Client) CancelAllByLabel

func (c *Client) CancelAllByLabel(ctx context.Context, params *models.CancelAllByInstrumentParams) (result uint, err error)

func (*Client) CancelTransferByID

func (c *Client) CancelTransferByID(ctx context.Context, params *models.CancelTransferByIDParams) (result models.Transfer, err error)

func (*Client) CancelWithdrawal

func (c *Client) CancelWithdrawal(ctx context.Context, params *models.CancelWithdrawalParams) (result models.Withdrawal, err error)

func (*Client) ChangeSubaccountName

func (c *Client) ChangeSubaccountName(ctx context.Context, params *models.ChangeSubaccountNameParams) (result string, err error)

func (*Client) ClosePosition

func (c *Client) ClosePosition(ctx context.Context, params *models.ClosePositionParams) (result models.ClosePositionResponse, err error)

func (*Client) CreateDepositAddress

func (c *Client) CreateDepositAddress(ctx context.Context, params *models.CreateDepositAddressParams) (result models.DepositAddress, err error)

func (*Client) CreateSubaccount

func (c *Client) CreateSubaccount(ctx context.Context) (result models.Subaccount, err error)

func (*Client) DisableCancelOnDisconnect

func (c *Client) DisableCancelOnDisconnect(ctx context.Context, params *models.SessionParams) (result string, err error)

func (*Client) DisableHeartbeat

func (c *Client) DisableHeartbeat(ctx context.Context) (result string, err error)

func (*Client) DisableTfaForSubaccount

func (c *Client) DisableTfaForSubaccount(ctx context.Context, params *models.DisableTfaForSubaccountParams) (result string, err error)

func (*Client) Edit

func (c *Client) Edit(ctx context.Context, params *models.EditParams) (result models.EditResponse, err error)

func (*Client) EditByLabel

func (c *Client) EditByLabel(ctx context.Context, params *models.EditParams) (result models.EditResponse, err error)

func (*Client) Emit

func (c *Client) Emit(event interface{}, arguments ...interface{}) *emission.Emitter

Emit emits an event

func (*Client) EnableCancelOnDisconnect

func (c *Client) EnableCancelOnDisconnect(ctx context.Context, params *models.SessionParams) (result string, err error)

func (*Client) GetAccountSummary

func (c *Client) GetAccountSummary(ctx context.Context, params *models.GetAccountSummaryParams) (result models.AccountSummary, err error)

func (*Client) GetAnnouncements

func (c *Client) GetAnnouncements(ctx context.Context) (result []models.Announcement, err error)

func (*Client) GetBookSummaryByCurrency

func (c *Client) GetBookSummaryByCurrency(ctx context.Context, params *models.GetBookSummaryByCurrencyParams) (result []models.BookSummary, err error)

func (*Client) GetBookSummaryByInstrument

func (c *Client) GetBookSummaryByInstrument(ctx context.Context, params *models.GetBookSummaryByInstrumentParams) (result []models.BookSummary, err error)

func (*Client) GetContractSize

func (c *Client) GetContractSize(ctx context.Context, params *models.GetContractSizeParams) (result models.GetContractSizeResponse, err error)

func (*Client) GetCurrencies

func (c *Client) GetCurrencies(ctx context.Context) (result []models.Currency, err error)

func (*Client) GetCurrentDepositAddress

func (c *Client) GetCurrentDepositAddress(ctx context.Context, params *models.GetCurrentDepositAddressParams) (result models.DepositAddress, err error)

func (*Client) GetDeposits

func (c *Client) GetDeposits(ctx context.Context, params *models.GetDepositsParams) (result models.GetDepositsResponse, err error)

func (*Client) GetEmailLanguage

func (c *Client) GetEmailLanguage(ctx context.Context) (result string, err error)

func (*Client) GetFundingChartData

func (c *Client) GetFundingChartData(ctx context.Context, params *models.GetFundingChartDataParams) (result models.GetFundingChartDataResponse, err error)

func (*Client) GetHistoricalVolatility

func (c *Client) GetHistoricalVolatility(ctx context.Context, params *models.GetHistoricalVolatilityParams) (result models.GetHistoricalVolatilityResponse, err error)

func (*Client) GetIndex

func (c *Client) GetIndex(ctx context.Context, params *models.GetIndexParams) (result models.GetIndexResponse, err error)

func (*Client) GetInstruments

func (c *Client) GetInstruments(ctx context.Context, params *models.GetInstrumentsParams) (result []models.Instrument, err error)

func (*Client) GetLastSettlementsByCurrency

func (c *Client) GetLastSettlementsByCurrency(ctx context.Context, params *models.GetLastSettlementsByCurrencyParams) (result models.GetLastSettlementsResponse, err error)

func (*Client) GetLastSettlementsByInstrument

func (c *Client) GetLastSettlementsByInstrument(ctx context.Context, params *models.GetLastSettlementsByInstrumentParams) (result models.GetLastSettlementsResponse, err error)

func (*Client) GetLastTradesByCurrency

func (c *Client) GetLastTradesByCurrency(ctx context.Context, params *models.GetLastTradesByCurrencyParams) (result models.GetLastTradesResponse, err error)

func (*Client) GetLastTradesByCurrencyAndTime

func (c *Client) GetLastTradesByCurrencyAndTime(ctx context.Context, params *models.GetLastTradesByCurrencyAndTimeParams) (result models.GetLastTradesResponse, err error)

func (*Client) GetLastTradesByInstrument

func (c *Client) GetLastTradesByInstrument(ctx context.Context, params *models.GetLastTradesByInstrumentParams) (result models.GetLastTradesResponse, err error)

func (*Client) GetLastTradesByInstrumentAndTime

func (c *Client) GetLastTradesByInstrumentAndTime(ctx context.Context, params *models.GetLastTradesByInstrumentAndTimeParams) (result models.GetLastTradesResponse, err error)

func (*Client) GetMargins

func (c *Client) GetMargins(ctx context.Context, params *models.GetMarginsParams) (result models.GetMarginsResponse, err error)

func (*Client) GetNewAnnouncements

func (c *Client) GetNewAnnouncements(ctx context.Context) (result []models.Announcement, err error)

func (*Client) GetOpenOrdersByCurrency

func (c *Client) GetOpenOrdersByCurrency(ctx context.Context, params *models.GetOpenOrdersByCurrencyParams) (result []models.Order, err error)

func (*Client) GetOpenOrdersByInstrument

func (c *Client) GetOpenOrdersByInstrument(ctx context.Context, params *models.GetOpenOrdersByInstrumentParams) (result []models.Order, err error)

func (*Client) GetOrderBook

func (c *Client) GetOrderBook(ctx context.Context, params *models.GetOrderBookParams) (result models.GetOrderBookResponse, err error)

func (*Client) GetOrderHistoryByCurrency

func (c *Client) GetOrderHistoryByCurrency(ctx context.Context, params *models.GetOrderHistoryByCurrencyParams) (result []models.Order, err error)

func (*Client) GetOrderHistoryByInstrument

func (c *Client) GetOrderHistoryByInstrument(ctx context.Context, params *models.GetOrderHistoryByInstrumentParams) (result []models.Order, err error)

func (*Client) GetOrderMarginByIDs

func (c *Client) GetOrderMarginByIDs(ctx context.Context, params *models.GetOrderMarginByIDsParams) (result models.GetOrderMarginByIDsResponse, err error)

func (*Client) GetOrderState

func (c *Client) GetOrderState(ctx context.Context, params *models.GetOrderStateParams) (result models.Order, err error)

func (*Client) GetPosition

func (c *Client) GetPosition(ctx context.Context, params *models.GetPositionParams) (result models.Position, err error)

func (*Client) GetPositions

func (c *Client) GetPositions(ctx context.Context, params *models.GetPositionsParams) (result []models.Position, err error)

func (*Client) GetSettlementHistoryByCurrency

func (c *Client) GetSettlementHistoryByCurrency(ctx context.Context, params *models.GetSettlementHistoryByCurrencyParams) (result models.GetSettlementHistoryResponse, err error)

func (*Client) GetSettlementHistoryByInstrument

func (c *Client) GetSettlementHistoryByInstrument(ctx context.Context, params *models.GetSettlementHistoryByInstrumentParams) (result models.GetSettlementHistoryResponse, err error)

func (*Client) GetSubaccounts

func (c *Client) GetSubaccounts(ctx context.Context, params *models.GetSubaccountsParams) (result []models.Subaccount, err error)

func (*Client) GetTime

func (c *Client) GetTime(ctx context.Context) (result int64, err error)

func (*Client) GetTradeVolumes

func (c *Client) GetTradeVolumes(ctx context.Context, params *models.GetTradeVolumesParams) (result models.GetTradeVolumesResponse, err error)

func (*Client) GetTradingviewChartData

func (c *Client) GetTradingviewChartData(ctx context.Context, params *models.GetTradingviewChartDataParams) (result models.GetTradingviewChartDataResponse, err error)

func (*Client) GetTransfers

func (c *Client) GetTransfers(ctx context.Context, params *models.GetTransfersParams) (result models.GetTransfersResponse, err error)

func (*Client) GetUserTradesByCurrency

func (c *Client) GetUserTradesByCurrency(ctx context.Context, params *models.GetUserTradesByCurrencyParams) (result models.GetUserTradesResponse, err error)

func (*Client) GetUserTradesByCurrencyAndTime

func (c *Client) GetUserTradesByCurrencyAndTime(ctx context.Context, params *models.GetUserTradesByCurrencyAndTimeParams) (result models.GetUserTradesResponse, err error)

func (*Client) GetUserTradesByInstrument

func (c *Client) GetUserTradesByInstrument(ctx context.Context, params *models.GetUserTradesByInstrumentParams) (result models.GetUserTradesResponse, err error)

func (*Client) GetUserTradesByInstrumentAndTime

func (c *Client) GetUserTradesByInstrumentAndTime(ctx context.Context, params *models.GetUserTradesByInstrumentAndTimeParams) (result models.GetUserTradesResponse, err error)

func (*Client) GetUserTradesByOrder

func (c *Client) GetUserTradesByOrder(ctx context.Context, params *models.GetUserTradesByOrderParams) (result models.GetUserTradesResponse, err error)

func (*Client) GetWithdrawals

func (c *Client) GetWithdrawals(ctx context.Context, params *models.GetWithdrawalsParams) (result []models.Withdrawal, err error)

func (*Client) Handle

func (c *Client) Handle(ctx context.Context, conn *jsonrpc2.Conn, req *jsonrpc2.Request)

Handle implements jsonrpc2.Handler

func (*Client) Hello

func (c *Client) Hello(ctx context.Context, params *models.HelloParams) (result models.HelloResponse, err error)

func (*Client) IsConnected

func (c *Client) IsConnected() bool

IsConnected returns the WebSocket connection state

func (*Client) Logout

func (c *Client) Logout(ctx context.Context) (err error)

func (*Client) Off

func (c *Client) Off(event interface{}, listener interface{}) *emission.Emitter

Off removes a listener for an event

func (*Client) On

func (c *Client) On(event interface{}, listener interface{}) *emission.Emitter

On adds a listener to a specific event

func (*Client) PrivateSubscribe

func (c *Client) PrivateSubscribe(ctx context.Context, params *models.SubscribeParams) (result models.SubscribeResponse, err error)

func (*Client) PrivateUnsubscribe

func (c *Client) PrivateUnsubscribe(ctx context.Context, params *models.UnsubscribeParams) (result models.UnsubscribeResponse, err error)

func (*Client) PublicSubscribe

func (c *Client) PublicSubscribe(ctx context.Context, params *models.SubscribeParams) (result models.SubscribeResponse, err error)

func (*Client) PublicUnsubscribe

func (c *Client) PublicUnsubscribe(ctx context.Context, params *models.UnsubscribeParams) (result models.UnsubscribeResponse, err error)

func (*Client) ResetConnection added in v1.1.1

func (c *Client) ResetConnection()

ResetConnection force reconnect

func (*Client) Sell

func (c *Client) Sell(ctx context.Context, params *models.SellParams) (result models.SellResponse, err error)

func (*Client) SetAnnouncementAsRead

func (c *Client) SetAnnouncementAsRead(ctx context.Context, params *models.SetAnnouncementAsReadParams) (result string, err error)

func (*Client) SetEmailForSubaccount

func (c *Client) SetEmailForSubaccount(ctx context.Context, params *models.SetEmailForSubaccountParams) (result string, err error)

func (*Client) SetEmailLanguage

func (c *Client) SetEmailLanguage(ctx context.Context, params *models.SetEmailLanguageParams) (result string, err error)

func (*Client) SetHeartbeat

func (c *Client) SetHeartbeat(ctx context.Context, params *models.SetHeartbeatParams) (result string, err error)

func (*Client) SetPasswordForSubaccount

func (c *Client) SetPasswordForSubaccount(ctx context.Context, params *models.SetPasswordForSubaccountParams) (result string, err error)

func (*Client) Start added in v1.1.1

func (c *Client) Start() error

Start connect ws

func (*Client) Stop added in v1.1.2

func (c *Client) Stop()

Stop stop ws connection

func (*Client) Subscribe

func (c *Client) Subscribe(channels []string) error

func (*Client) Test

func (c *Client) Test(ctx context.Context) (result models.TestResponse, err error)

func (*Client) Ticker

func (c *Client) Ticker(ctx context.Context, params *models.TickerParams) (result models.TickerResponse, err error)

func (*Client) ToggleNotificationsFromSubaccount

func (c *Client) ToggleNotificationsFromSubaccount(ctx context.Context, params *models.ToggleNotificationsFromSubaccountParams) (result string, err error)

func (*Client) ToggleSubaccountLogin

func (c *Client) ToggleSubaccountLogin(ctx context.Context, params *models.ToggleSubaccountLoginParams) (result string, err error)

func (*Client) Withdraw

func (c *Client) Withdraw(ctx context.Context, params *models.WithdrawParams) (result models.Withdrawal, err error)

type Configuration

type Configuration struct {
	Addr          string `json:"addr"`
	ApiKey        string `json:"api_key"`
	SecretKey     string `json:"secret_key"`
	AutoReconnect bool   `json:"auto_reconnect"`
	DebugMode     bool   `json:"debug_mode"`
}

type Event

type Event struct {
	Channel string          `json:"channel"`
	Data    json.RawMessage `json:"data"`
}

Event is wrapper of received event

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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