bitstamp

package
v0.0.0-...-83dca6d Latest Latest
Warning

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

Go to latest
Published: May 23, 2022 License: MIT Imports: 31 Imported by: 0

README

GoCryptoTrader package Bitstamp

Build Status Software License GoDoc Coverage Status Go Report Card

This bitstamp package is part of the GoCryptoTrader codebase.

This is still in active development

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

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

Bitstamp 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 b exchange.IBotExchange

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

// Public calls - wrapper functions

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

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

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

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

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

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

// Submits an order and the exchange and returns its tradeID
tradeID, err := b.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:

bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc

Documentation

Index

Constants

View Source
const (
	Deposit = iota
	Withdrawal
	MarketTrade
	SubAccountTransfer = 14
)

Transaction types

View Source
const (
	BuyOrder = iota
	SellOrder
)

Order side type

Variables

This section is empty.

Functions

This section is empty.

Types

type Balance

type Balance struct {
	Available     float64
	Balance       float64
	Reserved      float64
	WithdrawalFee float64
	BTCFee        float64 // for cryptocurrency pairs
	USDFee        float64
	EURFee        float64
}

Balance stores the balance info

type Balances

type Balances map[string]Balance

Balances holds full balance information with the supplied APIKEYS

type Bitstamp

type Bitstamp struct {
	exchange.Base
}

Bitstamp is the overarching type across the bitstamp package

func (*Bitstamp) CalculateTradingFee

func (b *Bitstamp) CalculateTradingFee(base, quote currency.Code, purchasePrice, amount float64, balances Balances) float64

CalculateTradingFee returns fee on a currency pair

func (*Bitstamp) CancelAllExistingOrders

func (b *Bitstamp) CancelAllExistingOrders(ctx context.Context) (bool, error)

CancelAllExistingOrders cancels all open orders on the exchange

func (*Bitstamp) CancelAllOrders

func (b *Bitstamp) CancelAllOrders(ctx context.Context, _ *order.Cancel) (order.CancelAllResponse, error)

CancelAllOrders cancels all orders associated with a currency pair

func (*Bitstamp) CancelBatchOrders

func (b *Bitstamp) CancelBatchOrders(ctx context.Context, o []order.Cancel) (order.CancelBatchResponse, error)

CancelBatchOrders cancels an orders by their corresponding ID numbers

func (*Bitstamp) CancelExistingOrder

func (b *Bitstamp) CancelExistingOrder(ctx context.Context, orderID int64) (CancelOrder, error)

CancelExistingOrder cancels order by ID

func (*Bitstamp) CancelOrder

func (b *Bitstamp) CancelOrder(ctx context.Context, o *order.Cancel) error

CancelOrder cancels an order by its corresponding ID number

func (*Bitstamp) CryptoWithdrawal

func (b *Bitstamp) CryptoWithdrawal(ctx context.Context, amount float64, address, symbol, destTag string) (*CryptoWithdrawalResponse, error)

CryptoWithdrawal withdraws a cryptocurrency into a supplied wallet, returns ID amount - The amount you want withdrawn address - The wallet address of the cryptocurrency symbol - the type of crypto ie "ltc", "btc", "eth" destTag - only for XRP default to ""

func (*Bitstamp) FetchAccountInfo

func (b *Bitstamp) FetchAccountInfo(ctx context.Context, assetType asset.Item) (account.Holdings, error)

FetchAccountInfo retrieves balances for all enabled currencies

func (*Bitstamp) FetchOrderbook

func (b *Bitstamp) FetchOrderbook(ctx context.Context, p currency.Pair, assetType asset.Item) (*orderbook.Base, error)

FetchOrderbook returns the orderbook for a currency pair

func (*Bitstamp) FetchTicker

func (b *Bitstamp) FetchTicker(ctx context.Context, p currency.Pair, assetType asset.Item) (*ticker.Price, error)

FetchTicker returns the ticker for a currency pair

func (*Bitstamp) FetchTradablePairs

func (b *Bitstamp) FetchTradablePairs(ctx context.Context, asset asset.Item) ([]string, error)

FetchTradablePairs returns a list of the exchanges tradable pairs

