exchange

package
v0.0.0-...-b8e8dbd Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2018 License: MIT Imports: 11 Imported by: 0

README

GoCryptoTrader package Exchanges

Build Status Software License GoDoc Coverage Status Go Report Card

This exchanges 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

Current Features for exchanges

  • This package is used to connect and query data from supported exchanges.
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

View Source
const (

	// WarningAuthenticatedRequestWithoutCredentialsSet error message for authenticated request without credentials set
	WarningAuthenticatedRequestWithoutCredentialsSet = "WARNING -- Exchange %s authenticated HTTP request called but not supported due to unset/default API keys."
	// ErrExchangeNotFound is a constant for an error message
	ErrExchangeNotFound = "Exchange not found in dataset."
	// DefaultHTTPTimeout is the default HTTP/HTTPS Timeout for exchange requests
	DefaultHTTPTimeout = time.Second * 15
)

Variables

This section is empty.

Functions

func CompareCurrencyPairFormats

func CompareCurrencyPairFormats(pair1 config.CurrencyPairFormatConfig, pair2 *config.CurrencyPairFormatConfig) bool

CompareCurrencyPairFormats checks and returns whether or not the two supplied config currency pairs match

func FormatCurrency

func FormatCurrency(p pair.CurrencyPair) string

FormatCurrency is a method that formats and returns a currency pair based on the user currency display preferences

func FormatExchangeCurrency

func FormatExchangeCurrency(exchName string, p pair.CurrencyPair) string

FormatExchangeCurrency is a method that formats and returns a currency pair based on the user currency display preferences

func GetAndFormatExchangeCurrencies

func GetAndFormatExchangeCurrencies(exchName string, pairs []pair.CurrencyPair) (string, error)

GetAndFormatExchangeCurrencies returns a string string containing the exchanges formatted currency pairs

func GetExchangeAssetTypes

func GetExchangeAssetTypes(exchName string) ([]string, error)

GetExchangeAssetTypes returns the asset types the exchange supports (SPOT, binary, futures)

func GetExchangeFormatCurrencySeperator

func GetExchangeFormatCurrencySeperator(exchName string) bool

GetExchangeFormatCurrencySeperator returns whether or not a specific exchange contains a separator used for API requests

Types

type AccountCurrencyInfo

type AccountCurrencyInfo struct {
	CurrencyName string
	TotalValue   float64
	Hold         float64
}

AccountCurrencyInfo is a sub type to store currency name and value

type AccountInfo

type AccountInfo struct {
	ExchangeName string
	Currencies   []AccountCurrencyInfo
}

AccountInfo is a Generic type to hold each exchange's holdings in all enabled currencies

type Base

type Base struct {
	Name                        string
	Enabled                     bool
	Verbose                     bool
	Websocket                   bool
	RESTPollingDelay            time.Duration
	AuthenticatedAPISupport     bool
	APISecret, APIKey, ClientID string
	Nonce                       nonce.Nonce
	TakerFee, MakerFee, Fee     float64
	BaseCurrencies              []string
	AvailablePairs              []string
	EnabledPairs                []string
	AssetTypes                  []string
	PairsLastUpdated            int64
	SupportsAutoPairUpdating    bool
	SupportsRESTTickerBatching  bool
	HTTPTimeout                 time.Duration
	WebsocketURL                string
	APIUrl                      string
	RequestCurrencyPairFormat   config.CurrencyPairFormatConfig
	ConfigCurrencyPairFormat    config.CurrencyPairFormatConfig
	*request.Requester
}

Base stores the individual exchange information

func (*Base) GetAuthenticatedAPISupport

func (e *Base) GetAuthenticatedAPISupport() bool

GetAuthenticatedAPISupport returns whether the exchange supports authenticated API requests

func (*Base) GetAvailableCurrencies

func (e *Base) GetAvailableCurrencies() []pair.CurrencyPair

GetAvailableCurrencies is a method that returns the available currency pairs of the exchange base

func (*Base) GetEnabledCurrencies

func (e *Base) GetEnabledCurrencies() []pair.CurrencyPair

GetEnabledCurrencies is a method that returns the enabled currency pairs of the exchange base

func (*Base) GetHTTPClient

func (e *Base) GetHTTPClient() *http.Client

GetHTTPClient gets the exchanges HTTP client

func (*Base) GetLastPairsUpdateTime

func (e *Base) GetLastPairsUpdateTime() int64

GetLastPairsUpdateTime returns the unix timestamp of when the exchanges currency pairs were last updated

func (*Base) GetName

func (e *Base) GetName() string

GetName is a method that returns the name of the exchange base

func (*Base) IsEnabled

func (e *Base) IsEnabled() bool

IsEnabled is a method that returns if the current exchange is enabled

func (*Base) SetAPIKeys

func (e *Base) SetAPIKeys(APIKey, APISecret, ClientID string, b64Decode bool)

