qtrade

package
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FiveMin    = "fivemin"
	FifteenMin = "fifteenmin"
	ThirtyMin  = "thirtymin"
	OneHour    = "onehour"
	TwoHour    = "twohour"
	FourHour   = "fourhour"
	OneDay     = "oneday"
)

Variables

View Source
var (
	ErrTooManyRequests = errors.New("too many requests")
	ErrHTTPRetryable   = errors.New("a retryable HTTP error occurred")
)
View Source
var CurrencyDecimalPlaces = map[Currency]int{
	USDT:  6,
	BAN:   29,
	BTM:   8,
	DOGE:  8,
	MCM:   9,
	WEBD:  4,
	QUAN:  8,
	PEG:   8,
	RVN:   8,
	BAC:   8,
	CCX:   6,
	XEQ:   4,
	RUPX:  8,
	PHL:   8,
	FCT:   8,
	DGB:   8,
	XBR:   8,
	ETH:   18,
	BTC:   8,
	SCC:   8,
	PUSD:  8,
	REDN:  8,
	SNOW:  6,
	HTR:   2,
	CPR:   8,
	CRUZ:  8,
	VEO:   8,
	KLP:   12,
	VLS:   8,
	NANO:  30,
	DEFT:  8,
	LTC:   8,
	RCO:   8,
	TAO1:  8,
	LUCK:  18,
	WFCT:  8,
	MMO:   8,
	NYZO:  6,
	BWS20: 8,
	BWS10: 8,
	THC:   8,
	XTO:   18,
	GRIN:  9,
	PASC:  4,
	ARMS:  8,
	RTM:   8,
	ZANO:  12,
	ANU:   8,
	XCP:   8,
	ARO:   8,
	BIS:   8,
	IDNA:  18,
	HLS:   18,
	PFCT:  8,
}

Functions

func RoundFloat64

func RoundFloat64(x float64, places int) float64

RoundFloat64 rounds x to a specified number of decimal places

Types

type Auth

type Auth struct {
	KeyID string
	Key   string
}

func AuthFromKeypair

func AuthFromKeypair(keypair string) (*Auth, error)

type Balance

type Balance struct {
	Currency Currency `json:"currency"`
	Balance  string   `json:"balance"`
}

type Client

type Client struct {
	Client *http.Client
	Config Configuration
	Auth   Auth
}

func NewClient

func NewClient(config Configuration) (*Client, error)

func (*Client) CancelOrder

func (client *Client) CancelOrder(ctx context.Context, id int) error

func (*Client) CreateBuyLimit

func (client *Client) CreateBuyLimit(ctx context.Context, amount float64, market Market, price float64) (*Order, error)

func (*Client) CreateSellLimit

func (client *Client) CreateSellLimit(ctx context.Context, amount float64, market Market, price float64) (*Order, error)

func (*Client) GetBalances

func (client *Client) GetBalances(ctx context.Context, params map[string]string) ([]Balance, error)

func (*Client) GetCommon

func (client *Client) GetCommon(ctx context.Context) (*CommonData, error)

func (*Client) GetCurrencies

func (client *Client) GetCurrencies(ctx context.Context) ([]CurrencyData, error)

func (*Client) GetCurrency

func (client *Client) GetCurrency(ctx context.Context, currency Currency) (*CurrencyData, error)

func (*Client) GetDeposit

func (client *Client) GetDeposit(ctx context.Context, id string) ([]DepositDetails, error)

func (*Client) GetDepositAddress

func (client *Client) GetDepositAddress(ctx context.Context, currency Currency) (*DepositAddressData, error)

func (*Client) GetDepositHistory

func (client *Client) GetDepositHistory(ctx context.Context, params map[string]string) ([]DepositDetails, error)

func (*Client) GetMarket

func (client *Client) GetMarket(ctx context.Context, market Market) (*GetMarketData, error)

func (*Client) GetMarketTrades

func (client *Client) GetMarketTrades(ctx context.Context, market Market) ([]PublicTrade, error)

func (*Client) GetMarkets

func (client *Client) GetMarkets(ctx context.Context) ([]MarketData, error)

