alphapoint

package
v0.0.0-...-a0d82f2 Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2024 License: MIT Imports: 30 Imported by: 0

README

GoCryptoTrader package Alphapoint

Build Status Software License GoDoc Coverage Status Go Report Card

This alphapoint 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 our GoCryptoTrader Kanban board.

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

Alphapoint Exchange

How to enable
  • Not currently configurable
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

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountInfo

type AccountInfo struct {
	Currencies []struct {
		Name    string `json:"name"`
		Balance int    `json:"balance"`
		Hold    int    `json:"hold"`
	} `json:"currencies"`
	ProductPairs []struct {
		ProductPairName string `json:"productPairName"`
		ProductPairCode int    `json:"productPairCode"`
		TradeCount      int    `json:"tradeCount"`
		TradeVolume     int    `json:"tradeVolume"`
	} `json:"productPairs"`
	IsAccepted   bool   `json:"isAccepted"`
	RejectReason string `json:"rejectReason"`
}

AccountInfo holds your current account information like balances, trade count and volume

type Alphapoint

type Alphapoint struct {
	exchange.Base
	WebsocketConn *websocket.Conn
}

Alphapoint is the overarching type across the alphapoint package

func (*Alphapoint) CancelAllExistingOrders

func (a *Alphapoint) CancelAllExistingOrders(ctx context.Context, omsid string) error

CancelAllExistingOrders cancels all open orders by symbol. symbol - Instrument code (ex: “BTCUSD”)

func (*Alphapoint) CancelAllOrders

func (a *Alphapoint) CancelAllOrders(ctx context.Context, orderCancellation *order.Cancel) (order.CancelAllResponse, error)

CancelAllOrders cancels all orders for a given account

func (*Alphapoint) CancelBatchOrders

func (a *Alphapoint) CancelBatchOrders(_ context.Context, _ []order.Cancel) (*order.CancelBatchResponse, error)

CancelBatchOrders cancels an orders by their corresponding ID numbers

func (*Alphapoint) CancelExistingOrder

func (a *Alphapoint) CancelExistingOrder(ctx context.Context, orderID int64, omsid string) (int64, error)

CancelExistingOrder cancels an order that has not been executed. symbol - Instrument code (ex: “BTCUSD”) OrderID - Order id (ex: 1000)

func (*Alphapoint) CancelOrder

func (a *Alphapoint) CancelOrder(ctx context.Context, o *order.Cancel) error

CancelOrder cancels an order by its corresponding ID number

func (*Alphapoint) CreateAccount

func (a *Alphapoint) CreateAccount(ctx context.Context, firstName, lastName, email, phone, password string) error

CreateAccount creates a new account on alphapoint FirstName - First name LastName - Last name Email - Email address Phone - Phone number (ex: “+12223334444”) Password - Minimum 8 characters

func (*Alphapoint) CreateOrder

func (a *Alphapoint) CreateOrder(ctx context.Context, symbol, side, orderType string, quantity, price float64) (int64, error)

CreateOrder creates a market or limit order symbol - Instrument code (ex: “BTCUSD”) side - “buy” or “sell” orderType - “1” for market orders, “0” for limit orders quantity - Quantity price - Price in USD

func (*Alphapoint) FetchAccountInfo

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

FetchAccountInfo retrieves balances for all enabled currencies on the Alphapoint exchange

func (*Alphapoint) FetchOrderbook

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

FetchOrderbook returns the orderbook for a currency pair

func (*Alphapoint) FetchTicker

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

FetchTicker returns the ticker for a currency pair

func (*Alphapoint) FetchTradablePairs

func (a *Alphapoint) FetchTradablePairs(_ context.Context, _ asset.Item) (currency.Pairs, error)

FetchTradablePairs returns a list of the exchanges tradable pairs

func (*Alphapoint) GetAccountFundingHistory

func (a *Alphapoint) GetAccountFundingHistory(_ context.Context) ([]exchange.FundingHistory, error)

GetAccountFundingHistory returns funding history, deposits and withdrawals

func (*Alphapoint) GetAccountInformation

func (a *Alphapoint) GetAccountInformation(ctx context.Context) (AccountInfo, error)

GetAccountInformation returns account info

func (*Alphapoint) GetAccountTrades

func (a *Alphapoint) GetAccountTrades(ctx context.Context, currencyPair string, startIndex, count int) (Trades, error)