SetAPIKeys is a method that sets the current API keys for the exchange

func (*Base) SetAssetTypes

func (e *Base) SetAssetTypes() error

SetAssetTypes checks the exchange asset types (whether it supports SPOT, Binary or Futures) and sets it to a default setting if it doesn't exist

func (*Base) SetAutoPairDefaults

func (e *Base) SetAutoPairDefaults() error

SetAutoPairDefaults sets the default values for whether or not the exchange supports auto pair updating or not

func (*Base) SetCurrencies

func (e *Base) SetCurrencies(pairs []pair.CurrencyPair, enabledPairs bool) error

SetCurrencies sets the exchange currency pairs for either enabledPairs or availablePairs

func (*Base) SetCurrencyPairFormat

func (e *Base) SetCurrencyPairFormat() error

SetCurrencyPairFormat checks the exchange request and config currency pair formats and sets it to a default setting if it doesn't exist

func (*Base) SetEnabled

func (e *Base) SetEnabled(enabled bool)

SetEnabled is a method that sets if the exchange is enabled

func (*Base) SetHTTPClient

func (e *Base) SetHTTPClient(h *http.Client)

SetHTTPClient sets exchanges HTTP client

func (*Base) SetHTTPClientTimeout

func (e *Base) SetHTTPClientTimeout(t time.Duration)

SetHTTPClientTimeout sets the timeout value for the exchanges HTTP Client

func (*Base) SupportsAutoPairUpdates

func (e *Base) SupportsAutoPairUpdates() bool

SupportsAutoPairUpdates returns whether or not the exchange supports auto currency pair updating

func (*Base) SupportsCurrency

func (e *Base) SupportsCurrency(p pair.CurrencyPair, enabledPairs bool) bool

SupportsCurrency returns true or not whether a currency pair exists in the exchange available currencies or not

func (*Base) SupportsRESTTickerBatchUpdates

func (e *Base) SupportsRESTTickerBatchUpdates() bool

SupportsRESTTickerBatchUpdates returns whether or not the exhange supports REST batch ticker fetching

func (*Base) UpdateCurrencies

func (e *Base) UpdateCurrencies(exchangeProducts []string, enabled, force bool) error

UpdateCurrencies updates the exchange currency pairs for either enabledPairs or availablePairs

type EnabledExchangeCurrencies

type EnabledExchangeCurrencies struct {
	ExchangeName   string         `json:"exchangeName"`
	ExchangeValues []ticker.Price `json:"exchangeValues"`
}

EnabledExchangeCurrencies is a sub type for singular exchanges and respective currencies

type IBotExchange

type IBotExchange interface {
	Setup(exch config.ExchangeConfig)
	Start(wg *sync.WaitGroup)
	SetDefaults()
	GetName() string
	IsEnabled() bool
	SetEnabled(bool)
	GetTickerPrice(currency pair.CurrencyPair, assetType string) (ticker.Price, error)
	UpdateTicker(currency pair.CurrencyPair, assetType string) (ticker.Price, error)
	GetOrderbookEx(currency pair.CurrencyPair, assetType string) (orderbook.Base, error)
	UpdateOrderbook(currency pair.CurrencyPair, assetType string) (orderbook.Base, error)
	GetEnabledCurrencies() []pair.CurrencyPair
	GetAvailableCurrencies() []pair.CurrencyPair
	GetExchangeAccountInfo() (AccountInfo, error)
	GetAuthenticatedAPISupport() bool
	SetCurrencies(pairs []pair.CurrencyPair, enabledPairs bool) error
	GetExchangeHistory(pair.CurrencyPair, string) ([]TradeHistory, error)
	SupportsAutoPairUpdates() bool
	GetLastPairsUpdateTime() int64
	SupportsRESTTickerBatchUpdates() bool

	SubmitExchangeOrder(p pair.CurrencyPair, side string, orderType int, amount, price float64) (int64, error)
	ModifyExchangeOrder(p pair.CurrencyPair, orderID, action int64) (int64, error)
	CancelExchangeOrder(p pair.CurrencyPair, orderID int64) (int64, error)
	CancelAllExchangeOrders(p pair.CurrencyPair) error
	GetExchangeOrderInfo(orderID int64) (float64, error)
	GetExchangeDepositAddress(p pair.CurrencyPair) (string, error)
	WithdrawExchangeFunds(address string, p pair.CurrencyPair, amount float64) (string, error)
}

IBotExchange enforces standard functions for all exchanges supported in GoCryptoTrader

type TradeHistory

type TradeHistory struct {
	Timestamp int64
	TID       int64
	Price     float64
	Amount    float64
	Exchange  string
	Type      string
}

TradeHistory holds exchange history data

Directories

Path Synopsis
Package ticker is a generated protocol buffer package.
Package ticker is a generated protocol buffer package.

Jump to

Keyboard shortcuts

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