func (*Client) GetOHLCV

func (client *Client) GetOHLCV(ctx context.Context, market Market, interval Interval, params map[string]string) ([]OHLCVSlice, error)

func (*Client) GetOrder

func (client *Client) GetOrder(ctx context.Context, id int) (*Order, error)

func (*Client) GetOrderbook

func (client *Client) GetOrderbook(ctx context.Context, market Market) (*Orderbook, error)

func (*Client) GetOrders

func (client *Client) GetOrders(ctx context.Context, params map[string]string) ([]Order, error)

func (*Client) GetTicker

func (client *Client) GetTicker(ctx context.Context, market Market) (*Ticker, error)

func (*Client) GetTickers

func (client *Client) GetTickers(ctx context.Context) ([]Ticker, error)

func (*Client) GetTrades

func (client *Client) GetTrades(ctx context.Context, params map[string]string) ([]PrivateTrade, error)

func (*Client) GetTransfers

func (client *Client) GetTransfers(ctx context.Context, params map[string]string) ([]Transfer, error)

func (*Client) GetUserInfo

func (client *Client) GetUserInfo(ctx context.Context) (*UserInfo, error)

func (*Client) GetUserMarket

func (client *Client) GetUserMarket(ctx context.Context, market Market, params map[string]string) (*UserMarketData, error)

func (*Client) GetWithdrawDetails

func (client *Client) GetWithdrawDetails(ctx context.Context, id int) (*WithdrawDetails, error)

func (*Client) GetWithdrawHistory

func (client *Client) GetWithdrawHistory(ctx context.Context, params map[string]string) ([]WithdrawDetails, error)

func (*Client) Withdraw

func (client *Client) Withdraw(ctx context.Context, address string, amount float64, currency Currency) (*WithdrawData, error)

type CommonData

type CommonData struct {
	Currencies []CurrencyData `json:"currencies"`
	Markets    []MarketData   `json:"markets"`
	Tickers    []Ticker       `json:"tickers"`
}

type Configuration

type Configuration struct {
	HMACKeypair string        `mapstructure:"hmac_keypair"`
	Endpoint    string        `mapstructure:"endpoint"`
	Timeout     time.Duration `mapstructure:"timeout"`
	MaxRetries  int           `mapstructure:"max_retries"`
	Backoff     time.Duration `mapstructure:"backoff"`
}

type CreateOrderResult

type CreateOrderResult struct {
	Data struct {
		Order Order `json:"order"`
	} `json:"data"`
}

type Currency

type Currency string
const (
	USDT  Currency = "USDT"
	BAN   Currency = "BAN"
	BTM   Currency = "BTM"
	DOGE  Currency = "DOGE"
	MCM   Currency = "MCM"
	WEBD  Currency = "WEBD"
	QUAN  Currency = "QUAN"
	PEG   Currency = "PEG"
	RVN   Currency = "RVN"
	BAC   Currency = "BAC"
	CCX   Currency = "CCX"
	XEQ   Currency = "XEQ"
	RUPX  Currency = "RUPX"
	PHL   Currency = "PHL"
	FCT   Currency = "FCT"
	DGB   Currency = "DGB"
	XBR   Currency = "XBR"
	ETH   Currency = "ETH"
	BTC   Currency = "BTC"
	SCC   Currency = "SCC"
	PUSD  Currency = "pUSD"
	REDN  Currency = "REDN"
	SNOW  Currency = "SNOW"
	HTR   Currency = "HTR"
	CPR   Currency = "CPR"
	CRUZ  Currency = "CRUZ"
	VEO   Currency = "VEO"
	KLP   Currency = "KLP"
	VLS   Currency = "VLS"
	NANO  Currency = "NANO"
	DEFT  Currency = "DEFT"
	LTC   Currency = "LTC"
	RCO   Currency = "RCO"
	TAO1  Currency = "TAO1"
	LUCK  Currency = "LUCK"
	WFCT  Currency = "WFCT"
	MMO   Currency = "MMO"
	NYZO  Currency = "NYZO"
	BWS20 Currency = "BWS20"
	BWS10 Currency = "BWS10"
	THC   Currency = "THC"
	XTO   Currency = "XTO"
	GRIN  Currency = "GRIN"
	PASC  Currency = "PASC"
	ARMS  Currency = "ARMS"
	RTM   Currency = "RTM"
	ZANO  Currency = "ZANO"
	ANU   Currency = "ANU"
	XCP   Currency = "XCP"
	ARO   Currency = "ARO"
	BIS   Currency = "BIS"
	IDNA  Currency = "IDNA"
	HLS   Currency = "HLS"
	PFCT  Currency = "pFCT"
)