func (*Bitstamp) GetActiveOrders

func (b *Bitstamp) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest) ([]order.Detail, error)

GetActiveOrders retrieves any orders that are active/open

func (*Bitstamp) GetBalance

func (b *Bitstamp) GetBalance(ctx context.Context) (Balances, error)

GetBalance returns full balance of currency held on the exchange

func (*Bitstamp) GetCryptoDepositAddress

func (b *Bitstamp) GetCryptoDepositAddress(ctx context.Context, crypto currency.Code) (*DepositAddress, error)

GetCryptoDepositAddress returns a depositing address by crypto crypto - example "btc", "ltc", "eth", "xrp" or "bch"

func (*Bitstamp) GetDefaultConfig

func (b *Bitstamp) GetDefaultConfig() (*config.Exchange, error)

GetDefaultConfig returns a default exchange config

func (*Bitstamp) GetDepositAddress

func (b *Bitstamp) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error)

GetDepositAddress returns a deposit address for a specified currency

func (*Bitstamp) GetEURUSDConversionRate

func (b *Bitstamp) GetEURUSDConversionRate(ctx context.Context) (EURUSDConversionRate, error)

GetEURUSDConversionRate returns the conversion rate between Euro and USD

func (*Bitstamp) GetFee

func (b *Bitstamp) GetFee(ctx context.Context, feeBuilder *exchange.FeeBuilder) (float64, error)

GetFee returns an estimate of fee based on type of transaction

func (*Bitstamp) GetFeeByType

func (b *Bitstamp) GetFeeByType(ctx context.Context, feeBuilder *exchange.FeeBuilder) (float64, error)

GetFeeByType returns an estimate of fee based on type of transaction

func (*Bitstamp) GetFundingHistory

func (b *Bitstamp) GetFundingHistory(ctx context.Context) ([]exchange.FundHistory, error)

GetFundingHistory returns funding history, deposits and withdrawals

func (*Bitstamp) GetHistoricCandles

func (b *Bitstamp) GetHistoricCandles(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error)

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

func (*Bitstamp) GetHistoricCandlesExtended

func (b *Bitstamp) GetHistoricCandlesExtended(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error)

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

func (*Bitstamp) GetHistoricTrades

func (b *Bitstamp) GetHistoricTrades(_ context.Context, _ currency.Pair, _ asset.Item, _, _ time.Time) ([]trade.Data, error)

GetHistoricTrades returns historic trade data within the timeframe provided

func (*Bitstamp) GetOpenOrders

func (b *Bitstamp) GetOpenOrders(ctx context.Context, currencyPair string) ([]Order, error)

GetOpenOrders returns all open orders on the exchange

func (*Bitstamp) GetOrderHistory

func (b *Bitstamp) GetOrderHistory(ctx context.Context, req *order.GetOrdersRequest) ([]order.Detail, error)

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

func (*Bitstamp) GetOrderInfo

func (b *Bitstamp) GetOrderInfo(ctx context.Context, orderID string, pair currency.Pair, assetType asset.Item) (order.Detail, error)

GetOrderInfo returns order information based on order ID

func (*Bitstamp) GetOrderStatus

func (b *Bitstamp) GetOrderStatus(ctx context.Context, orderID int64) (OrderStatus, error)

GetOrderStatus returns an the status of an order by its ID

func (*Bitstamp) GetOrderbook

func (b *Bitstamp) GetOrderbook(ctx context.Context, currency string) (Orderbook, error)

GetOrderbook Returns a JSON dictionary with "bids" and "asks". Each is a list of open orders and each order is represented as a list holding the price and the amount.

func (*Bitstamp) GetRecentTrades

func (b *Bitstamp) GetRecentTrades(ctx context.Context, p currency.Pair, assetType asset.Item) ([]trade.Data, error)

GetRecentTrades returns the most recent trades for a currency and asset

func (*Bitstamp) GetTicker

func (b *Bitstamp) GetTicker(ctx context.Context, currency string, hourly bool) (*Ticker, error)

GetTicker returns ticker information

func (*Bitstamp) GetTradingPairs

func (b *Bitstamp) GetTradingPairs(ctx context.Context) ([]TradingPair, error)

