Documentation ¶
Index ¶
- Constants
- Variables
- func IsActiveOrder(o Order) bool
- func SetLogger(logger *slog.Logger)
- type APIError
- type Candle
- type CandleCloseFunc
- type Client
- func (c *Client) BuyLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error)
- func (c *Client) BuyMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error)
- func (c *Client) CancelOrder(ctx context.Context, portfolio, orderId string) (bool, error)
- func (c *Client) GetCandles(ctx context.Context, symbol string, interval Interval, from, to int64) ([]Candle, error)
- func (c *Client) GetHistory(ctx context.Context, symbol string, interval Interval, from, to int64) (History, error)
- func (c *Client) GetJWT() (string, error)
- func (c *Client) GetLoginPositions(ctx context.Context, login string) ([]Position, error)
- func (c *Client) GetOrder(ctx context.Context, portfolio, orderId string) (Order, error)
- func (c *Client) GetOrderBooks(ctx context.Context, symbol string) (OrderBook, error)
- func (c *Client) GetOrders(ctx context.Context, portfolio string) ([]Order, error)
- func (c *Client) GetPortfolio(ctx context.Context, portfolio string) (Portfolio, error)
- func (c *Client) GetPortfolioFortsRisk(ctx context.Context, portfolio string) (PortfolioFortsRisk, error)
- func (c *Client) GetPortfolioID(board string) string
- func (c *Client) GetPortfolioRisk(ctx context.Context, portfolio string) (PortfolioRisk, error)
- func (c *Client) GetPosition(ctx context.Context, portfolio, symbol string) (Position, bool, error)
- func (c *Client) GetPositions(ctx context.Context, portfolio string) ([]Position, error)
- func (c *Client) GetQuote(ctx context.Context, symbol string) (Quote, error)
- func (c *Client) GetQuotes(ctx context.Context, symbols string) ([]Quote, error)
- func (c *Client) GetSecurities(ctx context.Context, opts ...Option) ([]Security, error)
- func (c *Client) GetSecurity(ctx context.Context, board, symbol string) (Security, bool, error)
- func (c *Client) GetTime(ctx context.Context) (time.Time, error)
- func (c *Client) NewCreateOrderService() *CreateOrderService
- func (c *Client) NewCreateOrderStopService() *CreateOrderStopService
- func (c *Client) NewWsService(wsRequest IwsRequest) *WsService
- func (c *Client) SellLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error)
- func (c *Client) SellMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error)
- func (c *Client) SetFortsPortfolio(portfolio string)
- func (c *Client) SetFxAPortfolio(portfolio string)
- func (c *Client) SetLogDebug(debug bool)
- func (c *Client) SetPortfolioID(portfolio string)
- func (c *Client) SetStockPortfolio(portfolio string)
- func (c *Client) SubscribeCandles(ctx context.Context, symbol string, interval Interval, opts ...WSRequestOption) error
- func (c *Client) SubscribeOrders(ctx context.Context, portfolio string, opts ...WSRequestOption) error
- func (c *Client) SubscribeQuotes(ctx context.Context, symbol string, opts ...WSRequestOption) error
- func (c *Client) Version() string
- type ConditionType
- type CreateOrderService
- func (s *CreateOrderService) Board(board string) *CreateOrderService
- func (s *CreateOrderService) Comment(comment string) *CreateOrderService
- func (s *CreateOrderService) Do(ctx context.Context) (string, error)
- func (s *CreateOrderService) OrderType(orderType OrderType) *CreateOrderService
- func (s *CreateOrderService) Portfolio(portfolio string) *CreateOrderService
- func (s *CreateOrderService) Price(price float64) *CreateOrderService
- func (s *CreateOrderService) Qty(quantity int32) *CreateOrderService
- func (s *CreateOrderService) Side(side SideType) *CreateOrderService
- func (s *CreateOrderService) Symbol(symbol string) *CreateOrderService
- func (s *CreateOrderService) TimeInForce(timeInForce TimeInForce) *CreateOrderService
- type CreateOrderStopService
- func (s *CreateOrderStopService) Activate(activate bool) *CreateOrderStopService
- func (s *CreateOrderStopService) Board(board string) *CreateOrderStopService
- func (s *CreateOrderStopService) Condition(condition ConditionType) *CreateOrderStopService
- func (s *CreateOrderStopService) Do(ctx context.Context) (string, error)
- func (s *CreateOrderStopService) OrderType(orderType OrderType) *CreateOrderStopService
- func (s *CreateOrderStopService) Portfolio(portfolio string) *CreateOrderStopService
- func (s *CreateOrderStopService) Price(price float64) *CreateOrderStopService
- func (s *CreateOrderStopService) Qty(quantity int32) *CreateOrderStopService
- func (s *CreateOrderStopService) Side(side SideType) *CreateOrderStopService
- func (s *CreateOrderStopService) Symbol(symbol string) *CreateOrderStopService
- func (s *CreateOrderStopService) TimeInForce(timeInForce TimeInForce) *CreateOrderStopService
- func (s *CreateOrderStopService) TriggerPrice(price float64) *CreateOrderStopService
- type History
- type IAlorClient
- type Instrument
- type Interval
- type IwsRequest
- type JSResp
- type Option
- type Options
- type Order
- type OrderBook
- type OrderFunc
- type OrderRequest
- type OrderResponse
- type OrderStatus
- type OrderStopRequest
- type OrderType
- type Portfolio
- type PortfolioFortsRisk
- type PortfolioRisk
- type Position
- type PriceVolume
- type PriceVolumeSlice
- type Quote
- type QuoteFunc
- type RequestOption
- type Security
- type SideType
- type Stream
- type TimeInForce
- type Trade
- type User
- type WSRequestBase
- func (r *WSRequestBase) GetCode() string
- func (r *WSRequestBase) GetGuid() string
- func (r *WSRequestBase) GetInterval() Interval
- func (r *WSRequestBase) GetOpCode() string
- func (r *WSRequestBase) Marshal() ([]byte, error)
- func (r *WSRequestBase) SetExchange(exchange string)
- func (r *WSRequestBase) SetToken(token string)
- type WSRequestOption
- type WSResponse
- type WsMessage
- type WsService
Constants ¶
const (
OnCandleSubscribe = "BarsGetAndSubscribe" // Подписка на историю цен (свечи)
)
Variables ¶
var ErrNotFound = errors.New("404 Not Found")
var TzMsk = initMoscow()
Functions ¶
func IsActiveOrder ¶
Types ¶
type APIError ¶
type APIError struct { Code string `json:"code"` Message string `json:"message"` OrderNumber string `json:"orderNumber"` Status int `json:"-"` // статус HTTP ответа }
func (APIError) HTTPStatus ¶
type Candle ¶
type Candle struct { Symbol string `json:"symbol"` // Код финансового инструмента (Тикер) Interval Interval `json:"interval"` // Интервал свечи Time int64 `json:"time"` // Время (UTC) (Unix time seconds) Close float64 `json:"close"` // Цена при закрытии Open float64 `json:"open"` // Цена при открытии High float64 `json:"high"` // Максимальная цена Low float64 `json:"low"` // Минимальная цена Volume int32 `json:"volume"` // Объём }
Candle Параметры свечи
func (*Candle) StringRecord ¶
возвращает массив строки для записи через "encoding/csv"
type CandleCloseFunc ¶
type CandleCloseFunc func(candle Candle)
type Client ¶
type Client struct { Exchange string // С какой биржей работаем по умолчанию HTTPClient *http.Client Stream // contains filtered or unexported fields }
Client define API client
func (*Client) BuyLimit ¶
func (c *Client) BuyLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error)
BuyLimit лимитная покупка
func (*Client) BuyMarket ¶
func (c *Client) BuyMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error)
BuyMarket покупка по рынку
func (*Client) CancelOrder ¶
CancelOrder отменить заявку TODO решить что возвращать
func (*Client) GetCandles ¶
func (c *Client) GetCandles(ctx context.Context, symbol string, interval Interval, from, to int64) ([]Candle, error)
GetCandles Запрос свечей для выбранного инструмента биржу берем по умолчанию
func (*Client) GetHistory ¶
func (c *Client) GetHistory(ctx context.Context, symbol string, interval Interval, from, to int64) (History, error)
GetHistory Запрос истории для выбранных биржи и инструмента биржу берем по умолчанию
func (*Client) GetLoginPositions ¶
https://apidev.alor.ru/md/v2/Clients/P039004/positions?format=Simple GetLoginPositions Получение информации о позициях по логину TODO использовать паттерн ok ([]Position, bool, error) ?
func (*Client) GetOrderBooks ¶
GetOrderBooks Получение информации о биржевом стакане
func (*Client) GetPortfolio ¶
GetPortfolio Получение информации о портфеле
func (*Client) GetPortfolioFortsRisk ¶
func (c *Client) GetPortfolioFortsRisk(ctx context.Context, portfolio string) (PortfolioFortsRisk, error)
GetPortfolioFortsRisk Получение информации по портфельным рискам
func (*Client) GetPortfolioID ¶
GetPortfolioID получим номер счета от кода режима торгов
func (*Client) GetPortfolioRisk ¶
GetPortfolioRisk Получение информации по портфельным рискам
func (*Client) GetPosition ¶
Получение информации о позициях выбранного инструмента TODO использовать паттерн ok (Position, bool, error) ? для этого нужно правильно обраьатывать ошибку
func (*Client) GetPositions ¶
GetPositions получение информации о позициях TODO использовать паттерн ok ([]Position, bool, error) ?
func (*Client) GetQuote ¶
GetQuote Получение информации о котировках для одного выбранного инструмента. Указываем тикер без указания биржи. Название биржи берется по умолчанию
func (*Client) GetQuotes ¶
GetQuotes Получение информации о котировках для выбранных инструментов. Принимает несколько пар биржа-тикер. Пары отделены запятыми. Биржа и тикер разделены двоеточием
func (*Client) GetSecurities ¶
GetSecurities получить список торговых инструментов Объекты в ответе сортируются по объёму торгов. Если не указано иное значение параметра limit, в ответе возвращается только 25 объектов за раз
func (*Client) GetSecurity ¶
GetSecurity получить параметры по торговому инструменту TODO использовать паттерн ok (Security, bool, error) ?
func (*Client) GetTime ¶
GetTime Запрос текущего UTC времени в формате Unix Time Seconds. Если этот запрос выполнен без авторизации, то будет возвращено время, которое было 15 минут назад.
func (*Client) NewCreateOrderService ¶
func (c *Client) NewCreateOrderService() *CreateOrderService
NewCreateOrderService создать новый ордер
func (*Client) NewCreateOrderStopService ¶
func (c *Client) NewCreateOrderStopService() *CreateOrderStopService
NewCreateOrderStopService создать новую stop/stopLimit заявку
func (*Client) NewWsService ¶
func (c *Client) NewWsService(wsRequest IwsRequest) *WsService
func (*Client) SellLimit ¶
func (c *Client) SellLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error)
SellLimit лимитная продажа
func (*Client) SellMarket ¶
func (c *Client) SellMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error)
SellMarket продажа по рынку
func (*Client) SetFortsPortfolio ¶
SetFortsPortfolio установим номер счета для работы с рынком фортс
func (*Client) SetFxAPortfolio ¶
SetFxAPortfolio установим номер счета для работы с валютным рынком
func (*Client) SetLogDebug ¶
SetLogDebug установим уровень логгирования Debug
func (*Client) SetPortfolioID ¶
SetPortfolioID установим номер счета по умолчанию
func (*Client) SetStockPortfolio ¶
SetStockPortfolio установим номер счета для работы с фондовым рынком
func (*Client) SubscribeCandles ¶
func (c *Client) SubscribeCandles(ctx context.Context, symbol string, interval Interval, opts ...WSRequestOption) error
SubscribeCandles подписка на свечи
func (*Client) SubscribeOrders ¶
func (c *Client) SubscribeOrders(ctx context.Context, portfolio string, opts ...WSRequestOption) error
SubscribeOrders подписка на получение информации обо всех биржевых заявках с участием указанного портфеля
func (*Client) SubscribeQuotes ¶
SubscribeQuotes подписка на котировки
type ConditionType ¶
type ConditionType string
ConditionType Условие срабатывания стоп/стоп-лимитной заявки
const ( ConditionMore ConditionType = "More" // Цена срабатывания больше текущей цены ConditionLess ConditionType = "Less" // Цена срабатывания меньше текущей цены ConditionMoreOrEqual ConditionType = "MoreOrEqual" // Цена срабатывания больше или равна текущей цене ConditionLessOrEqual ConditionType = "LessOrEqual" // Цена срабатывания меньше или равна текущей цене )
type CreateOrderService ¶
type CreateOrderService struct {
// contains filtered or unexported fields
}
CreateOrderService создать новую заявку (ордер)
func (*CreateOrderService) Board ¶
func (s *CreateOrderService) Board(board string) *CreateOrderService
Board установим Код режима торгов
func (*CreateOrderService) Comment ¶
func (s *CreateOrderService) Comment(comment string) *CreateOrderService
Comment установим комментарий
func (*CreateOrderService) Do ¶
func (s *CreateOrderService) Do(ctx context.Context) (string, error)
послать команду на создание нового ордера возвращает ID созданной заявки
func (*CreateOrderService) OrderType ¶
func (s *CreateOrderService) OrderType(orderType OrderType) *CreateOrderService
OrderType установим тип заявки
func (*CreateOrderService) Portfolio ¶
func (s *CreateOrderService) Portfolio(portfolio string) *CreateOrderService
Portfolio установим номер торгового счета
func (*CreateOrderService) Price ¶
func (s *CreateOrderService) Price(price float64) *CreateOrderService
Price установить цену. Для лимитной заявки
func (*CreateOrderService) Qty ¶
func (s *CreateOrderService) Qty(quantity int32) *CreateOrderService
Qty установим кол-во лот (Quantity)
func (*CreateOrderService) Side ¶
func (s *CreateOrderService) Side(side SideType) *CreateOrderService
Side установим направление ордера
func (*CreateOrderService) Symbol ¶
func (s *CreateOrderService) Symbol(symbol string) *CreateOrderService
Symbol установим символ
func (*CreateOrderService) TimeInForce ¶
func (s *CreateOrderService) TimeInForce(timeInForce TimeInForce) *CreateOrderService
TimeInForce установим Условие по времени действия заявки
type CreateOrderStopService ¶
type CreateOrderStopService struct {
// contains filtered or unexported fields
}
CreateOrderStopService создать новую stop/stopLimit заявку
func (*CreateOrderStopService) Activate ¶
func (s *CreateOrderStopService) Activate(activate bool) *CreateOrderStopService
func (*CreateOrderStopService) Board ¶
func (s *CreateOrderStopService) Board(board string) *CreateOrderStopService
Board установим Код режима торгов
func (*CreateOrderStopService) Condition ¶
func (s *CreateOrderStopService) Condition(condition ConditionType) *CreateOrderStopService
Condition Условие срабатывания стоп/стоп-лимитной заявки
func (*CreateOrderStopService) Do ¶
func (s *CreateOrderStopService) Do(ctx context.Context) (string, error)
Do послать команду на создание новой stop/stopLimit возвращает ID созданной заявки
func (*CreateOrderStopService) OrderType ¶
func (s *CreateOrderStopService) OrderType(orderType OrderType) *CreateOrderStopService
OrderType установим тип заявки
func (*CreateOrderStopService) Portfolio ¶
func (s *CreateOrderStopService) Portfolio(portfolio string) *CreateOrderStopService
Portfolio установим номер торгового счета
func (*CreateOrderStopService) Price ¶
func (s *CreateOrderStopService) Price(price float64) *CreateOrderStopService
Price установить цену. Для лимитной заявки
func (*CreateOrderStopService) Qty ¶
func (s *CreateOrderStopService) Qty(quantity int32) *CreateOrderStopService
Qty установим кол-во лот (Quantity)
func (*CreateOrderStopService) Side ¶
func (s *CreateOrderStopService) Side(side SideType) *CreateOrderStopService
Side установим направление ордера
func (*CreateOrderStopService) Symbol ¶
func (s *CreateOrderStopService) Symbol(symbol string) *CreateOrderStopService
Symbol установим символ
func (*CreateOrderStopService) TimeInForce ¶
func (s *CreateOrderStopService) TimeInForce(timeInForce TimeInForce) *CreateOrderStopService
TimeInForce установим Условие по времени действия заявки
func (*CreateOrderStopService) TriggerPrice ¶
func (s *CreateOrderStopService) TriggerPrice(price float64) *CreateOrderStopService
TriggerPrice Стоп-цена
type History ¶
type History struct { Candles []Candle `json:"history"` // Данные по свечам Next int64 `json:"next"` // Время (UTC) начала следующей свечи Prev int64 `json:"prev"` // Время (UTC) начала предыдущей свечи }
func (*History) GeNextTime ¶
GeNextTime вернем время начала следующей свечи в формате time.Time
func (*History) GePrevTime ¶
GePrevTime вернем время начала предыдущей свечи в формате time.Time
type IAlorClient ¶
type IAlorClient interface { // GetAccount получим номер счета от кода режима торгов GetAccount(board string) string // GetTime текущее время сервера GetTime(ctx context.Context) (time.Time, error) // GetSecurity получить параметры по торговому инструменту GetSecurity(ctx context.Context, board, symbol string) (Security, bool, error) // GetSecurities получить список торговых инструментов GetSecurities(ctx context.Context, opts ...Option) ([]Security, error) // GetQuotes Получение информации о котировках для выбранных инструментов GetQuotes(ctx context.Context, symbols string) ([]Quote, error) // GetQuote Получение информации о котировках для одного выбранного инструмента GetQuote(ctx context.Context, symbol string) (Quote, error) // GetPortfolio Получение информации о портфеле GetPortfolio(ctx context.Context, portfolio string) (Portfolio, error) // GetPortfolioRisk Получение информации по портфельным рискам GetPortfolioRisk(ctx context.Context, portfolio string) (PortfolioRisk, error) // GetPortfolioRisk Получение информации по рискам срочного рынка (FORTS) для указанного портфеля. GetPortfolioFortsRisk(ctx context.Context, portfolio string) (PortfolioFortsRisk, error) // GetPositions получение информации о позициях GetPositions(ctx context.Context, portfolio string) ([]Position, error) // GetPosition Получение информации о позициях выбранного инструмента GetPosition(ctx context.Context, portfolio, symbol string) (Position, bool, error) // GetHistory Запрос истории для выбранных биржи и инструмента GetHistory(ctx context.Context, symbol string, interval Interval, from, to int64) (History, error) // GetCandles Запрос истории свечей для выбранного инструмента (вызывает GetHistory) GetCandles(ctx context.Context, symbol string, interval Interval, from, to int64) ([]Candle, error) // GetOrderBooks Получение информации о биржевом стакане GetOrderBooks(ctx context.Context, symbol string) (OrderBook, error) // GetOrders получение информации о всех заявках GetOrders(ctx context.Context, portfolio string) ([]Order, error) // GetOrder получение информации о выбранной заявке GetOrder(ctx context.Context, portfolio, orderId string) (Order, error) //BuyMarket покупка по рынку BuyMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error) // SellMarket продажа по рынку SellMarket(ctx context.Context, symbol string, lot int32, comment string) (string, error) // BuyLimit лимитная покупка BuyLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error) // SellLimit лимитная продажа SellLimit(ctx context.Context, symbol string, lot int32, price float64, comment string) (string, error) // CancelOrder отменить заявку CancelOrder(ctx context.Context, portfolio, orderId string) (bool, error) // SubscribeCandles подписка на свечи SubscribeCandles(ctx context.Context, symbol string, interval Interval, opts ...WSRequestOption) error // SubscribeQuotes подписка на котировки SubscribeQuotes(ctx context.Context, symbol string, opts ...WSRequestOption) error // SubscribeOrders подписка на получение информации обо всех биржевых заявках с участием указанного портфеля SubscribeOrders(ctx context.Context, portfolio string, opts ...WSRequestOption) error }
какой api реализован
type Instrument ¶
type Interval ¶
type Interval string
Interval период свечей
const ( Interval_S15 Interval = "15" // 15 секунд Interval_M1 Interval = "60" // 60 секунд или 1 минута Interval_H1 Interval = "3600" // 3600 секунд или 1 час Interval_D1 Interval = "D" // D — сутки (соответствует значению 86400) Interval_W1 Interval = "W" // W — неделя (соответствует значению 604800) Interval_MN1 Interval = "M" // M — месяц (соответствует значению 2592000) Interval_Y1 Interval = "Y" // Y — год (соответствует значению 31536000) )
Длительность таймфрейма. В качестве значения можно указать точное количество секунд или код таймфрейма
func ParseToInterval ¶
ParseToInterval преобразуем символьную стоку в Interval
type IwsRequest ¶
type IwsRequest interface { Marshal() ([]byte, error) GetOpCode() string GetGuid() string GetCode() string GetInterval() Interval SetToken(token string) SetExchange(exchange string) }
IwsRequest Интерфейс которым должна обладать структура запроса для подписки
type Option ¶
type Option func(p *Options)
func WithOffset ¶
WithOffset Смещение начала выборки (для пагинации)
type Options ¶
type Options struct { Exchange string // Биржа MOEX, SPBX Sector string // Рынок на бирже FORTS, FOND, CURR Board string // Режим торгов (instrumentGroup) Symbol string // Код инструмента Query string // Query Тикер (Код финансового инструмента) ищет по вхождению Limit int32 // Ограничение на количество выдаваемых результатов поиска Offset int32 // Смещение начала выборки (для пагинации) }
Options параметры запроса по методам
func NewOptions ¶
func NewOptions() *Options
type Order ¶
type Order struct { ID string `json:"id"` // Уникальный идентификатор заявки Symbol string `json:"symbol"` // Тикер (Код финансового инструмента) BrokerSymbol string `json:"brokerSymbol"` // Пара Биржа:Тикер Exchange string `json:"exchange"` // Биржа Portfolio string `json:"portfolio"` // Идентификатор клиентского портфеля Comment string `json:"comment"` // Комментарий к заявке Type OrderType `json:"type"` // Тип заявки limit - Лимитная заявка market - Рыночная заявка Side SideType `json:"side"` // Направление сделки. buy — Купля sell — Продажа Status OrderStatus `json:"status"` // статус заявки TransitionTime string `json:"transTime"` // Дата и время выставления (UTC) UpdateTime string `json:"updateTime"` // Дата и время изменения статуса заявки (UTC) EndTime string `json:"endTime"` // Дата и время завершения (UTC) QtyUnits int32 `json:"qtyUnits"` // Количество (штуки) QtyBatch int32 `json:"qtyBatch"` // Количество (лоты) Qty int32 `json:"qty"` // Количество (лоты) FilledQtyUnits int32 `json:"filledQtyUnits"` // Количество исполненных (штуки) FilledQtyBatch int32 `json:"filledQtyBatch"` // Количество исполненных (лоты) Filled int32 `json:"filled"` // Количество исполненных (лоты) Price float64 `json:"price"` // Цена Existing bool `json:"existing"` // True - для данных из "снепшота", то есть из истории. False - для новых событий TimeInForce TimeInForce `json:"timeInForce"` // Тип заявки oneday - До конца дня goodtillcancelled - Активна до отмены Volume float64 `json:"volume"` // Объем, для рыночных заявок - null }
type OrderBook ¶
type OrderBook struct { Bids PriceVolumeSlice `json:"bids"` // Биды Asks PriceVolumeSlice `json:"asks"` // Аски MsTimestamp int64 `json:"ms_timestamp"` // Время (UTC) в формате Unix Time Milliseconds Existing bool `json:"existing"` // True - для данных из "снепшота", то есть из истории. False - для новых событий }
OrderBook биржевой стакан
func (*OrderBook) BestAsk ¶
func (b *OrderBook) BestAsk() (PriceVolume, bool)
func (*OrderBook) BestBid ¶
func (b *OrderBook) BestBid() (PriceVolume, bool)
type OrderRequest ¶
type OrderRequest struct { OrderType OrderType `json:"-"` Side SideType `json:"side"` // Направление сделки: buy — Купля sell — Продажа Quantity int32 `json:"quantity"` // Количество (лоты) Price float64 `json:"price,omitempty"` // Цена (только для лимитной) Comment string `json:"comment"` // Пользовательский комментарий к заявке Instrument Instrument `json:"instrument"` // тикер User User `json:"user"` // данные portfolio TimeInForce TimeInForce `json:"timeInForce"` // Условие по времени действия заявки IcebergFixed int32 `json:"icebergFixed,omitempty"` // Видимая постоянная часть айсберг-заявки в лотах IcebergVariance float64 `json:"icebergVariance,omitempty"` // Амплитуда отклонения (в % от icebergFixed) случайной надбавки к видимой части айсберг-заявки. Только срочный рынок }
type OrderResponse ¶
type OrderResponse struct { Code string `json:"code"` Message string `json:"message"` OrderNumber string `json:"orderNumber"` }
структура ответа
type OrderStatus ¶
type OrderStatus string
OrderStatus статус заявки ( working filled canceled rejected)
const ( OrderStatusWorking OrderStatus = "working" // На исполнении OrderStatusFilled OrderStatus = "filled" // Полностъю исполнилась (выполнилась) OrderStatusCanceled OrderStatus = "canceled" // Отменена OrderStatusRejected OrderStatus = "rejected" // отклонена )
type OrderStopRequest ¶
type OrderStopRequest struct { OrderType OrderType `json:"-"` Condition ConditionType `json:"condition"` // Условие срабатывания стоп/стоп-лимитной заявки: Side SideType `json:"side"` // Направление сделки: buy — Купля sell — Продажа Quantity int32 `json:"quantity"` // Количество (лоты) TriggerPrice float64 `json:"triggerPrice"` // Стоп-цена Price float64 `json:"price,omitempty"` // Цена выставления стоп-лимитной заявки StopEndUnixTime int64 `json:"stopEndUnixTime"` // Срок действия (UTC) в формате Unix Time seconds Instrument Instrument `json:"instrument"` // тикер User User `json:"user"` // данные portfolio TimeInForce TimeInForce `json:"timeInForce"` // Условие по времени действия заявки IcebergFixed int32 `json:"icebergFixed,omitempty"` // Видимая постоянная часть айсберг-заявки в лотах IcebergVariance float64 `json:"icebergVariance,omitempty"` // Амплитуда отклонения (в % от icebergFixed) случайной надбавки к видимой части айсберг-заявки. Только срочный рынок Activate bool `json:"activate"` // Флаг указывает, создать активную заявку, или не активную. Не активная заявка отображается в системе, но не участвует в процессе выставления на биржу, пока не станет активной. Данный флаг необходим при создании группы заявок с типом TriggerBracketOrders }
OrderStopRequest запрос на создание stop/stopLimit заявки
type Portfolio ¶
type Portfolio struct { BuyingPowerAtMorning float64 `json:"buyingPowerAtMorning"` //Покупательская способность на утро BuyingPower float64 `json:"buyingPower"` // Покупательская способность Profit float64 `json:"profit"` // Прибыль за сегодня ProfitRate float64 `json:"profitRate"` // Норма прибыли, % PortfolioEvaluation float64 `json:"portfolioEvaluation"` // Ликвидный портфель PortfolioLiquidationValue float64 `json:"portfolioLiquidationValue"` // Оценка портфеля InitialMargin float64 `json:"initialMargin"` // Маржа RiskBeforeForcePositionClosing float64 `json:"riskBeforeForcePositionClosing"` // Риск до закрытия Commission float64 `json:"commission"` // Суммарная комиссия (null для Срочного рынка) }
Portfolio информация о портфеле
type PortfolioFortsRisk ¶
type PortfolioFortsRisk struct { Portfolio string `json:"portfolio"` // Идентификатор клиентского портфеля MoneyFree float64 `json:"moneyFree"` // Свободные средства. Сумма рублей и залогов, дисконтированных в рубли, доступная для открытия позиций. (MoneyFree = MoneyAmount + VmInterCl – MoneyBlocked – VmReserve – Fee) MoneyBlocked float64 `json:"moneyBlocked"` // Средства, заблокированные под ГО Fee float64 `json:"fee"` // Списанный сбор MoneyOld float64 `json:"moneyOld"` // Общее количество рублей и дисконтированных в рубли залогов на начало сессии MoneyAmount float64 `json:"moneyAmount"` // Общее количество рублей и дисконтированных в рубли залогов MoneyPledgeAmount float64 `json:"moneyPledgeAmount"` // Сумма залогов, дисконтированных в рубли VmInterCl float64 `json:"vmInterCl"` // Вариационная маржа, списанная или полученная в пром. клиринг VmCurrentPositions float64 `json:"vmCurrentPositions"` // Сагрегированная вармаржа по текущим позициям VarMargin float64 `json:"varMargin"` // Вариационная маржа, рассчитанная по формуле VmCurrentPositions + VmInterCl IsLimitsSet bool `json:"isLimitsSet"` // Наличие установленных денежного и залогового лимитов }
type PortfolioRisk ¶
type PortfolioRisk struct { Portfolio string `json:"portfolio"` // Идентификатор клиентского портфеля Exchange string `json:"exchange"` // Биржа: PortfolioEvaluation float64 `json:"portfolioEvaluation"` // Общая стоимость портфеля PortfolioLiquidationValue float64 `json:"portfolioLiquidationValue"` // Стоимость ликвидного портфеля InitialMargin float64 `json:"initialMargin"` // Начальная маржа MinimalMargin float64 `json:"minimalMargin"` // Минимальная маржа CorrectedMargin float64 `json:"correctedMargin"` // Скорректированная маржа RiskCoverageRatioOne float64 `json:"riskCoverageRatioOne"` // НПР1 RiskCoverageRatioTwo float64 `json:"riskCoverageRatioTwo"` // НПР2 RiskCategoryId int32 `json:"riskCategoryId"` // Категория риска. ClientType string `json:"clientType"` // Тип клиента: HasForbiddenPositions bool `json:"hasForbiddenPositions"` // Имеются ли запретные позиции HasNegativeQuantity bool `json:"hasNegativeQuantity"` // Имеются ли отрицательные количества }
type Position ¶
type Position struct { Portfolio string `json:"portfolio"` // Идентификатор клиентского портфеля Symbol string `json:"symbol"` // Тикер (Код финансового инструмента) BrokerSymbol string `json:"brokerSymbol"` // Пара Биржа:Тикер Exchange string `json:"exchange"` // Биржа ShortName string `json:"shortName"` // Короткое наименование Volume float64 `json:"volume"` // Объём, рассчитанный по средней цен CurrentVolume float64 `json:"currentVolume"` // Объём, рассчитанный по текущей цене AvgPrice float64 `json:"avgPrice"` // Средняя цена QtyUnits float64 `json:"qtyUnits"` // Количество (штуки) OpenUnits float64 `json:"openUnits"` // Количество открытых позиций на момент открытия (начала торгов) LotSize float64 `json:"lotSize"` // Размер лота QtyT0 float64 `json:"qtyT0"` // Агрегированное количество T0 (штуки) QtyT1 float64 `json:"qtyT1"` // Агрегированное количество T1 (штуки) QtyT2 float64 `json:"qtyT2"` // Агрегированное количество T2 (штуки) QtyTFuture float64 `json:"qtyTFuture"` // Количество (штуки) QtyT0Batch float64 `json:"qtyT0Batch"` // Агрегированное количество T0 (лоты) QtyT1Batch float64 `json:"qtyT1Batch"` // Агрегированное количество T1 (лоты) QtyT2Batch float64 `json:"qtyT2Batch"` // Агрегированное количество T2 (лоты) QtyTFutureBatch float64 `json:"qtyTFutureBatch"` // Агрегированное количество TFuture (лоты) QtyBatch float64 `json:"qtyBatch"` // Агрегированное количество TFuture OpenQtyBatch float64 `json:"openQtyBatch"` // Агрегированное количество на момент открытия (начала торгов) (лоты) Qty float64 `json:"qty"` // Агрегированное количество (лоты) Open float64 `json:"open"` // Агрегированное количество на момент открытия (начала торгов) (штуки) DailyUnrealisedPl float64 `json:"dailyUnrealisedPl"` // Суммарная прибыль или суммарный убыток за день в процентах UnrealisedPl float64 `json:"unrealisedPl"` // Суммарная прибыль или суммарный убыток за день в валюте расчётов IsCurrency bool `json:"isCurrency"` // True для валютных остатков (денег), false - для торговых инструментов }
type PriceVolume ¶
type PriceVolume struct { Price float64 `json:"price"` // цена Volume int64 `json:"volume"` // объем }
func (PriceVolume) String ¶
func (p PriceVolume) String() string
type PriceVolumeSlice ¶
type PriceVolumeSlice []PriceVolume
PriceVolumeSlice Биды Аски
func (PriceVolumeSlice) Copy ¶
func (slice PriceVolumeSlice) Copy() PriceVolumeSlice
func (PriceVolumeSlice) First ¶
func (slice PriceVolumeSlice) First() (PriceVolume, bool)
вернем первый элемент
func (PriceVolumeSlice) Len ¶
func (slice PriceVolumeSlice) Len() int
func (PriceVolumeSlice) Second ¶
func (slice PriceVolumeSlice) Second() (PriceVolume, bool)
вернем второй элемент
func (PriceVolumeSlice) SumDepth ¶
func (slice PriceVolumeSlice) SumDepth() int64
вернем объем стакана
type Quote ¶
type Quote struct { Symbol string `json:"symbol"` Exchanges string `json:"exchange"` Description string `json:"description"` PrevClosePrice float64 `json:"prev_close_price"` // Цена предыдущего закрытия LastPrice float64 `json:"last_price"` // PriceLast OpenPrice float64 `json:"open_price"` // PriceOpen HighPrice float64 `json:"high_price"` // PriceMaximum LowPrice float64 `json:"low_price"` // PriceMinimum Ask float64 `json:"ask"` Bid float64 `json:"bid"` AskVol float32 `json:"ask_vol"` // Количество лотов в ближайшем аске в биржевом стакане BidVol float32 `json:"bid_vol"` // Количество лотов в ближайшем биде в биржевом стакане AskVolumeTotal int32 `json:"total_ask_vol"` // Суммарное количество лотов во всех асках в биржевом стакане BidVolumeTotal int32 `json:"total_bid_vol"` // Суммарное количество лотов во всех бидах в биржевом стакане LastPriceTimestamp int64 `json:"last_price_timestamp"` // Unix time seconds для значения поля last_price LotSize float64 `json:"lotsize"` // Размер лота LotValue float64 `json:"lotvalue"` // Суммарная стоимость лота FaceValue float64 `json:"facevalue"` // Показатель, значение которого варьируется в зависимости от выбранного рынка: OpenInterest int64 `json:"open_interest"` // Открытый интерес (open interest). Если не поддерживается инструментом — значение 0 или null OrderBookMSTimestamp int64 `json:"ob_ms_timestamp"` // Временная метка (UTC) сообщения о состоянии биржевого стакана в формате Unix Time Milliseconds Type string `json:"type"` // Полное название фьючерса }
Quotes
type RequestOption ¶
type RequestOption func(*request)
RequestOption define option type for request
func WithHeader ¶
func WithHeader(key, value string, replace bool) RequestOption
WithHeader set or add a header value to the request
func WithHeaders ¶
func WithHeaders(header http.Header) RequestOption
WithHeaders set or replace the headers of the request
type Security ¶
type Security struct { Symbol string `json:"symbol"` // Symbol Тикер (Код финансового инструмента) ShortName string `json:"shortname"` // Shortname Краткое наименование инструмента Description string `json:"description,omitempty"` // Description Краткое описание инструмента Exchange string `json:"exchange"` // Exchange Биржа Board string `json:"board"` //Код режима торгов (Борд): LotSize float64 `json:"lotsize"` // Lotsize Размер лота MinStep float64 `json:"minstep"` // Minstep Минимальный шаг цены PriceStep float64 `json:"pricestep"` // Pricestep Минимальный шаг цены, выраженный в рублях Cancellation string `json:"cancellation,omitempty"` // Cancellation Дата и время (UTC) окончания действия //Cancellation time.Time `json:"cancellation,omitempty"` // Cancellation Дата и время (UTC) окончания действия CfiCode string `json:"cfiCode,omitempty"` // CfiCode Тип ценной бумаги согласно стандарту ISO 10962 ComplexProductCategory string `json:"complexProductCategory"` // ComplexProductCategory Требуемая категория для осуществления торговли инструментом Currency string `json:"currency,omitempty"` // Currency Валюта Facevalue float64 `json:"facevalue,omitempty"` // Facevalue Номинальная стоимость Marginbuy float64 `json:"marginbuy,omitempty"` // Marginbuy Цена маржинальной покупки (заемные средства) Marginrate float64 `json:"marginrate,omitempty"` // Marginrate Отношение цены маржинальной покупки к цене последней сделки Marginsell float64 `json:"marginsell,omitempty"` // Marginsell Цена маржинальной продажи (заемные средства) PriceMax float64 `json:"priceMax,omitempty"` // PriceMax Максимальная цена PriceMin float64 `json:"priceMin,omitempty"` // PriceMin Минимальная цена PrimaryBoard string `json:"primary_board,omitempty"` // PrimaryBoard Код режима торгов Rating float64 `json:"rating,omitempty"` TheorPrice float64 `json:"theorPrice,omitempty"` TheorPriceLimit float64 `json:"theorPriceLimit,omitempty"` TradingStatus int `json:"tradingStatus,omitempty"` // TradingStatus Торговый статус инструмента TradingStatusInfo string `json:"tradingStatusInfo"` // TradingStatusInfo Описание торгового статуса инструмента Type string `json:"type,omitempty"` // Type Тип Volatility float64 `json:"volatility,omitempty"` // Volatility Волативность }
Security defines model for security.
type Stream ¶
type Stream struct { OnCandle CandleCloseFunc // Функция обработки появления новой свечи OnQuote QuoteFunc // Функция обработки появления котировки OnOrder OrderFunc // Функция обработки появления заявках }
func (*Stream) PublishCandleClosed ¶
PublishCandleClosed пошлем данные по свече дальше = тем кто подписался
func (*Stream) PublishOrder ¶
PublishOrder пошлем заявки тем кто подписался
func (*Stream) PublishQuotes ¶
PublishQuotes пошлем котировки = тем кто подписался
func (*Stream) SetOnCandle ¶
func (s *Stream) SetOnCandle(f CandleCloseFunc)
SetOnCandle регистрирует функцию для вызова OnCandleClosed
func (*Stream) SetOnOrder ¶
SetOnOrder регистрирует функцию для вызова OnOrder
func (*Stream) SetOnQuote ¶
SetOnQuote регистрирует функцию для вызова OnQuote
type TimeInForce ¶
type TimeInForce string
TimeInForce условие по времени действия заявки
const ( TimeInForceGTC TimeInForce = "goodtillcancelled" // Активна до отмены TimeInForceDAY TimeInForce = "oneday" // До конца дня TimeInForceFOK TimeInForce = "fillorkill" // Исполнить целиком или отклонить TimeInForceCancel TimeInForce = "immediateorcancel" // Снять остаток )
type Trade ¶
type Trade struct { Id string `json:"id"` // Уникальный идентификатор сделки OrderNo string `json:"orderNo"` // Уникальный идентификатор заявки Comment string `json:"comment"` // Пользовательский комментарий к заявке Symbol string `json:"symbol"` // Тикер (Код финансового инструмента). BrokerSymbol string `json:"brokerSymbol"` // Пара Биржа:Тикер Exchange string `json:"exchange"` // Биржа Date time.Time `json:"date"` // Дата и время завершения (UTC) Board string `json:"board"` // Код режима торгов (Борд): QtyUnits int32 `json:"qtyUnits"` // Количество (штуки) QtyBatch int `json:"qtyBatch"` // Количество (лоты) Qty int `json:"qty"` // Количество (лоты) Price float64 `json:"price"` // Цена AccruedInt int `json:"accruedInt"` // Начислено (НКД) Side string `json:"side"` // Направление сделки: Existing bool `json:"existing"` // True — для данных из "снепшота", то есть из истории. False — для новых событий Commission float64 `json:"commission"` // Суммарная комиссия (null для Срочного рынка) //RepoSpecificFields interface{} `json:"repoSpecificFields"` // Специальные поля для сделок РЕПО Volume float64 `json:"volume"` // Объём, рассчитанный по средней цене }
структура сделки
type WSRequestBase ¶
type WSRequestBase struct { OpCode string `json:"opcode"` // Код операции Guid string `json:"guid"` // Уникальный идентификатор запроса. Все ответные сообщения будут иметь такое же значение поля guid Token string `json:"token"` // Access Токен для авторизации запроса Exchange string `json:"exchange"` // Биржа: MOEX — Московская Биржа SPBX — СПБ Биржа Frequency int32 `json:"freq"` // Максимальная частота отдачи данных сервером в миллисекундах Format string `json:"format"` // Формат представления возвращаемых данных: Simple, Slim, Heavy Code string `json:"code,omitempty"` // Код финансового инструмента (Тикер) Interval Interval `json:"tf"` // Длительность таймфрейма в секундах или код (D — дни, W — недели, M — месяцы, Y — годы) From int64 `json:"from,omitempty"` // Дата и время (UTC) для первой запрашиваемой свечи //SkipHistory bool `json:"skipHistory,omitempty"` // Флаг отсеивания исторических данных: true — отображать только новые данные false — отображать в том числе данные из истории SkipHistory bool `json:"skipHistory"` // Флаг отсеивания исторических данных: true — отображать только новые данные false — отображать в том числе данные из истории Depth int32 `json:"depth,omitempty"` // Глубина стакана. Стандартное и максимальное значение — 20 (20х20). Portfolio string `json:"portfolio,omitempty"` // Идентификатор клиентского портфеля InstrumentGroup string `json:"instrumentGroup,omitempty"` // Код режима торгов (Борд): OrderStatuses string `json:"orderStatuses,omitempty"` // Опциональный фильтр по статусам заявок. Влияет только на фильтрацию первичных исторических данных при подписке. Возможные значения: }
поля которые должны быть во всех запросах на подписку по websocket
func (*WSRequestBase) GetCode ¶
func (r *WSRequestBase) GetCode() string
func (*WSRequestBase) GetGuid ¶
func (r *WSRequestBase) GetGuid() string
func (*WSRequestBase) GetInterval ¶
func (r *WSRequestBase) GetInterval() Interval
func (*WSRequestBase) GetOpCode ¶
func (r *WSRequestBase) GetOpCode() string
func (*WSRequestBase) Marshal ¶
func (r *WSRequestBase) Marshal() ([]byte, error)
func (*WSRequestBase) SetExchange ¶
func (r *WSRequestBase) SetExchange(exchange string)
func (*WSRequestBase) SetToken ¶
func (r *WSRequestBase) SetToken(token string)
type WSRequestOption ¶
type WSRequestOption func(r *WSRequestBase)
func WithFrequency ¶
func WithFrequency(param int32) WSRequestOption
type WSResponse ¶
type WSResponse struct { Data *json.RawMessage `json:"data"` // Данные по ответу Guid string `json:"guid"` // Уникальный идентификатор запроса WsMessage // Системное сообщение }
type WsMessage ¶
type WsService ¶
type WsService struct { WsRequest IwsRequest // Структура запроса для подписки (wsRequest) CloseC chan struct{} // CloseC сигнальный канал для закрытия коннекта ReconnectC chan struct{} // ReconnectC сигнальный канал для необходимости реконекта // contains filtered or unexported fields }
WSService сервис для подписок
func (*WsService) Close ¶
func (s *WsService) Close()
Close закроем сигнальный канал, что бы закончить работу
func (*WsService) DialAndConnect ¶
DialAndConnect создаем соединение с websocket. Запрашиваем подписку. Вызываем чтение данных