type CurrencyConfig

type CurrencyConfig struct {
	AddressVersion                int     `json:"address_version,omitempty"`
	DefaultSigner                 int     `json:"default_signer"`
	Price                         float64 `json:"price"`
	RequiredConfirmations         int     `json:"required_confirmations"`
	RequiredGenerateConfirmations int     `json:"required_generate_confirmations,omitempty"`
	SatoshiPerByte                int     `json:"satoshi_per_byte,omitempty"`
	WifVersion                    int     `json:"wif_version,omitempty"`
	WithdrawFee                   float64 `json:"withdraw_fee,string"`
	ExplorerAddressURL            string  `json:"explorerAddressURL,omitempty"`
	ExplorerTransactionURL        string  `json:"explorerTransactionURL,omitempty"`
	P2ShAddressVersion            int     `json:"p2sh_address_version,omitempty"`
	DataMax                       int     `json:"data_max,omitempty"`
	EnableAddressData             bool    `json:"enable_address_data,omitempty"`
}

type CurrencyData

type CurrencyData struct {
	CanWithdraw bool             `json:"can_withdraw"`
	Code        Currency         `json:"code"`
	Config      CurrencyConfig   `json:"config"`
	LongName    string           `json:"long_name"`
	Metadata    CurrencyMetadata `json:"metadata"`
	Precision   int              `json:"precision"`
	Status      CurrencyStatus   `json:"status"`
	Type        string           `json:"type"`
}

type CurrencyMetadata

type CurrencyMetadata struct {
	DelistingDate   string        `json:"delisting_date,omitempty"`
	WithdrawNotices []interface{} `json:"withdraw_notices,omitempty"`
	DepositNotices  []interface{} `json:"deposit_notices,omitempty"`
	Hidden          bool          `json:"hidden,omitempty"`
}

type CurrencyStatus

type CurrencyStatus string
const (
	CurrencyStatusOK       CurrencyStatus = "ok"
	CurrencyStatusDegraded CurrencyStatus = "degraded"
	CurrencyStatusDisabled CurrencyStatus = "disabled"
	CurrencyStatusOffline  CurrencyStatus = "offline"
	CurrencyStatusDelisted CurrencyStatus = "delisted"
)

type DepositAddressData

type DepositAddressData struct {
	Address        string         `json:"address"`
	CurrencyStatus CurrencyStatus `json:"currency_status"`
}

type DepositDetails

type DepositDetails struct {
	Address     string                 `json:"address"`
	Amount      string                 `json:"amount"`
	CreatedAt   time.Time              `json:"created_at"`
	Currency    Currency               `json:"currency"`
	ID          string                 `json:"id"`
	NetworkData map[string]interface{} `json:"network_data,omitempty"`
	RelayStatus string                 `json:"relay_status"`
	Status      string                 `json:"status"`
}

type EmailAddress

type EmailAddress struct {
	Address   string    `json:"address"`
	CreatedAt time.Time `json:"created_at"`
	ID        int       `json:"id"`
	IsPrimary bool      `json:"is_primary"`
	Verified  bool      `json:"verified"`
}

type Error added in v1.1.3

type Error struct {
	Code  string `json:"code"`
	Title string `json:"title"`
}

nolint: golint

func (Error) Error added in v1.1.3

func (err Error) Error() string

type ErrorResult

type ErrorResult struct {
	Errors []Error `json:"errors"`
}

type GetBalancesResult

type GetBalancesResult struct {
	Data struct {
		Balances []Balance `json:"balances"`
	} `json:"data"`
}

type GetCommonResult