GetTradingPairs returns a list of trading pairs which Bitstamp currently supports

func (*Bitstamp) GetTransactions

func (b *Bitstamp) GetTransactions(ctx context.Context, currencyPair, timePeriod string) ([]Transactions, error)

GetTransactions returns transaction information value paramater ["time"] = "minute", "hour", "day" will collate your response into time intervals.

func (*Bitstamp) GetUnconfirmedBitcoinDeposits

func (b *Bitstamp) GetUnconfirmedBitcoinDeposits(ctx context.Context) ([]UnconfirmedBTCTransactions, error)

GetUnconfirmedBitcoinDeposits returns unconfirmed transactions

func (*Bitstamp) GetUserTransactions

func (b *Bitstamp) GetUserTransactions(ctx context.Context, currencyPair string) ([]UserTransactions, error)

GetUserTransactions returns an array of transactions

func (*Bitstamp) GetWithdrawalRequests

func (b *Bitstamp) GetWithdrawalRequests(ctx context.Context, timedelta int64) ([]WithdrawalRequests, error)

GetWithdrawalRequests returns withdrawal requests for the account timedelta - positive integer with max value 50000000 which returns requests from number of seconds ago to now.

func (*Bitstamp) GetWithdrawalsHistory

func (b *Bitstamp) GetWithdrawalsHistory(ctx context.Context, c currency.Code) (resp []exchange.WithdrawalHistory, err error)

GetWithdrawalsHistory returns previous withdrawals data

func (*Bitstamp) ModifyOrder

func (b *Bitstamp) ModifyOrder(ctx context.Context, action *order.Modify) (order.Modify, error)

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

func (*Bitstamp) OHLC

func (b *Bitstamp) OHLC(ctx context.Context, currency string, start, end time.Time, step, limit string) (resp OHLCResponse, err error)

OHLC returns OHLCV data for step (interval)

func (*Bitstamp) OpenBankWithdrawal

func (b *Bitstamp) OpenBankWithdrawal(ctx context.Context, amount float64, currency,
	name, iban, bic, address, postalCode, city, country,
	comment, withdrawalType string) (FIATWithdrawalResponse, error)

OpenBankWithdrawal Opens a bank withdrawal request (SEPA or international)

func (*Bitstamp) OpenInternationalBankWithdrawal

func (b *Bitstamp) OpenInternationalBankWithdrawal(ctx context.Context, amount float64, currency,
	name, iban, bic, address, postalCode, city, country,
	bankName, bankAddress, bankPostCode, bankCity, bankCountry, internationalCurrency,
	comment, withdrawalType string) (FIATWithdrawalResponse, error)

OpenInternationalBankWithdrawal Opens a bank withdrawal request (international)

func (*Bitstamp) PlaceOrder

func (b *Bitstamp) PlaceOrder(ctx context.Context, currencyPair string, price, amount float64, buy, market bool) (Order, error)

PlaceOrder places an order on the exchange.

func (*Bitstamp) Run

func (b *Bitstamp) Run()

Run implements the Bitstamp wrapper

func (*Bitstamp) SendAuthenticatedHTTPRequest

func (b *Bitstamp) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.URL, path string, v2 bool, values url.Values, result interface{}) error

SendAuthenticatedHTTPRequest sends an authenticated request

func (*Bitstamp) SendHTTPRequest

func (b *Bitstamp) SendHTTPRequest(ctx context.Context, ep exchange.URL, path string, result interface{}) error

SendHTTPRequest sends an unauthenticated HTTP request

func (*Bitstamp) SetDefaults

func (b *Bitstamp) SetDefaults()

SetDefaults sets default for Bitstamp

func (*Bitstamp) Setup

func (b *Bitstamp) Setup(exch *config.Exchange) error

Setup sets configuration values to bitstamp

func (*Bitstamp) Start

func (b *Bitstamp) Start(wg *sync.WaitGroup) error

Start starts the Bitstamp go routine

func (*Bitstamp) SubmitOrder

func (b *Bitstamp) SubmitOrder(ctx context.Context, s *order.Submit) (order.SubmitResponse, error)