GetAccountTrades returns the trades executed on the account. CurrencyPair - Instrument code (ex: “BTCUSD”) StartIndex - Starting index, if less than 0 then start from the beginning Count - Returns last trade, (Default: 30)

func (*Alphapoint) GetActiveOrders

func (a *Alphapoint) GetActiveOrders(ctx context.Context, req *order.MultiOrderRequest) (order.FilteredOrders, error)

GetActiveOrders retrieves any orders that are active/open This function is not concurrency safe due to orderSide/orderType maps

func (*Alphapoint) GetDepositAddress

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

GetDepositAddress returns a deposit address for a specified currency

func (*Alphapoint) GetDepositAddresses

func (a *Alphapoint) GetDepositAddresses(ctx context.Context) ([]DepositAddresses, error)

GetDepositAddresses generates a deposit address

func (*Alphapoint) GetFeeByType

func (a *Alphapoint) GetFeeByType(_ context.Context, _ *exchange.FeeBuilder) (float64, error)

GetFeeByType returns an estimate of fee based on type of transaction

func (*Alphapoint) GetFuturesContractDetails

func (a *Alphapoint) GetFuturesContractDetails(context.Context, asset.Item) ([]futures.Contract, error)

GetFuturesContractDetails returns all contracts from the exchange by asset type

func (*Alphapoint) GetHistoricCandles

func (a *Alphapoint) GetHistoricCandles(_ context.Context, _ currency.Pair, _ asset.Item, _ kline.Interval, _, _ time.Time) (*kline.Item, error)

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

func (*Alphapoint) GetHistoricCandlesExtended

func (a *Alphapoint) GetHistoricCandlesExtended(_ context.Context, _ currency.Pair, _ asset.Item, _ kline.Interval, _, _ time.Time) (*kline.Item, error)

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

func (*Alphapoint) GetHistoricTrades

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

GetHistoricTrades returns historic trade data within the timeframe provided

func (*Alphapoint) GetLatestFundingRates

GetLatestFundingRates returns the latest funding rates data

func (*Alphapoint) GetOrderFee

func (a *Alphapoint) GetOrderFee(ctx context.Context, symbol, side string, quantity, price float64) (float64, error)

GetOrderFee returns a fee associated with an order symbol - Instrument code (ex: “BTCUSD”) side - “buy” or “sell” quantity - Quantity price - Price in USD

func (*Alphapoint) GetOrderHistory

func (a *Alphapoint) GetOrderHistory(ctx context.Context, req *order.MultiOrderRequest) (order.FilteredOrders, error)

GetOrderHistory retrieves account order information Can Limit response to specific order status This function is not concurrency safe due to orderSide/orderType maps

func (*Alphapoint) GetOrderInfo

func (a *Alphapoint) GetOrderInfo(_ context.Context, _ string, _ currency.Pair, _ asset.Item) (*order.Detail, error)

GetOrderInfo returns order information based on order ID

func (*Alphapoint) GetOrderbook

func (a *Alphapoint) GetOrderbook(ctx context.Context, currencyPair string) (Orderbook, error)

GetOrderbook fetches the current orderbook for a given currency pair CurrencyPair - trade pair (ex: “BTCUSD”)

func (*Alphapoint) GetOrders

func (a *Alphapoint) GetOrders(ctx context.Context) ([]OpenOrders, error)

GetOrders returns all current open orders

func (*Alphapoint) GetProductPairs

func (a *Alphapoint) GetProductPairs(ctx context.Context) (ProductPairs, error)

GetProductPairs gets the currency pairs currently traded on alphapoint

func (*Alphapoint) GetProducts

func (a *Alphapoint) GetProducts(ctx context.Context) (Products, error)

GetProducts gets the currency products currently supported on alphapoint

func (*Alphapoint) GetRecentTrades

func (a *Alphapoint) GetRecentTrades(_ context.Context, _ currency.Pair, _ asset.Item) ([]trade.Data, error)

GetRecentTrades returns the most recent trades for a currency and asset

func (*Alphapoint) GetServerTime

func (a *Alphapoint) GetServerTime(_ context.Context, _ asset.Item) (time.Time, error)

GetServerTime returns the current exchange server time.

func (*Alphapoint) GetTicker

func (a *Alphapoint) GetTicker(ctx context.Context, currencyPair string) (Ticker, error)

GetTicker returns current ticker information from Alphapoint for a selected currency pair ie "BTCUSD"

func (*Alphapoint) GetTrades