type GetCommonResult struct {
	Data CommonData `json:"data"`
}

type GetCurrenciesResult

type GetCurrenciesResult struct {
	Data struct {
		Currencies []CurrencyData `json:"currencies"`
	} `json:"data"`
}

type GetCurrencyResult

type GetCurrencyResult struct {
	Data struct {
		Currency CurrencyData `json:"currency"`
	} `json:"data"`
}

type GetDepositAddressResult

type GetDepositAddressResult struct {
	Data DepositAddressData `json:"data"`
}

type GetDepositHistoryResult

type GetDepositHistoryResult struct {
	Data struct {
		Deposits []DepositDetails `json:"deposits"`
	} `json:"data"`
}

type GetDepositResult

type GetDepositResult struct {
	Data struct {
		Deposit []DepositDetails `json:"deposit"`
	} `json:"data"`
}

type GetMarketData

type GetMarketData struct {
	Market       MarketData    `json:"market"`
	RecentTrades []PublicTrade `json:"recent_trades"`
}

type GetMarketResult

type GetMarketResult struct {
	Data GetMarketData `json:"data"`
}

type GetMarketTradesResult

type GetMarketTradesResult struct {
	Data struct {
		Trades []PublicTrade `json:"trades"`
	} `json:"data"`
}

type GetMarketsResult

type GetMarketsResult struct {
	Data struct {
		Markets []MarketData `json:"markets"`
	} `json:"data"`
}

type GetOHLCVResult

type GetOHLCVResult struct {
	Data struct {
		Slices []OHLCVSlice `json:"slices"`
	} `json:"data"`
}

type GetOrderResult

type GetOrderResult struct {
	Data struct {
		Order Order `json:"order"`
	} `json:"data"`
}

type GetOrderbookData

type GetOrderbookData struct {
	Buy        map[string]string `json:"buy"`
	LastChange int               `json:"last_change"`
	Sell       map[string]string `json:"sell"`
}

type GetOrderbookResult

type GetOrderbookResult struct {
	Data GetOrderbookData `json:"data"`
}

type GetOrdersResult

type GetOrdersResult struct {
	Data struct {
		Orders []Order `json:"orders"`
	} `json:"data"`
}

type GetTickerResult

type GetTickerResult struct {
	Data Ticker `json:"data"`
}

type GetTickersResult

type GetTickersResult struct {
	Data struct {
		Tickers []Ticker `json:"markets"`
	} `json:"data"`
}

type GetTradesResult

type GetTradesResult struct {
	Data struct {
		Trades []PrivateTrade `json:"trades"`
	} `json:"data"`
}

type GetTransfersResult

type GetTransfersResult struct {
	Data struct {
		Transfers []Transfer `json:"transfers"`
	} `json:"data"`
}

type GetUserInfoResult

type GetUserInfoResult struct {
	Data struct {
		User UserInfo `json:"user"`
	} `json:"data"`
}

type GetUserMarketResult

type GetUserMarketResult struct {
	Data UserMarketData `json:"data"`
}

type GetWithdrawDetailsResult

type GetWithdrawDetailsResult struct {
	Data struct {
		Withdraw WithdrawDetails `json:"withdraw"`
	} `json:"data"`
}

type GetWithdrawHistoryResult

type GetWithdrawHistoryResult struct {
	Data struct {
		Withdraws []WithdrawDetails `json:"withdraws"`
	} `json:"data"`
}

type Interval

type Interval string

func (Interval) Duration

func (interval Interval) Duration() time.Duration

type Market