SubmitOrder submits a new order

func (*Bitstamp) Subscribe

func (b *Bitstamp) Subscribe(channelsToSubscribe []stream.ChannelSubscription) error

Subscribe sends a websocket message to receive data from the channel

func (*Bitstamp) TransferAccountBalance

func (b *Bitstamp) TransferAccountBalance(ctx context.Context, amount float64, currency, subAccount string, toMain bool) error

TransferAccountBalance transfers funds from either a main or sub account amount - to transfers currency - which currency to transfer subaccount - name of account toMain - bool either to or from account

func (*Bitstamp) Unsubscribe

func (b *Bitstamp) Unsubscribe(channelsToUnsubscribe []stream.ChannelSubscription) error

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

func (*Bitstamp) UpdateAccountInfo

func (b *Bitstamp) UpdateAccountInfo(ctx context.Context, assetType asset.Item) (account.Holdings, error)

UpdateAccountInfo retrieves balances for all enabled currencies for the Bitstamp exchange

func (*Bitstamp) UpdateOrderbook

func (b *Bitstamp) UpdateOrderbook(ctx context.Context, p currency.Pair, assetType asset.Item) (*orderbook.Base, error)

UpdateOrderbook updates and returns the orderbook for a currency pair

func (*Bitstamp) UpdateTicker

func (b *Bitstamp) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Item) (*ticker.Price, error)

UpdateTicker updates and returns the ticker for a currency pair

func (*Bitstamp) UpdateTickers

func (b *Bitstamp) UpdateTickers(ctx context.Context, a asset.Item) error

UpdateTickers updates the ticker for all currency pairs of a given asset type

func (*Bitstamp) UpdateTradablePairs

func (b *Bitstamp) UpdateTradablePairs(ctx context.Context, forceUpdate bool) error

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

func (*Bitstamp) ValidateCredentials

func (b *Bitstamp) ValidateCredentials(ctx context.Context, assetType asset.Item) error

ValidateCredentials validates current credentials used for wrapper functionality

func (*Bitstamp) WithdrawCryptocurrencyFunds

func (b *Bitstamp) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted

func (*Bitstamp) WithdrawFiatFunds