func (a *Alphapoint) GetTrades(ctx context.Context, currencyPair string, startIndex, count int) (Trades, error)

GetTrades fetches past trades for the given currency pair currencyPair: ie "BTCUSD" StartIndex: specifies the index to begin from, -1 being the first trade on AlphaPoint Exchange. To begin from the most recent trade, set startIndex to 0 (default: 0) Count: specifies the number of trades to return (default: 10)

func (*Alphapoint) GetTradesByDate

func (a *Alphapoint) GetTradesByDate(ctx context.Context, currencyPair string, startDate, endDate int64) (Trades, error)

GetTradesByDate gets trades by date CurrencyPair - instrument code (ex: “BTCUSD”) StartDate - specifies the starting time in epoch time, type is long EndDate - specifies the end time in epoch time, type is long

func (*Alphapoint) GetUserInfo

func (a *Alphapoint) GetUserInfo(ctx context.Context) (UserInfo, error)

GetUserInfo returns current account user information

func (*Alphapoint) GetWithdrawalsHistory

func (a *Alphapoint) GetWithdrawalsHistory(_ context.Context, _ currency.Code, _ asset.Item) ([]exchange.WithdrawalHistory, error)

GetWithdrawalsHistory returns previous withdrawals data

func (*Alphapoint) ModifyExistingOrder

func (a *Alphapoint) ModifyExistingOrder(ctx context.Context, symbol string, orderID, action int64) (int64, error)

ModifyExistingOrder modifies and existing Order OrderID - tracked order id number symbol - Instrument code (ex: “BTCUSD”) modifyAction - “0” or “1” “0” means "Move to top", which will modify the order price to the top of the book. A buy order will be modified to the highest bid and a sell order will be modified to the lowest ask price. “1” means "Execute now", which will convert a limit order into a market order.

func (*Alphapoint) ModifyOrder

func (a *Alphapoint) ModifyOrder(_ context.Context, _ *order.Modify) (*order.ModifyResponse, error)

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

func (*Alphapoint) SendAuthenticatedHTTPRequest

func (a *Alphapoint) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.URL, method, path string, data map[string]interface{}, result interface{}) error

SendAuthenticatedHTTPRequest sends an authenticated request

func (*Alphapoint) SendHTTPRequest

func (a *Alphapoint) SendHTTPRequest(_ context.Context, ep exchange.URL, method, path string, data map[string]interface{}, result interface{}) error

SendHTTPRequest sends an unauthenticated HTTP request

func (*Alphapoint) SetDefaults

func (a *Alphapoint) SetDefaults()

SetDefaults sets current default settings

func (*Alphapoint) SetUserInfo

func (a *Alphapoint) SetUserInfo(ctx context.Context, firstName, lastName, cell2FACountryCode, cell2FAValue string, useAuthy2FA, use2FAForWithdraw bool) (UserInfoSet, error)

SetUserInfo changes user name and/or 2FA settings userInfoKVP - An array of key value pairs FirstName - First name LastName - Last name UseAuthy2FA - “true” or “false” toggle Authy app Cell2FACountryCode - Cell country code (ex: 1), required for Authentication Cell2FAValue - Cell phone number, required for Authentication Use2FAForWithdraw - “true” or “false” set to true for using 2FA for withdrawals

func (*Alphapoint) Setup

func (a *Alphapoint) Setup(_ *config.Exchange) error

Setup takes in the supplied exchange configuration details and sets params

func (*Alphapoint) SubmitOrder

func (a *Alphapoint) SubmitOrder(ctx context.Context, s *order.Submit) (*order.SubmitResponse, error)

SubmitOrder submits a new order and returns a true value when successfully submitted

func (*Alphapoint) UpdateAccountInfo

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

UpdateAccountInfo retrieves balances for all enabled currencies on the Alphapoint exchange

func (*Alphapoint) UpdateOrderExecutionLimits

func (a *Alphapoint) UpdateOrderExecutionLimits(_ context.Context, _ asset.Item) error

UpdateOrderExecutionLimits updates order execution limits

func (*Alphapoint) UpdateOrderbook

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

UpdateOrderbook updates and returns the orderbook for a currency pair

func (*Alphapoint) UpdateTicker

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

UpdateTicker updates and returns the ticker for a currency pair

func (*Alphapoint) UpdateTickers

func (a *Alphapoint) UpdateTickers(_ context.Context, _ asset.Item) error

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

func (*Alphapoint) UpdateTradablePairs