type Market int
const (
	LTC_BTC     Market = 1
	RCO_BTC     Market = 2
	REDN_BTC    Market = 3
	CPR_BTC     Market = 4
	BAC_BTC     Market = 5
	QUAN_BTC    Market = 6
	RVN_BTC     Market = 7
	MMO_BTC     Market = 8
	BTM_BTC     Market = 9
	ANU_BTC     Market = 10
	BWS20_BTC   Market = 11
	BWS20_BWS10 Market = 12
	DEFT_BTC    Market = 13
	RUPX_BTC    Market = 14
	VEO_BTC     Market = 15
	THC_BTC     Market = 16
	SCC_BTC     Market = 17
	XBR_BTC     Market = 18
	SNOW_BTC    Market = 19
	BIS_BTC     Market = 20
	PHL_BTC     Market = 21
	GRIN_BTC    Market = 23
	NYZO_BTC    Market = 24
	TAO1_BTC    Market = 25
	XEQ_BTC     Market = 26
	VLS_BTC     Market = 27
	ZANO_BTC    Market = 28
	PASC_BTC    Market = 30
	NANO_BTC    Market = 31
	CRUZ_BTC    Market = 32
	BAN_BTC     Market = 33
	MCM_BTC     Market = 34
	ARO_BTC     Market = 35
	DOGE_BTC    Market = 36
	HLS_BTC     Market = 37
	WEBD_BTC    Market = 38
	ARMS_BTC    Market = 39
	CCX_BTC     Market = 40
	ETH_BTC     Market = 41
	PEG_BTC     Market = 42
	BTC_pUSD    Market = 43
	ETH_pUSD    Market = 44
	PEG_pUSD    Market = 45
	PFCT_pUSD   Market = 46
	FCT_pUSD    Market = 47
	FCT_BTC     Market = 48
	IDNA_BTC    Market = 49
	DGB_BTC     Market = 50
	KLP_BTC     Market = 51
	XTO_BTC     Market = 52
	LUCK_BTC    Market = 53
	HTR_BTC     Market = 54
	RTM_BTC     Market = 55
	BTC_USDT    Market = 56
	ETH_USDT    Market = 57
	NYZO_USDT   Market = 58
	KLP_USDT    Market = 59
	HTR_USDT    Market = 60
	WFCT_FCT    Market = 61
)

nolint: golint

func (Market) BaseCurrency

func (m Market) BaseCurrency() Currency

func (Market) MarketCurrency

func (m Market) MarketCurrency() Currency

func (Market) String

func (m Market) String() string

type MarketData

type MarketData struct {
	BaseCurrency   Currency       `json:"base_currency"`
	CanCancel      bool           `json:"can_cancel"`
	CanTrade       bool           `json:"can_trade"`
	CanView        bool           `json:"can_view"`
	ID             Market         `json:"id"`
	MakerFee       float64        `json:"maker_fee,string"`
	MarketCurrency Currency       `json:"market_currency"`
	Metadata       MarketMetadata `json:"metadata"`
	TakerFee       float64        `json:"taker_fee,string"`
}

type MarketMetadata

type MarketMetadata struct {
	DelistingDate string         `json:"delisting_date,omitempty"`
	MarketNotices []MarketNotice `json:"market_notices,omitempty"`
	Labels        []interface{}  `json:"labels,omitempty"`
}

type MarketNotice

type MarketNotice struct {
	Message string `json:"message"`
	Type    string `json:"type"`
}

type OHLCVSlice

type OHLCVSlice struct {
	Close  float64   `json:"close,string"`
	High   float64   `json:"high,string"`
	Low    float64   `json:"low,string"`
	Open   float64   `json:"open,string"`
	Time   time.Time `json:"time"`
	Volume float64   `json:"volume,string"`
}

type Order

type Order struct {
	BaseAmount            float64        `json:"base_amount,string"`
	CreatedAt             time.Time      `json:"created_at"`
	ID                    int            `json:"id"`
	MarketAmount          float64        `json:"market_amount,string"`
	MarketAmountRemaining float64        `json:"market_amount_remaining,string"`
	Market                Market         `json:"market_id"`
	Open                  bool           `json:"open"`
	OrderType             OrderType      `json:"order_type"`
	Price                 float64        `json:"price,string"`
	Trades                []PrivateTrade `json:"trades"`
	CloseReason           string         `json:"close_reason,omitempty"`
}

type OrderType

type OrderType string
const (
	SellLimit OrderType = "sell_limit"
	BuyLimit  OrderType = "buy_limit"
)

type Orderbook

type Orderbook struct {
	Buy        map[float64]float64 `json:"buy"`
	LastChange int                 `json:"last_change"`
	Sell       map[float64]float64 `json:"sell"`
}

