finam

package module
v0.0.0-...-36a041c Latest Latest
Warning

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

Go to latest
Published: Apr 5, 2024 License: MIT Imports: 9 Imported by: 0

README

Библиотека, которая позволяет работать с функционалом Finam Trade API через REST IP брокера Финам из GO

REST-клиент для API Finam брокера Финам на GO

иницилизация go mod init github.com/Ruvad39/go-finam-rest

go run cmd/main.go

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	UserAgent string // если проставлен, пропишем User agent в http запросе

	Logger *slog.Logger
	// contains filtered or unexported fields
}

func NewClient

func NewClient(token, clientId string, opts ...ClientOption) (*Client, error)

создание клиента

func (*Client) AccessTokens

func (client *Client) AccessTokens(ctx context.Context) (ok bool, err error)

https://trade-api.finam.ru/public/api/v1/access-tokens/check проверка токена

func (*Client) GetCandles

func (client *Client) GetCandles(ctx context.Context,
	board string,
	symbol string,
	timeFrame TimeFrame,
	from string,
	to string,

) ([]Candle, error)

func (*Client) GetHttp

func (client *Client) GetHttp(ctx context.Context, httpMethod string, url string, body interface{}) ([]byte, error)

выполним запрос (вернем []byte)

func (*Client) GetPortfolio

func (client *Client) GetPortfolio(ctx context.Context, opts ...Option) (Portfolio, error)

func (*Client) GetSecurity

func (client *Client) GetSecurity(ctx context.Context, board string, seccode string) (Securities, error)

func (*Client) RequestHttp

func (client *Client) RequestHttp(ctx context.Context, httpMethod string, url string, body interface{}) (*http.Response, error)

выполним запрос (вернем http.Response)

func (*Client) Version

func (c *Client) Version() string

вернем текущую версию

type ClientOption

type ClientOption func(c *Client)

func WithClientId

func WithClientId(id string) ClientOption

func WithGttpClient

func WithGttpClient(client HttpDoer) ClientOption

установим свой HttpClient по умолчанию стоит http.DefaultClient

func WithLogger

func WithLogger(logger *slog.Logger) ClientOption

WithLogger задает логгер По умолчанию логирование включено на ошибки

type HttpDoer

type HttpDoer interface {
	Do(*http.Request) (*http.Response, error)
}

type IFinamClient

type IFinamClient interface {
	// проверка подлинности токена
	AccessTokens(ctx context.Context) (ok bool, err error)

	// Посмотреть портфель
	GetPortfolio(ctx context.Context, opts ...Option) (Portfolio, error)

	// список инструментов (Максимальное Количество запросов в минуту = 1 )
	GetSecurity(ctx context.Context, board string, seccode string) (Securities, error)
}

какой api реализован

type Money

type Money struct {
	Market   string  `json:"market"`   // рынок. Тип Market;
	Currency string  `json:"currency"` //  код валюты;
	Balance  float64 `json:"balance"`  // текущая позиция.

}

денежные позиции

type Option

type Option func(o *Options)

func WithIncludeCurrencies

func WithIncludeCurrencies(param bool) Option

func WithIncludeMaxBuySell

func WithIncludeMaxBuySell(param bool) Option

func WithIncludeMoney

func WithIncludeMoney(param bool) Option

type Options

type Options struct {
	IncludeCurrencies bool // запросить информацию по валютам портфеля;
	IncludeMoney      bool // запросить информацию по денежным позициям портфеля;
	IncludePositions  bool // запросить информацию по позициям портфеля;
	IncludeMaxBuySell bool // запросить информацию о максимальном доступном объеме на покупку/продажу.
}

func NewOptions

func NewOptions() *Options

type Portfolio