func (a *Alphapoint) UpdateTradablePairs(_ context.Context, _ bool) error

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

func (*Alphapoint) ValidateAPICredentials

func (a *Alphapoint) ValidateAPICredentials(ctx context.Context, assetType asset.Item) error

ValidateAPICredentials validates current credentials used for wrapper functionality

func (*Alphapoint) WebsocketClient

func (a *Alphapoint) WebsocketClient()

WebsocketClient starts a new webstocket connection

func (*Alphapoint) WithdrawCoins

func (a *Alphapoint) WithdrawCoins(ctx context.Context, symbol, product, address string, amount float64) error

WithdrawCoins withdraws a coin to a specific address symbol - Instrument name (ex: “BTCUSD”) product - Currency name (ex: “BTC”) amount - Amount (ex: “.011”) address - Withdraw address

func (*Alphapoint) WithdrawCryptocurrencyFunds

func (a *Alphapoint) WithdrawCryptocurrencyFunds(_ context.Context, _ *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted

func (*Alphapoint) WithdrawFiatFunds

func (a *Alphapoint) WithdrawFiatFunds(_ context.Context, _ *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFunds returns a withdrawal ID when a withdrawal is submitted

func (*Alphapoint) WithdrawFiatFundsToInternationalBank

func (a *Alphapoint) WithdrawFiatFundsToInternationalBank(_ context.Context, _ *withdraw.Request) (*withdraw.ExchangeResponse, error)

WithdrawFiatFundsToInternationalBank returns a withdrawal ID when a withdrawal is submitted

type DepositAddresses

type DepositAddresses struct {
	Name           string `json:"name"`
	DepositAddress string `json:"depositAddress"`
}

DepositAddresses holds information about the generated deposit address for a specific currency

type OpenOrders

type OpenOrders struct {
	Instrument string  `json:"ins"`
	OpenOrders []Order `json:"openOrders"`
}

OpenOrders holds the full range of orders by instrument

type Order

type Order struct {
	ServerOrderID int     `json:"ServerOrderId"`
	AccountID     int     `json:"AccountId"`
	Price         float64 `json:"Price"`
	QtyTotal      float64 `json:"QtyTotal"`
	QtyRemaining  float64 `json:"QtyRemaining"`
	ReceiveTime   int64   `json:"ReceiveTime"`
	Side          int64   `json:"Side"`
	State         int     `json:"orderState"`
	OrderType     int     `json:"orderType"`
}

Order is a generalised order type

type OrderInfo

type OrderInfo struct {
	OpenOrders   []OpenOrders `json:"openOrdersInfo"`
	IsAccepted   bool         `json:"isAccepted"`
	DateTimeUTC  int64        `json:"dateTimeUtc"`
	RejectReason string       `json:"rejectReason"`
}

OrderInfo holds all open orders across the entire range of all instruments

type Orderbook

type Orderbook struct {
	Bids         []OrderbookEntry `json:"bids"`
	Asks         []OrderbookEntry `json:"asks"`
	IsAccepted   bool             `json:"isAccepted"`
	RejectReason string           `json:"rejectReason"`
}

Orderbook holds the total Bids and Asks on the exchange

type OrderbookEntry

type OrderbookEntry struct {
	Quantity float64 `json:"qty"`
	Price    float64 `json:"px"`
}

OrderbookEntry is a sub-type that takes has the individual quantity and price

type Product

type Product struct {
	Name          string `json:"name"`
	IsDigital     bool   `json:"isDigital"`
	ProductCode   int    `json:"productCode"`
	DecimalPlaces int    `json:"decimalPlaces"`
	FullName      string `json:"fullName"`
}

Product holds the a single currency product that is supported

type ProductPair

type ProductPair struct {
	Name                  string `json:"name"`
	Productpaircode       int    `json:"productPairCode"`
	Product1Label         string `json:"product1Label"`
	Product1Decimalplaces int    `json:"product1DecimalPlaces"`
	Product2Label         string `json:"product2Label"`
	Product2Decimalplaces int    `json:"product2DecimalPlaces"`
}

ProductPair holds the individual product pairs that are currently traded

type ProductPairs

type ProductPairs struct {
	ProductPairs []ProductPair `json:"productPairs"`
	IsAccepted   bool          `json:"isAccepted"`
	RejectReason string        `json:"rejectReason"`
}

ProductPairs holds the full range of product pairs that the exchange can trade between

type Products

type Products struct {
	Products     []Product `json:"products"`
	IsAccepted   bool      `json:"isAccepted"`
	RejectReason string    `json:"rejectReason"`
}

Products holds the full range of supported currency products

type Response

type Response struct {
	IsAccepted    bool    `json:"isAccepted"`
	RejectReason  string  `json:"rejectReason"`
	Fee           float64 `json:"fee"`
	FeeProduct    string  `json:"feeProduct"`
	CancelOrderID int64   `json:"cancelOrderId"`
	ServerOrderID int64   `json:"serverOrderId"`
	DateTimeUTC   float64 `json:"dateTimeUtc"`
	ModifyOrderID int64   `json:"modifyOrderId"`
	Addresses     []DepositAddresses
}

Response contains general responses from the exchange

type Ticker

type Ticker struct {
	High               float64 `json:"high"`
	Last               float64 `json:"last"`
	Bid                float64 `json:"bid"`
	Volume             float64 `json:"volume"`
	Low                float64 `json:"low"`
	Ask                float64 `json:"ask"`
	Total24HrQtyTraded float64 `json:"Total24HrQtyTraded"`
	Total24HrNumTrades float64 `json:"Total24HrNumTrades"`
	SellOrderCount     float64 `json:"sellOrderCount"`
	BuyOrderCount      float64 `json:"buyOrderCount"`
	NumOfCreateOrders  float64 `json:"numOfCreateOrders"`
	IsAccepted         bool    `json:"isAccepted"`
	RejectReason       string  `json:"rejectReason"`
}

Ticker holds ticker information

type Trade

type Trade struct {
	TID                   int64   `json:"tid"`
	Price                 float64 `json:"px"`
	Quantity              float64 `json:"qty"`
	Unixtime              int     `json:"unixtime"`
	UTCTicks              int64   `json:"utcticks"`
	IncomingOrderSide     int     `json:"incomingOrderSide"`
	IncomingServerOrderID int     `json:"incomingServerOrderId"`
	BookServerOrderID     int     `json:"bookServerOrderId"`
}

Trade is a sub-type which holds the singular trade that occurred in the past

type Trades

type Trades struct {
	IsAccepted   bool    `json:"isAccepted"`
	RejectReason string  `json:"rejectReason"`
	DateTimeUTC  int64   `json:"dateTimeUtc"`
	Instrument   string  `json:"ins"`
	StartIndex   int     `json:"startIndex"`
	Count        int     `json:"count"`
	StartDate    int64   `json:"startDate"`
	EndDate      int64   `json:"endDate"`
	Trades       []Trade `json:"trades"`
}

Trades holds trade information

type UserInfo

type UserInfo struct {
	UserInforKVPs []UserInfoKVP `json:"userInfoKVP"`
	IsAccepted    bool          `json:"isAccepted"`
	RejectReason  string        `json:"rejectReason"`
}

UserInfo holds current user information associated with the apiKey details

type UserInfoKVP

type UserInfoKVP struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

UserInfoKVP is a sub-type that holds key value pairs

type UserInfoSet

type UserInfoSet struct {
	IsAccepted        string `json:"isAccepted"`
	RejectReason      string `json:"rejectReason"`
	RequireAuthy2FA   bool   `json:"requireAuthy2FA"`
	Val2FaRequestCode string `json:"val2FaRequestCode"`
}

UserInfoSet is the returned response from set user information request

type WebsocketTicker

type WebsocketTicker struct {
	MessageType             string  `json:"messageType"`
	ProductPair             string  `json:"prodPair"`
	High                    float64 `json:"high"`
	Low                     float64 `json:"low"`
	Last                    float64 `json:"last"`
	Volume                  float64 `json:"volume"`
	Volume24Hrs             float64 `json:"volume24hrs"`
	Volume24HrsProduct2     float64 `json:"volume24hrsProduct2"`
	Total24HrQtyTraded      float64 `json:"Total24HrQtyTraded"`
	Total24HrProduct2Traded float64 `json:"Total24HrProduct2Traded"`
	Total24HrNumTrades      float64 `json:"Total24HrNumTrades"`
	Bid                     float64 `json:"bid"`
	Ask                     float64 `json:"ask"`
	BuyOrderCount           int     `json:"buyOrderCount"`
	SellOrderCount          int     `json:"sellOrderCount"`
}

WebsocketTicker holds current up to date ticker information

Jump to

Keyboard shortcuts

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