func (b *Bitstamp) WithdrawFiatFunds(ctx context.Context, withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFunds returns a withdrawal ID when a withdrawal is submitted

func (*Bitstamp) WithdrawFiatFundsToInternationalBank

func (b *Bitstamp) WithdrawFiatFundsToInternationalBank(ctx context.Context, withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFundsToInternationalBank returns a withdrawal ID when a withdrawal is submitted

func (*Bitstamp) WsConnect

func (b *Bitstamp) WsConnect() error

WsConnect connects to a websocket feed

type CancelOrder

type CancelOrder struct {
	Price  float64 `json:"price"`
	Amount float64 `json:"amount"`
	Type   int     `json:"type"`
	ID     int64   `json:"id"`
}

CancelOrder holds the order cancellation info

type CaptureError

type CaptureError struct {
	Status interface{} `json:"status"`
	Reason interface{} `json:"reason"`
	Code   interface{} `json:"code"`
	Error  interface{} `json:"error"`
}

CaptureError is used to capture unmarshalled errors

type CryptoWithdrawalResponse

type CryptoWithdrawalResponse struct {
	ID int64 `json:"id"`
}

CryptoWithdrawalResponse response from a crypto withdrawal request

type DepositAddress

type DepositAddress struct {
	Address        string `json:"address"`
	DestinationTag int64  `json:"destination_tag"`
}

DepositAddress holds the deposit info

type EURUSDConversionRate

type EURUSDConversionRate struct {
	Buy  float64 `json:"buy,string"`
	Sell float64 `json:"sell,string"`
}

EURUSDConversionRate holds buy sell conversion rate information

type FIATWithdrawalResponse

type FIATWithdrawalResponse struct {
	ID int64 `json:"id"`
}

FIATWithdrawalResponse response from a fiat withdrawal request

type OHLCResponse

type OHLCResponse struct {
	Data struct {
		Pair  string `json:"pair"`
		OHLCV []struct {
			Timestamp int64   `json:"timestamp,string"`
			Open      float64 `json:"open,string"`
			High      float64 `json:"high,string"`
			Low       float64 `json:"low,string"`
			Close     float64 `json:"close,string"`
			Volume    float64 `json:"volume,string"`
		} `json:"ohlc"`
	} `json:"data"`
}

OHLCResponse holds returned candle data

type Order

type Order struct {
	ID       int64   `json:"id,string"`
	DateTime string  `json:"datetime"`
	Type     int     `json:"type,string"`
	Price    float64 `json:"price,string"`
	Amount   float64 `json:"amount,string"`
	Currency string  `json:"currency_pair"`
}

Order holds current open order data

type OrderStatus

type OrderStatus struct {
	Price        float64 `json:"price,string"`
	Amount       float64 `json:"amount,string"`
	Type         int     `json:"type"`
	ID           int64   `json:"id,string"`
	DateTime     string  `json:"datetime"`
	Status       string
	Transactions []struct {
		TradeID int64   `json:"tid"`
		USD     float64 `json:"usd,string"`
		Price   float64 `json:"price,string"`
		Fee     float64 `json:"fee,string"`
		BTC     float64 `json:"btc,string"`
	}
}

OrderStatus holds order status information

type Orderbook

type Orderbook struct {
	Timestamp int64 `json:"timestamp,string"`
	Bids      []OrderbookBase
	Asks      []OrderbookBase
}

Orderbook holds orderbook information

type OrderbookBase

type OrderbookBase struct {
	Price  float64
	Amount float64
}

OrderbookBase holds singular price information

type Ticker

type Ticker struct {
	Last      float64 `json:"last,string"`
	High      float64 `json:"high,string"`
	Low       float64 `json:"low,string"`
	Vwap      float64 `json:"vwap,string"`
	Volume    float64 `json:"volume,string"`
	Bid       float64 `json:"bid,string"`
	Ask       float64 `json:"ask,string"`
	Timestamp int64   `json:"timestamp,string"`
	Open      float64 `json:"open,string"`
}

Ticker holds ticker information

type TradingPair

type TradingPair struct {
	Name            string `json:"name"`
	URLSymbol       string `json:"url_symbol"`
	BaseDecimals    int    `json:"base_decimals"`
	CounterDecimals int    `json:"counter_decimals"`
	MinimumOrder    string `json:"minimum_order"`
	Trading         string `json:"trading"`
	Description     string `json:"description"`
}

TradingPair holds trading pair information

type Transactions

type Transactions struct {
	Date    int64   `json:"date,string"`
	TradeID int64   `json:"tid,string"`
	Price   float64 `json:"price,string"`
	Type    int     `json:"type,string"`
	Amount  float64 `json:"amount,string"`
}

Transactions holds transaction data

type UnconfirmedBTCTransactions

type UnconfirmedBTCTransactions struct {
	Amount        float64 `json:"amount,string"`
	Address       string  `json:"address"`
	Confirmations int     `json:"confirmations"`
}

UnconfirmedBTCTransactions holds address information about unconfirmed transactions

type UserTransactions

type UserTransactions struct {
	Date          string  `json:"datetime"`
	TransactionID int64   `json:"id"`
	Type          int     `json:"type,string"`
	USD           float64 `json:"usd"`
	EUR           float64 `json:"eur"`
	BTC           float64 `json:"btc"`
	XRP           float64 `json:"xrp"`
	BTCUSD        float64 `json:"btc_usd"`
	Fee           float64 `json:"fee,string"`
	OrderID       int64   `json:"order_id"`
}

UserTransactions holds user transaction information

type WithdrawalRequests

type WithdrawalRequests struct {
	OrderID       int64   `json:"id"`
	Date          string  `json:"datetime"`
	Type          int     `json:"type"`
	Amount        float64 `json:"amount,string"`
	Status        int     `json:"status"`
	Data          interface{}
	Address       string `json:"address"`        // Bitcoin withdrawals only
	TransactionID string `json:"transaction_id"` // Bitcoin withdrawals only
}

WithdrawalRequests holds request information on withdrawals

Jump to

Keyboard shortcuts

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