type PrivateTrade

type PrivateTrade struct {
	BaseAmount   float64   `json:"base_amount,string"`
	BaseFee      float64   `json:"base_fee,string"`
	CreatedAt    time.Time `json:"created_at"`
	ID           int       `json:"id"`
	OrderID      int       `json:"order_id,omitempty"`
	Market       Market    `json:"market_id,omitempty"`
	MarketAmount float64   `json:"market_amount,string"`
	Price        float64   `json:"price,string"`
	Taker        bool      `json:"taker"`
	Side         string    `json:"side,omitempty"`
}

PrivateTrade contains detailed information about a trade, and is usually only available to one of the users involved.

type PublicTrade

type PublicTrade struct {
	Amount      float64   `json:"amount,string"`
	CreatedAt   time.Time `json:"created_at"`
	ID          int       `json:"id"`
	Price       float64   `json:"price,string"`
	SellerTaker *bool     `json:"seller_taker,omitempty"`
}

PublicTrade does not contain detailed info about a trade, and is returned by public endpoints.

type Ticker

type Ticker struct {
	Ask             float64 `json:"ask,string"`
	Bid             float64 `json:"bid,string"`
	DayAvgPrice     float64 `json:"day_avg_price,string"`
	DayChange       float64 `json:"day_change,string"`
	DayHigh         float64 `json:"day_high,string"`
	DayLow          float64 `json:"day_low,string"`
	DayOpen         float64 `json:"day_open,string"`
	DayVolumeBase   float64 `json:"day_volume_base,string"`
	DayVolumeMarket float64 `json:"day_volume_market,string"`
	Market          Market  `json:"id"`
	IDHr            string  `json:"id_hr"`
	Last            float64 `json:"last,string"`
}

type Transfer

type Transfer struct {
	Amount         float64                `json:"amount,string"`
	CreatedAt      time.Time              `json:"created_at"`
	Currency       Currency               `json:"currency"`
	ID             int                    `json:"id"`
	ReasonCode     string                 `json:"reason_code"`
	ReasonMetadata map[string]interface{} `json:"reason_metadata"`
	SenderEmail    string                 `json:"sender_email"`
	SenderID       int                    `json:"sender_id"`
}

type UserInfo

type UserInfo struct {
	CanLogin       bool           `json:"can_login"`
	CanTrade       bool           `json:"can_trade"`
	CanWithdraw    bool           `json:"can_withdraw"`
	Email          string         `json:"email"`
	EmailAddresses []EmailAddress `json:"email_addresses"`
	FirstName      string         `json:"fname"`
	LastName       string         `json:"lname"`
	ID             int            `json:"id"`
	ReferralCode   string         `json:"referral_code"`
	TFAEnabled     bool           `json:"tfa_enabled"`
	Verification   string         `json:"verification"`
	VerifiedEmail  bool           `json:"verified_email"`
	WithdrawLimit  int            `json:"withdraw_limit"`
}

type UserMarketData

type UserMarketData struct {
	BaseBalance   float64 `json:"base_balance,string"`
	ClosedOrders  []Order `json:"closed_orders"`
	MarketBalance float64 `json:"market_balance,string"`
	OpenOrders    []Order `json:"open_orders"`
}

type WithdrawData

type WithdrawData struct {
	Code   string `json:"code"`
	ID     int    `json:"id"`
	Result string `json:"result"`
}

type WithdrawDetails

type WithdrawDetails struct {
	Address         string                 `json:"address"`
	Amount          string                 `json:"amount"`
	CancelRequested bool                   `json:"cancel_requested"`
	CreatedAt       time.Time              `json:"created_at"`
	Currency        Currency               `json:"currency"`
	ID              int                    `json:"id"`
	NetworkData     map[string]interface{} `json:"network_data,omitempty"`
	RelayStatus     string                 `json:"relay_status"`
	Status          string                 `json:"status"`
	UserID          int                    `json:"user_id"`
}

type WithdrawResult

type WithdrawResult struct {
	Data WithdrawData `json:"data"`
}

Jump to

Keyboard shortcuts

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