type Portfolio struct {
	ClientId   string     `json:"clientId"`   // торговый код клиента;
	Equity     float64    `json:"equity"`     // текущая оценка портфеля;
	Balance    float64    `json:"balance"`    // входящая оценка стоимости портфеля;
	Positions  []Position `json:"positions"`  // позиции портфеля
	Currencies []Сurrency `json:"currencies"` //  валюта портфеля
	Money      []Money    `json:"money"`      // денежные позиции

}

структура Портфеля

type Position

type Position struct {
	SecurityCode         string  `json:"securityCode"`      // код инструмента
	Market               string  `json:"market"`            //  рынок инструмента. Тип Market;
	Balance              float64 `json:"balance"`           // текущая позиция;
	CurrentPrice         float64 `json:"currentPrice"`      // текущая цена в валюте инструмента;
	Equity               float64 `json:"equity"`            //  текущая оценка инструмента;
	AveragePrice         float64 `json:"averagePrice"`      // средняя цена;
	Currency             string  `json:"currency"`          // код валюты риска;
	AccumulatedProfit    float64 `json:"accumulatedProfit"` // прибыль/убыток по входящим;
	TodayProfit          float64 `json:"todayProfit"`       // прибыль/убыток по сделкам;
	UnrealizedProfit     float64 `json:"unrealizedProfit"`  //  нереализованная прибыль/убыток;
	Profit               float64 `json:"profit"`            //  прибыль/убыток;
	MaxBuy               float64 `json:"maxBuy"`            //  максимально возможное количество лотов на покупку/продажу (вычисляется, если указать флаг includeMaxBuySell в true, иначе значение будет равно 0);
	MaxSell              float64 `json:"maxSell"`
	PriceCurrency        string  `json:"priceCurrency"`        // priceCurrency
	AverageRate          float64 `json:"averageRate"`          // код валюты балансовой цены;
	AveragePriceCurrency string  `json:"averagePriceCurrency"` // кросс-курс валюты балансовой цены к валюте риска.

}

позиции портфеля

type ResponseError

type ResponseError struct {
	Code    string `json:"code"`
	Message string `json:"message"`
	Data    string `json:"data"`
}

структура ощибки

type Securities

type Securities []Security //`json:"securities"`

список инструментов

type Security

type Security struct {
	Code       string  `json:"code"`       // код инструмента;
	Board      string  `json:"board"`      // основной режим торгов инструмента;
	Market     string  `json:"market"`     // рынок инструмента. Тип Market;
	ShortName  string  `json:"shortName"`  // название инструмента;
	Ticker     string  `json:"ticker"`     //  тикер инструмента на биржевой площадке листинга;
	Decimals   int     `json:"decimals"`   // количество знаков в дробной части цены;
	LotSize    int     `json:"lotSize"`    //  размер лота;
	MinStep    float32 `json:"minStep"`    // минимальный шаг цены;
	Currency   string  `json:"currency"`   // код валюты номинала цены;
	Properties int     `json:"properties"` // параметры инструмента. Значение представлено в виде битовой маски:

	TimeZoneName    string  `json:"timeZoneName"`    // имя таймзоны;
	BpCost          float64 `json:"bpCost"`          //  стоимость пункта цены одного инструмента (не лота), без учета НКД;
	AccruedInterest float64 `json:"accruedInterest"` // текущий НКД;
	PriceSign       string  `json:"priceSign"`       // допустимая цена инструмента. Принимает следующие значения:
	LotDivider      int     `json:"lotDivider"`      // коэффициент дробления ценной бумаги в одном стандартном лоте.
}

Инструменты

type Сurrency

type Сurrency struct {
	Name             string  `json:"name"`             // код валюты;
	Equity           float64 `json:"equity"`           // оценка позиции;
	Balance          float64 `json:"balance"`          // текущая позиция;
	CrossRate        float64 `json:"crossRate"`        // курс валюты;
	UnrealizedProfit float64 `json:"unrealizedProfit"` // нереализованная прибыль/убыток.

}

валюта портфеля

Directories

Path Synopsis
example

Jump to

Keyboard shortcuts

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