iss

package module
v0.0.0-...-6d8875b Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2024 License: MIT Imports: 16 Imported by: 20

README

Библиотека, которая позволяет работать с функционалом IIS Московской Биржи

без авторизации

Установка

go get github.com/Ruvad39/go-moex-iss

api который реализован на текущий момент:

// GetStockInfo получить параметры инструментов по акциям
GetStockInfo(symbols string) ([]StockInfo, error)
// GetStockMarketData получить рыночные данные по фондовому рынка
GetStockData(symbols string) ([]StockData, error)
// GetStockCandles получить историю свечей по акциям
GetStockCandles(symbols string, interval int, from, to string) (Candles, error)

// GetBondsInfo получить параметры инструментов 
GetBondsInfo(board string) ([]BondInfo, error)
// TODO получить рыночные данные
//GetBondsData(board string)

// GetFortsInfo получить параметры инструментов по фьючерсам
GetFortsInfo(symbols string) ([]FortsInfo, error)
// GetFortsMarketData получить рыночные данные по фьючерсам
GetFortsData(symbols string) ([]FortsData, error)
// GetFortsCandles получить историю свечей по фьючерсам
GetFortsCandles(symbols string, interval int, from, to string) (Candles, error)

// GetOptionInfo получить параметры инструментов по опционам
GetOptionInfo(symbols string) ([]OptionInfo, error)
// GetOptionData получить рыночные данные по опционам
GetOptionData(symbols string) ([]OptionData, error)
// GetOptionHistory получить исторические данные по одному символу
GetOptionHistory(symbols string, from, to string) ([]OptionHistory, error)
// GetOptionHistoryAllDate получить исторические данные по всем символам за заданную дату
GetOptionHistoryAllDate(date string) ([]OptionHistory, error)

// GetTicker поиск тикера по коду
GetTicker(symbol string) (*Ticker, error)
// Info Информация по тикеру
Ticker.Info() (TickerInfo, error)
// Data текущая рыночная информация по тикеру
Ticker.Data() (TickerData, error)
// Candles исторические свечи по тикеру 
Ticker.Candles(interval int, from, to string) (Candles, error) 
// OrderBook получить стакан. 
// Нужна аторизация
Ticker.OrderBook() (OrderBook, error)

// algopack

//GetStockTradeStats получим данные TradeStats по заданной акции
GetStockTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)(symbol string, from, to string, latest bool) ([]TradeStats, error)
// GetStockTradeStatsAll получим данные TradeStats по всем акция за заданный день
GetStockTradeStatsAll(date string, latest bool) ([]TradeStats, error)
// GetFortsTradeStats получим данные TradeStats по заданному фьючерсу
GetFortsTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)
// GetStockTradeStatsAll получим данные TradeStats по всем фьючерсам за заданный день
GetFortsTradeStatsAll(date string, latest bool) ([]TradeStats, error)
// GetFxTradeStats получим данные TradeStats по заданной валюте
GetFxTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)
// GetFxTradeStatsAll получим данные TradeStats по всем валютам за заданный день
GetFxTradeStatsAll(date string, latest bool) ([]TradeStats, error)

// GetFutOIAll Открытые позиции физ. и юр. лиц по всем инструментам
// date = за указанную дату; latest =1 возвращает последнюю пятиминутку за указанную дату
GetFutOIAll(date string, latest int) ([]FutOI, error)
// GetFutOI данные по заданному тикеру
// ticker = Краткий код базового актива (Si, RI, GD, ...); from = Дата начала периода; to = Дата окончания периода; флаг latest=1 возвращает последнюю пятиминутку за указанный период
GetFutOI(ticker string, from, to string, latest int) ([]FutOI, error)

// TODO другие данные algopack https://moexalgo.github.io

Примеры

создание клиента
// без авторизации, задержка данных по времени 15 минут.
// и не доступны некоторые сервисы algopack
user := ""
pwd := ""
client, err := iss.NewClient(iss.WithUser(user), iss.WithPwd(pwd))
//err, client := iss.NewClient()
if err != nil {
    slog.Error("main", "NewClient", err.Error())
}
Данные по акциям
client, _ := iss.NewClient()
if err != nil {
    slog.Error("main", "NewClient", err.Error())
}
// получить список акций
Sec, err := client.GetStockInfo("")
// можно указать список через запятую
//Sec, err := client.GetStockInfo("SBER,MOEX")
if err != nil {
    slog.Error("main", "ошибка GetStockInfo", err.Error())
}
slog.Info("GetStockInfo", slog.Int("всего len(Sec)", len(Sec)))
for row, sec := range Sec {
    slog.Info(strconv.Itoa(row),
        "sec", sec,
    )
}
// получить рыночные данные по акции
SecData, err := client.GetStockData("SBER,ROSN,MOEX")
if err != nil {
    slog.Error("main", "ошибка GetStockData", err.Error())
}
slog.Info("GetStockData", slog.Int("всего len(Sec)", len(SecData)))
for row, sec := range SecData {
    slog.Info(strconv.Itoa(row),
    "SecData", sec,
    )
}
// исторические свечи по акции
candles, err := client.GetStockCandles("SBER", iss.Interval_D1, "2024-05-01", "2025-01-01")
if err != nil {
    slog.Error("main", "ошибка GetCandles", err.Error())
	return
}

slog.Info("Candles",
    "всего len(candles)", candles.Len(),
    "mindate", candles.First().Begin,
    "maxdate", candles.Last(0).Begin,
    "Symbol", candles.Symbol,
    "Interval", candles.Interval, 
	)
// цикл по списку свечей
for row, candle := range candles.Data {
    slog.Info(strconv.Itoa(row),
        "time", candle.Time(),
        "candleData", candle, 
		)
}
	
Данные по тикеру
// создание (поиск) тикера
//ticker, err := client.GetTicker("SBER") 
ticker, err := client.GetTicker("RTS-9.24")
if err != nil {
	slog.Error("main", "ошибка NewTicker", err.Error())
}

// параметры инструмента
info, err := ticker.Info()
if err != nil {
    slog.Error("main", "ошибка ticker.Info", err.Error())
}
slog.Info("ticker.Info", slog.Any("t_info", info))

// текущие рыночные данные
data, err := ticker.Data()
if err != nil {
    slog.Error("main", "ошибка ticker.data", err.Error())
}
slog.Info("ticker.Info", slog.Any("t_data", data))

// свечи
candles, err := ticker.Candles(iss.Interval_D1, "2024-07-01", "2025-01-01")
if err != nil {
    slog.Error("main", "ошибка Candles", err.Error())
    return
}
slog.Info("Candles",
    "всего len(candles)", candles.Len(),
    "mindate", candles.First().Begin,
    "maxdate", candles.Last(0).Begin,
    "Symbol", candles.Symbol,
    "Interval", candles.Interval,
)
// цикл по списку свечей
for row, candle := range candles.Data {
    slog.Info(strconv.Itoa(row),
    "time", candle.Time(),
    "candleData", candle,
    )
}
// стакан. Нужна авторизация
orderBook, err := ticker.OrderBook()
if err != nil {
    slog.Error("main", "ticker.OrderBook", err.Error())
return
}
bid, _ := orderBook.BestBid()
ask, _ := orderBook.BestAsk()
bidVolume := orderBook.Bids.SumDepth()
askVolume := orderBook.Asks.SumDepth()

slog.Info("orderBook", "BestAsk", ask.Price, "BestBid", bid.Price, "объем асков", askVolume, "объем бидов", bidVolume)
fmt.Println(orderBook.String())


Super Candles TradeStats
// обязательно нужна авторизация
user, _ := "os.LookupEnv("MOEX_USER")
pwd, _ := ""

client, err := iss.NewClient(iss.WithUser(user), iss.WithPwd(pwd))
if err != nil {
	slog.Error("main", "NewClient", err.Error())
}

stats, err := client.GetStockTradeStats("SBER", "2024-09-01", "2024-09-03", false)
//stats, err := client.GetStockTradeStatsAll("2024-09-03", false)
//stats, err := client.GetFortsTradeStats("SiU4", "2024-09-01", "2024-09-03", false)
//stats, err := client.GetFortsTradeStatsAll("2024-09-03", false)
//stats, err := client.GetFxTradeStatsAll("2024-09-03", false)

if err != nil {
slog.Error("main", "ошибка GetTradeStats", err.Error())
}

// цикл по списку свечей
for row, candle := range stats {
    slog.Info(strconv.Itoa(row),
        "stats", candle,
    )
}

Другие примеры смотрите тут

Documentation

Overview

функционал по аналогии с https://github.com/moexalgo/moexalgo

Methods info : Возвращает информацию об инструменте. marketdata : Возвращает рыночную информацию и статистику об инструменте. candles : Возвращает итератор свечей инструмента по заданным параметрам. orderbook : Возвращает текущий стакан лучших цен.

# выбираем акции Сбера sber = Ticker('SBER') # получим дневные свечи с 2020 года sber.candles(start='2020-01-01', end='2023-11-01').head()

engines/stock

Index

Constants

View Source
const (
	Interval_M1  = 1
	Interval_M10 = 10
	Interval_H1  = 60
	Interval_D1  = 24
	Interval_W1  = 7
	Interval_MN1 = 31
	Interval_Q1  = 4
)

Доступные интервалы свечей.

View Source
const (
	DefaultApiURL   = "https://iss.moex.com/iss/"
	DefaultAuthURL  = "https://passport.moex.com/authenticate"
	DefaultAlgoPack = "/datashop/algopack"
)
View Source
const (
	FortsBoard   = "RFUD" // фьючерсы
	StockBoard   = "TQBR" // акция
	OptionsBoard = "ROPD" // опционы

	AlgoPackStock = "eq" // акции
	AlgoPackForts = "fo" // фьючерсы
	AlgoPackFx    = "fx" // валюта
)
View Source
const DefaultTagKey string = "json"

Variables

View Source
var (
	// EOF обозначает конец выгрузки
	EOF = errors.New("end of data")
)
View Source
var ErrTickerNotFound = errors.New("Ticker not found")
View Source
var ErrTickerSymbol = errors.New("код тикера должен быть больше 3-х символов")
View Source
var TzMsk = initMoscow()

Functions

func IntervalToString

func IntervalToString(i int) string

IntervalToString конвертация Interval свечей в строку

func ParseInterval

func ParseInterval(input string) (int, error)

ParseInterval

func SetLogLevel

func SetLogLevel(level slog.Level)

SetLogLevel проставим уровень логирования

func Unmarshal

func Unmarshal(header []string, data [][]interface{}, destination interface{}) error

Unmarshal парсинг массивов. По аналогии с csv

func UnmarshalCSV

func UnmarshalCSV(header []string, content [][]string, destination interface{}, tagKey string) error

Types

type BondInfo

type BondInfo struct {
	SecID                 string  `json:"SECID"`                 // Код инструмента
	BoardID               string  `json:"BOARDID"`               // Код режима
	ShortName             string  `json:"SHORTNAME"`             // Кратк. наим.
	SecName               string  `json:"SECNAME"`               // Наименование финансового инструмента
	PrevWaPrice           float64 `json:"PREVWAPPRICE"`          // Средневзвешенная цена предыдущего дня, % к номиналу
	YielDatPrevWaPrice    float64 `json:"YIELDATPREVWAPPRICE"`   // Доходность по оценке пред. дня
	CouponValue           float64 `json:"COUPONVALUE"`           // Сумма купона, в валюте номинала
	NextCoupon            string  `json:"NEXTCOUPON"`            // Дата окончания купона
	MatDate               string  `json:"MATDATE"`               // Дата погашения
	Accruedint            float64 `json:"ACCRUEDINT"`            // НКД на дату расчетов, в валюте расчетов
	PrevPrice             float64 `json:"PREVPRICE"`             // Цена последней сделки пред. дня, % к номиналу
	LotSize               float64 `json:"LOTSIZE"`               // Размер лота
	FaceValue             float64 `json:"FACEVALUE"`             // Непогашенный долг
	Status                string  `json:"STATUS"`                // Статус
	Decimals              int     `json:"DECIMALS"`              // Точность, знаков после запятой
	CouponPeriod          int     `json:"COUPONPERIOD"`          // Длительность купона
	IssueSize             int64   `json:"ISSUESIZE"`             // Объем выпуска, штук
	PrevLegalClosePrice   float64 `json:"PREVLEGALCLOSEPRICE"`   // Официальная цена закрытия предыдущего дня
	PrevDate              string  `json:"PREVDATE"`              // Дата предыдущего торгового дня
	Remarks               string  `json:"REMARKS"`               // Примечание
	MarketCode            string  `json:"MARKETCODE"`            // Рынок
	InstrID               string  `json:"INSTRID"`               // Группа инструментов
	MinStep               float64 `json:"MINSTEP"`               // Мин. шаг цены
	FaceUnit              string  `json:"FACEUNIT"`              // Валюта номинала
	BuyBackPrice          float64 `json:"BUYBACKPRICE"`          // Цена оферты
	BuyBackDate           string  `json:"BUYBACKDATE"`           // Дата, к которой рассчитывается доходность (если данное поле не заполнено, то \"Доходность посл.сделки\" рассчитывается к Дате погашения
	ISIN                  string  `json:"ISIN"`                  // ISIN
	LatName               string  `json:"LATNAME"`               // Англ. наименование
	RegNumber             string  `json:"REGNUMBER"`             // Регистрационный номер
	CurrencyID            string  `json:"CURRENCYID"`            // Сопр. валюта инструмента
	IssueSizePlaced       float64 `json:"ISSUESIZEPLACED"`       // Количество ценных бумаг в обращении
	LisTLevel             int     `json:"LISTLEVEL"`             // Уровень листинга
	SecType               string  `json:"SECTYPE"`               // Тип ценной бумаги
	CouponPercent         float64 `json:"COUPONPERCENT"`         // Ставка купона, %"
	OfferDate             string  `json:"OFFERDATE"`             // Дата Оферты
	SettleDate            string  `json:"SETTLEDATE"`            // Дата расчетов сделки
	LotValue              float64 `json:"LOTVALUE"`              // Номинальная стоимость лота, в валюте номинала
	FaceValueOnSettleDate float64 `json:"FACEVALUEONSETTLEDATE"` // Номинальная стоимость на дату расчетов (значение, известное на дату заключения сделки)
}

BondInfo https://iss.moex.com/iss/engines/stock/markets/bonds/columns.json?iss.only=securities

type Candle

type Candle struct {
	Open   float64 `json:"open"`
	Close  float64 `json:"close"`
	High   float64 `json:"high"`
	Low    float64 `json:"low"`
	Value  float64 `json:"value"`
	Volume float64 `json:"volume"`
	Begin  string  `json:"begin"`
	End    string  `json:"end"`
}

Candle структура свечи

func (Candle) Time

func (k Candle) Time() time.Time

Time время начала свечи

type Candles

type Candles struct {
	Symbol   string
	Interval string
	Data     []Candle
}

Candles слайс свечей

func (Candles) First

func (k Candles) First() Candle

First первая свеча

func (Candles) Index

func (k Candles) Index(position int) Candle

Index вернем заданную по номеру свечу. 0 = последняя

func (Candles) Last

func (k Candles) Last(position int) Candle

Last вернем заданную по номеру свечу. 0 = последняя

func (Candles) Len

func (k Candles) Len() int

Len

type CandlesService

type CandlesService struct {
	// contains filtered or unexported fields
}

CandlesService сервис для получения исторических свечей

func (*CandlesService) Do

func (s *CandlesService) Do() (Candles, error)

Do выполняет выгрузку свечей

func (*CandlesService) Next

func (s *CandlesService) Next() ([]Candle, error)

Next загружает следующую страницу данных Если данных больше нет, то возвращается ошибка EOF TODO что возвращать данные или ссылку?

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(opts ...ClientOption) (*Client, error)

func (*Client) Connect

func (c *Client) Connect() error

Connect Подключение (авторизация) к информационно-статистическому серверу Московской Биржи (ИСС/ISS)

func (*Client) GetBondsInfo

func (c *Client) GetBondsInfo(board string) ([]BondInfo, error)

func (*Client) GetFortsCandles

func (c *Client) GetFortsCandles(symbols string, interval int, from, to string) (Candles, error)

GetFortsCandles получить историю свечей по акциям Board RFUD

func (*Client) GetFortsData

func (c *Client) GetFortsData(symbols string) ([]FortsData, error)

GetFortsData получить рыночные данные по фьючерсам

func (*Client) GetFortsInfo

func (c *Client) GetFortsInfo(symbols string) ([]FortsInfo, error)

GetFortsInfo получить параметры инструментов по фьючерсам

func (*Client) GetFortsTradeStats

func (c *Client) GetFortsTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)

GetFortsTradeStats получим данные TradeStats по заданному фьючерсу

func (*Client) GetFortsTradeStatsAll

func (c *Client) GetFortsTradeStatsAll(date string, latest bool) ([]TradeStats, error)

GetStockTradeStatsAll получим данные TradeStats по всем фьючерсам за заданный день

func (*Client) GetFutOI

func (c *Client) GetFutOI(ticker string, from, to string, latest int) ([]FutOI, error)

GetFutOI по заданному тикеру

func (*Client) GetFutOIAll

func (c *Client) GetFutOIAll(date string, latest int) ([]FutOI, error)

GetFutOIAll Открытые позиции физ. и юр. лиц по всем инструментам date = за дату ; latest =1 возвращает последнюю пятиминутку за указанную дату

func (*Client) GetFxTradeStats

func (c *Client) GetFxTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)

GetFxTradeStats получим данные TradeStats по заданной валюте

func (*Client) GetFxTradeStatsAll

func (c *Client) GetFxTradeStatsAll(date string, latest bool) ([]TradeStats, error)

GetFxTradeStatsAll получим данные TradeStats по всем валютам за заданный день

func (*Client) GetOptionData

func (c *Client) GetOptionData(symbols string) ([]OptionData, error)

GetOptionData получить рыночные данные по опционам

func (*Client) GetOptionHistory

func (c *Client) GetOptionHistory(symbols string, from, to string) ([]OptionHistory, error)

GetOptionHistory получить исторические данные по одному символу

func (*Client) GetOptionHistoryAllDate

func (c *Client) GetOptionHistoryAllDate(date string) ([]OptionHistory, error)

GetOptionHistoryAllDate получить исторические данные по всем символам за заданную дату

func (*Client) GetOptionInfo

func (c *Client) GetOptionInfo(symbols string) ([]OptionInfo, error)

GetOptionInfo получить параметры инструментов по опционам

func (*Client) GetStockCandles

func (c *Client) GetStockCandles(symbols string, interval int, from, to string) (Candles, error)

GetStockCandles получить историю свечей по акциям Board TQBR

func (*Client) GetStockData

func (c *Client) GetStockData(symbols string) ([]StockData, error)

GetStockData получить рыночные данные по акциям

func (*Client) GetStockInfo

func (c *Client) GetStockInfo(symbols string) ([]StockInfo, error)

GetStockInfo получить параметры инструментов по акциям

func (*Client) GetStockTradeStats

func (c *Client) GetStockTradeStats(symbol string, from, to string, latest bool) ([]TradeStats, error)

GetStockTradeStats получим данные TradeStats по заданной акции

func (*Client) GetStockTradeStatsAll

func (c *Client) GetStockTradeStatsAll(date string, latest bool) ([]TradeStats, error)

GetStockTradeStatsAll получим данные TradeStats по всем акция за заданный день

func (*Client) GetTicker

func (c *Client) GetTicker(symbol string) (*Ticker, error)

GetTicker поиск тикера func (c *Client) NewTicker(symbol string, opts ...TickerOption) (*Ticker, error) {

func (*Client) NewCandlesService

func (c *Client) NewCandlesService(engines, markets, board, symbol string, interval int, from, to string) *CandlesService

NewCandlesService создание сервиса

func (*Client) NewOptionHistoryService

func (c *Client) NewOptionHistoryService(symbol string, from, to string, date string) *OptionHistoryService

параметры должны быть или symbol + from + to = данные по одному символу или date = данные по всем символам за определенную дату

func (*Client) NewOrderBookService

func (c *Client) NewOrderBookService(engines, markets, board, symbol string) *OrderBookService

func (*Client) NewTradeStatsService

func (c *Client) NewTradeStatsService(markets, symbol string, from, to string, date string, latest bool) *TradeStatsService

NewTradeStatsService создание сервиса или все за заданную дату symbol == "" + указана date или по одному символу за период symbol != "" + указаны from, to (если не указаны = то за текущий день)

type ClientOption

type ClientOption func(c *Client)

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

func WithLogger

func WithLogger(logger *slog.Logger) ClientOption

WithLogger Logger по умолчанию

func WithPwd

func WithPwd(pwd string) ClientOption

WithPwd установим пароль пользователя

func WithUser

func WithUser(user string) ClientOption

WithUser установим пользователя

type FortsData

type FortsData struct {
	SecID                 string  `json:"SECID"`                 // Код инструмента
	BoardID               string  `json:"BOARDID"`               // Код режима
	Bid                   float64 `json:"BID"`                   // Лучшая котировка на покупку
	Offer                 float64 `json:"OFFER"`                 // Лучшая котировка на продажу
	Spread                float64 `json:"SPREAD"`                // Разница между лучшей котировкой на продажу и покупку (спред), руб
	Open                  float64 `json:"OPEN"`                  // Цена первой сделки
	Low                   float64 `json:"LOW"`                   // Минимальная цена сделки
	High                  float64 `json:"HIGH"`                  // Максимальная цена сделки
	Last                  float64 `json:"LAST"`                  // Цена последней сделки
	Quantity              int     `json:"QUANTITY"`              // Объем последней сделки, контрактов
	LastChange            float64 `json:"LASTCHANGE"`            // Изменение цены последней сделки к предыдущей цене
	SettlePrice           float64 `json:"SETTLEPRICE"`           // Текущая расчетная цена
	SettleTopRevSettle    float64 `json:"SETTLETOPREVSETTLE"`    // Изменение текущей расчетной цены
	NumTrades             int     `json:"NUMTRADES"`             // Количество совершенных сделок, штук
	VolToDay              int64   `json:"VOLTODAY"`              // Объем совершенных сделок, контрактов
	ValToDay              float64 `json:"VALTODAY"`              // Объем совершенных сделок, рублей
	ValToDay_USD          float64 `json:"VALTODAY_USD"`          // Объем совершенных сделок, дол. США
	UpdateTime            string  `json:"UPDATETIME"`            // Время последнего обновления
	LastChangePrcnt       float64 `json:"LASTCHANGEPRCNT"`       // Изменение цены последней сделки к предыдущей, %"
	BidDepth              int     `json:"BIDDEPTH"`              // Объем заявок на покупку по лучшей котировке, выраженный в лотах null
	BidDepthT             int     `json:"BIDDEPTHT"`             // Суммарный объем заявок на покупку null
	NumBids               int     `json:"NUMBIDS"`               // Количество заявок на покупку null
	OfferDepth            int     `json:"OFFERDEPTH"`            // Объем заявки на продажу по лучшей котировке null
	OfferDepthT           int     `json:"OFFERDEPTHT"`           // Суммарный объем заявок на продажу null
	NumOffers             int     `json:"NUMOFFERS"`             // Количество заявок на продажу null
	Time                  string  `json:"TIME"`                  // Время заключения последней сделки
	SETTLETOPREVSETTLEPRC float64 `json:"SETTLETOPREVSETTLEPRC"` // Изменение текущей расчетной цены относительно расчетной цены предыдущего торгового дня, %
	SEQNUM                int64   `json:"SEQNUM"`                // Номер обновления (служебное поле)
	SysTime               string  `json:"SYSTIME"`               // Время загрузки данных системой
	TradeDate             string  `json:"TRADEDATE"`             // Дата последней сделки
	LastToPrevPrice       float64 `json:"LASTTOPREVPRICE"`       // Изменение цены последней сделки к последней цене предыдущего дня, %
	OpenPosition          int64   `json:"OPENPOSITION"`          // Открытые позиции, контрактов
	OiChange              int64   `json:"OICHANGE"`              // Изменение открытых позиций к предыдущему закрытию, контр.
	OpenPeriodPrice       float64 `json:"OPENPERIODPRICE"`       // Цена аукциона открытия
	SwapRate              float64 `json:"SWAPRATE"`              // Фандинг в рублях (величина SwapRate, согласно спецификации контракта)
}

FortsData рыночные данные по инструментам фортс https://iss.moex.com/iss/engines/futures/markets/forts/columns.json?iss.only=marketdata TODO добавить csv таг

type FortsInfo

type FortsInfo struct {
	SecID            string  `json:"SECID"`            // Код инструмента
	BoardID          string  `json:"BOARDID"`          // Код режима
	ShortName        string  `json:"SHORTNAME"`        // Кратк. наим.
	SecName          string  `json:"SECNAME"`          // Наименование срочного инструмента
	PrevSetTlePrice  float64 `json:"PREVSETTLEPRICE"`  // Расчетная цена предыдущего дня, рублей
	Decimals         int     `json:"DECIMALS"`         // Точность
	MinStep          float64 `json:"MINSTEP"`          // Мин. шаг цены
	LastTradeDate    string  `json:"LASTTRADEDATE"`    // Последний торговый день
	LastDelDate      string  `json:"LASTDELDATE"`      // День исполнения
	SecType          string  `json:"SECTYPE"`          // Тип инструмента
	LatName          string  `json:"LATNAME"`          // Наименование финансового инструмента на английском языке
	AssetCode        string  `json:"ASSETCODE"`        // Код базового актива
	PrevOpenPosition int     `json:"PREVOPENPOSITION"` // Открытые позиции предыдущего дня, контр.
	LotVolume        int     `json:"LOTVOLUME"`        // К-во единиц базового актива в инструменте
	InitialMargin    float64 `json:"INITIALMARGIN"`    // Гарантийное обеспечение на первом уровне лимита концентрации
	HighLimit        float64 `json:"HIGHLIMIT"`        // Верхний лимит
	LowLimit         float64 `json:"LOWLIMIT"`         // Нижний лимит
	StepPrice        float64 `json:"STEPPRICE"`        // Стоимость шага цены
	LastSettlePrice  float64 `json:"LASTSETTLEPRICE"`  // Расчетная цена последнего клиринга
	PrevPrice        float64 `json:"PREVPRICE"`        // Цена последней сделки предыдущего торгового дня
	IMTime           string  `json:"IMTIME"`           // Данные по ГО на
	BuySellFee       float64 `json:"BUYSELLFEE"`       // Сбор за регистрацию сделки*, руб.
	ScalPerFee       float64 `json:"SCALPERFEE"`       // Сбор за скальперскую сделку*, руб.
	NegotiatedFee    float64 `json:"NEGOTIATEDFEE"`    // Сбор за адресную сделку*, руб.
	ExerciseFee      float64 `json:"EXERCISEFEE"`      // Клиринговая комиссия за исполнение контракта*, руб.

}

FortsInfo параметры инструментов по рынку фортс https://iss.moex.com/iss/engines/futures/markets/forts/columns.json?iss.only=securities TODO добавить csv таг

type FutOI

type FutOI struct {
	SessID      int32  `json:"sess_id"`       // номер торговой сессии
	SeqNum      int32  `json:"seqnum"`        // Номер пакета данных. Техническое поле
	TradeDate   string `json:"tradedate"`     // Дата date:10
	TradeTime   string `json:"tradetime"`     // Время последней сделки, которая была учтена при расчете time:10
	Ticker      string `json:"ticker"`        // Двухсимвольный код контракта
	ClGroup     string `json:"clgroup"`       // группа клиентов: fiz – физические лица, yur – юридические лица
	Pos         int64  `json:"pos"`           // Величина открытых позиций
	PosLong     int64  `json:"pos_long"`      // Величина длинных открытых позиций
	PosShort    int64  `json:"pos_short"`     // Величина коротких открытых позиций
	PosLongNum  int64  `json:"pos_long_num"`  // Количество лиц, имеющих длинную открытую позицию
	PosShortNum int64  `json:"pos_short_num"` // Количество лиц, имеющих короткую открытую позицию
	SysTime     string `json:"systime"`       // Время публикации данных datetime:19
}

FutOI Открытые позиции по фьючерсным контрактам в разрезе физ. и юр. лиц

type HTTPClient

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

HTTPClient interface Do

type IssRequest

type IssRequest struct {
	// contains filtered or unexported fields
}

IssRequest построитель запроса iss-moex

func NewIssRequest

func NewIssRequest() *IssRequest

func (*IssRequest) AlgoPack

func (u *IssRequest) AlgoPack(param string) *IssRequest

что выбираем из алгопака

func (*IssRequest) AlgoPackForts

func (u *IssRequest) AlgoPackForts(param bool) *IssRequest

func (*IssRequest) AlgoPackFx

func (u *IssRequest) AlgoPackFx(param bool) *IssRequest

func (*IssRequest) AlgoPackMarkets

func (u *IssRequest) AlgoPackMarkets(param string) *IssRequest

какой рынок в алгопаке

func (*IssRequest) AlgoPackStock

func (u *IssRequest) AlgoPackStock(param bool) *IssRequest

func (*IssRequest) Boards

func (u *IssRequest) Boards(param string) *IssRequest

Boards /boards/(boardid)

func (*IssRequest) Bonds

func (u *IssRequest) Bonds() *IssRequest

Bondsпроставим параметры для Bonds

func (*IssRequest) Candle

func (u *IssRequest) Candle() *IssRequest

Candle проставим параметры для запроса свечи

func (*IssRequest) Date

func (u *IssRequest) Date(param string) *IssRequest

Date нет проверки на формат даты

func (*IssRequest) Engines

func (u *IssRequest) Engines(param string) *IssRequest

Engines /engines/(trade_engine_name)

func (*IssRequest) Forts

func (u *IssRequest) Forts() *IssRequest

Forts проставим параметры для фьючерсов

func (*IssRequest) From

func (u *IssRequest) From(param string) *IssRequest

From нет проверки на формат даты

func (*IssRequest) History

func (u *IssRequest) History() *IssRequest

History

func (*IssRequest) Interval

func (u *IssRequest) Interval(param int) *IssRequest

Interval

func (*IssRequest) Json

func (u *IssRequest) Json() *IssRequest

Json проставим формат данных: json xml

func (*IssRequest) JsonFull

func (u *IssRequest) JsonFull() *IssRequest

JsonFull расширенный формат json iss.json=extended

func (*IssRequest) Latest

func (u *IssRequest) Latest(param bool) *IssRequest

флаг latest=1 возвращает последнюю пятиминутку за указанный период

func (*IssRequest) MarketData

func (u *IssRequest) MarketData() *IssRequest

MarketData iss.only=marketdata

func (*IssRequest) Markets

func (u *IssRequest) Markets(param string) *IssRequest

Markets /markets/(market_name)

func (*IssRequest) MetaData

func (u *IssRequest) MetaData(param bool) *IssRequest

MetaData включать или нет метаинформацию перечень, тип данных и размер полей (столбцов или атрибутов xml) iss.meta=on|off

func (*IssRequest) Only

func (u *IssRequest) Only(param string) *IssRequest

Only iss.only=

func (*IssRequest) OnlyMarketData

func (u *IssRequest) OnlyMarketData() *IssRequest

OnlyMarketData iss.only=marketdata

func (*IssRequest) OnlySecurities

func (u *IssRequest) OnlySecurities() *IssRequest

OnlySecurities iss.only=securities

func (*IssRequest) Options

func (u *IssRequest) Options() *IssRequest

Options проставим параметры для опционов

func (*IssRequest) Start

func (u *IssRequest) Start(param int) *IssRequest

func (*IssRequest) Stock

func (u *IssRequest) Stock() *IssRequest

Stock проставим параметры для акций

func (*IssRequest) Symbol

func (u *IssRequest) Symbol(param string) *IssRequest

Symbol один символ. после securities

func (*IssRequest) Symbols

func (u *IssRequest) Symbols(param string) *IssRequest

Symbols список символов в строке запроса

func (*IssRequest) Target

func (u *IssRequest) Target(param string) *IssRequest

Target

func (*IssRequest) To

func (u *IssRequest) To(param string) *IssRequest

To нет проверки на формат даты

func (*IssRequest) URL

func (u *IssRequest) URL() string

URL создадим строку url

func (*IssRequest) WithSecurities

func (u *IssRequest) WithSecurities(param bool) *IssRequest

WithSecurities добавлять securities в строку

type OptionData

type OptionData struct {
	SecID                 string  `json:"SECID"`                 // Код инструмента
	BoardID               string  `json:"BOARDID"`               // Код режима
	Bid                   float64 `json:"BID"`                   // Лучшая котировка на покупку
	Offer                 float64 `json:"OFFER"`                 // Лучшая котировка на продажу
	Spread                float64 `json:"SPREAD"`                // Разница между лучшей котировкой на продажу и покупку (спред), руб
	Open                  float64 `json:"OPEN"`                  // Цена первой сделки
	Low                   float64 `json:"LOW"`                   // Минимальная цена сделки
	High                  float64 `json:"HIGH"`                  // Максимальная цена сделки
	Last                  float64 `json:"LAST"`                  // Цена последней сделки
	Quantity              int     `json:"QUANTITY"`              // Объем последней сделки, контрактов
	LastChange            float64 `json:"LASTCHANGE"`            // Изменение цены последней сделки к предыдущей цене
	SettlePrice           float64 `json:"SETTLEPRICE"`           // Текущая расчетная цена
	SettleToPrevSettle    float64 `json:"SETTLETOPREVSETTLE"`    // Изменение текущей расчетной цены
	NumTrades             int64   `json:"NUMTRADES"`             // Количество совершенных сделок, штук
	VolToDay              int64   `json:"VOLTODAY"`              // Объем совершенных сделок, контрактов
	ValToDay              float64 `json:"VALTODAY"`              // Объем совершенных сделок, рублей
	ValToDay_USD          float64 `json:"VALTODAY_USD"`          // Объем совершенных сделок, дол. США
	UpdateTime            string  `json:"UPDATETIME"`            // Время последнего обновления
	LastChangePrcnt       float64 `json:"LASTCHANGEPRCNT"`       // Изменение цены последней сделки к предыдущей, %"
	BidDepth              int     `json:"BIDDEPTH"`              // Объем заявок на покупку по лучшей котировке, выраженный в лотах null
	BidDepthT             int     `json:"BIDDEPTHT"`             // Суммарный объем заявок на покупку null
	NumBids               int     `json:"NUMBIDS"`               // Количество заявок на покупку null
	OfferDepth            int     `json:"OFFERDEPTH"`            // Объем заявки на продажу по лучшей котировке null
	OfferDepthT           int     `json:"OFFERDEPTHT"`           // Суммарный объем заявок на продажу null
	NumOffers             int     `json:"NUMOFFERS"`             // Количество заявок на продажу null
	Time                  string  `json:"TIME"`                  // Время заключения последней сделки
	SettleToPrevSettlePrc float64 `json:"SETTLETOPREVSETTLEPRC"` // Изменение текущей расчетной цены относительно
	SeqNum                int64   `json:"SEQNUM"`                // Номер обновления (служебное поле)
	SysTime               string  `json:"SYSTIME"`               // Время загрузки данных системой
	OiChange              int64   `json:"OICHANGE"`              // Изменение открытых позиций к предыдущему закрытию, контр.
	OpenPosition          int64   `json:"OPENPOSITION"`          // Открытые позиции, контрактов
}

OptionData рыночные данные по опционам https://iss.moex.com/iss/engines/futures/markets/options/columns.json?iss.only=marketdata TODO добавить csv теги

type OptionHistory

type OptionHistory struct {
	TradeDate         string  `json:"TRADEDATE"`         // Дата за которую предоставляются данные
	SecID             string  `json:"SECID"`             // Уникальный краткий код инструмента
	BoardID           string  `json:"BOARDID"`           // Идентификатор режима торгов
	Open              float64 `json:"OPEN"`              // Цена открытия
	Low               float64 `json:"LOW"`               // Минимальная цена сделки
	High              float64 `json:"HIGH"`              // Максимальная цена сделки
	Close             float64 `json:"CLOSE"`             // Цена последней сделки
	Value             float64 `json:"VALUE"`             // Оборот в рублях
	Volume            int64   `json:"VOLUME"`            // Оборот в контрактах
	OpenPositionValue float64 `json:"OPENPOSITIONVALUE"` // Объем открытых позиций, руб.
	OpenPosition      int64   `json:"OPENPOSITION"`      // Открытые позиции в контрактах
	SettlePrice       float64 `json:"SETTLEPRICE"`       // Расчетная цена текущего дня
	WapPrice          float64 `json:"WAPRICE"`           // Средневзвешенная цена (рыночные сделки)
	SettlePriceDay    float64 `json:"SETTLEPRICEDAY"`    // Теоретическая цена в дневном клиринге (пункты)
	Change            float64 `json:"CHANGE"`            // Изменение цены последней сделки по отношению к цене последней сделки предыдущего торгового, %
	QTY               int64   `json:"QTY"`               // Объем последней сделки, контрактов
	NumTrades         int64   `json:"NUMTRADES"`         // 	Количество сделок
}

type OptionHistoryService

type OptionHistoryService struct {
	// contains filtered or unexported fields
}

OptionHistoryService сервис для получения исторических данных

func (*OptionHistoryService) Do

Do выполняет выгрузку History

func (*OptionHistoryService) Next

func (s *OptionHistoryService) Next() ([]OptionHistory, error)

type OptionInfo

type OptionInfo struct {
	SecID                 string  `json:"SECID" csv:"SECID"`                                 // Код инструмента
	BoardID               string  `json:"BOARDID" csv:"BOARDID"`                             // Код режима
	ShortName             string  `json:"SHORTNAME" csv:"SHORTNAME"`                         // Серия срочного инструмента"
	SecName               string  `json:"SECNAME" csv:"SECNAME"`                             // Наименование срочного инструмента
	OptionType            string  `json:"OPTIONTYPE" csv:"OPTIONTYPE"`                       // Вид опциона
	Strike                float64 `json:"STRIKE" csv:"STRIKE"`                               // Цена страйка
	CentralStrike         float64 `json:"CENTRALSTRIKE" csv:"CENTRALSTRIKE"`                 // Центральный страйк
	PrevSettlePrice       float64 `json:"PREVSETTLEPRICE" csv:"PREVSETTLEPRICE"`             // Расчетная цена предыдущего дня, рублей
	Decimals              int     `json:"DECIMALS" csv:"DECIMALS"`                           // Точность
	MinStep               float64 `json:"MINSTEP" csv:""MINSTEP"`                            // Мин. шаг цены
	LastTradeDate         string  `json:"LASTTRADEDATE" csv:"LASTTRADEDATE"`                 // Последний торговый день
	LastDelDate           string  `json:"LASTDELDATE" csv:"LASTDELDATE"`                     // День исполнения
	PrevPrice             float64 `json:"PREVPRICE" csv:"PREVPRICE"`                         // Цена последней сделки предыдущего торгового дня
	StepPrice             float64 `json:"STEPPRICE" csv:"STEPPRICE"`                         // Стоимость шага цены
	LatName               string  `json:"LATNAME" csv:"LATNAME"`                             // Наименование финансового инструмента на английском языке
	ImNp                  float64 `json:"IMNP" csv:"IMNP"`                                   // ГО по непокрытой позиции на первом уровне лимита концентрации
	ImP                   float64 `json:"IMP" csv:"IMP"`                                     // ГО по синтетической позиции на первом уровне лимита концентрации
	ImBuy                 float64 `json:"IMBUY" csv:"IMBUY"`                                 // ГО под покупку опциона на первом уровне лимита концентрации
	ImTime                string  `json:"IMTIME" csv:"IMTIME"`                               // Данные по ГО на (datetime)
	BuySellFee            float64 `json:"BUYSELLFEE" csv:"BUYSELLFEE"`                       // Сбор за регистрацию сделки
	ScalperFee            float64 `json:"SCALPERFEE" csv:"SCALPERFEE"`                       // Сбор за скальперскую сделку
	NegotiatedFee         float64 `json:"NEGOTIATEDFEE" csv:"NEGOTIATEDFEE"`                 // Сбор за адресную сделку
	ExerciseFee           float64 `json:"EXERCISEFEE" csv:"EXERCISEFEE"`                     // Клиринговая комиссия за исполнение контракта
	AssetCode             string  `json:"ASSETCODE" csv:ASSETCODE"`                          // Код базового актива
	UnderlyingAsset       string  `json:"UNDERLYINGASSET" csv:"UNDERLYINGASSET"`             // Базовый актив
	UnderlyingType        string  `json:"UNDERLYINGTYPE" csv:"UNDERLYINGTYPE"`               // Тип базового актива (F - фьючерс, S - акции)
	UnderlyingSettlePrice float64 `json:"UNDERLYINGSETTLEPRICE" csv:"UNDERLYINGSETTLEPRICE"` // Котировка базового актива
}

type OrderBook

type OrderBook struct {
	Bids       PriceVolumeSlice `json:"bids"` // Биды
	Asks       PriceVolumeSlice `json:"asks"` // Аски
	SEQNUM     int64            `json:"SEQNUM"`
	UpdateTime string           `json:"UPDATETIME"`
	Decimals   int32            `json:"DECIMALS"`
}

OrderBook биржевой стакан

func NewOrderBook

func NewOrderBook(in []OrderBookData) OrderBook

NewOrderBook соберем стакан из входящего OrderBookData

func (OrderBook) BestAsk

func (b OrderBook) BestAsk() (PriceVolume, bool)

func (OrderBook) BestBid

func (b OrderBook) BestBid() (PriceVolume, bool)

func (OrderBook) LastTime

func (b OrderBook) LastTime() time.Time

LastTime время обновление стакана

func (OrderBook) String

func (b OrderBook) String() string

type OrderBookData

type OrderBookData struct {
	SecID      string  `json:"SECID"`
	BoardID    string  `json:"BOARDID"`
	BuySell    string  `json:"BUYSELL"`
	Price      float64 `json:"PRICE"`
	Quantity   int32   `json:"QUANTITY"`
	SEQNUM     int64   `json:"SEQNUM"`
	UpdateTime string  `json:"UPDATETIME"`
	Decimals   int32   `json:"DECIMALS"`
}

OrderBookData структура стакана которая приходил с сервера

type OrderBookService

type OrderBookService struct {
	// contains filtered or unexported fields
}

OrderBookService сервис для получения стакана

func (OrderBookService) Do

func (s OrderBookService) Do() (OrderBook, error)

Do выполняет загрузку стакана запрос должен выполнятся только с авторизацией

func (OrderBookService) URL

func (s OrderBookService) URL() string

test

type PriceVolume

type PriceVolume struct {
	Price  float64 // цена
	Volume int32   // объем
}

func (PriceVolume) String

func (p PriceVolume) String() string

type PriceVolumeSlice

type PriceVolumeSlice []PriceVolume

PriceVolumeSlice Биды Аски

func (PriceVolumeSlice) First

func (slice PriceVolumeSlice) First() (PriceVolume, bool)

First вернем первый элемент

func (PriceVolumeSlice) Last

func (slice PriceVolumeSlice) Last(position int) (PriceVolume, bool)

Last вернем заданный элемент

func (PriceVolumeSlice) Len

func (slice PriceVolumeSlice) Len() int

func (PriceVolumeSlice) SumDepth

func (slice PriceVolumeSlice) SumDepth() int32

SumDepth вернем объем стакана

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 Response

type Response struct {
	Candles struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"candles"`
	MarketData struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"marketdata"`
	Securities struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"securities"`
	OrderBook struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"orderbook"`
	History struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"history"`
	Data struct {
		Columns []string        `json:"columns"`
		Data    [][]interface{} `json:"data"`
	} `json:"data"`
}

Response структура ответа от iss

type StockData

type StockData struct {
	SecID                          string  `json:"SECID"`                          // Код инструмента
	BoardID                        string  `json:"BOARDID"`                        // Код режима
	Bid                            float64 `json:"BID"`                            // Лучшая котировка на покупку
	BidDepth                       string  `json:"BIDDEPTH"`                       // Лотов на покупку по лучшей  = null
	Offer                          float64 `json:"OFFER"`                          // Лучшая котировка на продажу
	OfferDepth                     string  `json:"OFFERDEPTH"`                     // Лотов на продажу по лучшей  = null
	Spread                         float64 `json:"SPREAD"`                         // Разница между лучшей котировкой на продажу и покупку (спред), руб
	BidDeptht                      int     `json:"BIDDEPTHT"`                      // объем всех заявок на покупку в очереди Торговой Системы, выраженный в лотах
	OfferDeptht                    int     `json:"OFFERDEPTHT"`                    // Объем всех заявок на продажу в очереди Торговой Системы, выраженный в лотах
	Open                           float64 `json:"OPEN"`                           // Цена первой сделки
	Low                            float64 `json:"LOW"`                            // Минимальная цена сделки
	High                           float64 `json:"HIGH"`                           // Максимальная цена сделки
	Last                           float64 `json:"LAST"`                           // Цена последней сделки
	LastChange                     float64 `json:"LASTCHANGE"`                     // Изменение цены последней сделки к цене предыдущей сделки, рублей
	LastChangePrcnt                float64 `json:"LASTCHANGEPRCNT"`                // Изменение цены последней сделки к цене предыдущей сделки, %
	QTY                            int     `json:"QTY"`                            // Объем последней сделки, в лотах
	Value                          float64 `json:"VALUE"`                          // Объем последней сделки, в руб
	Value_USD                      float64 `json:"VALUE_USD"`                      // Объем последней сделки, дол. США
	WapRrice                       float64 `json:"WAPRICE"`                        // Средневзвешенная цен
	LastCNGToLastWaPrice           float64 `json:"LASTCNGTOLASTWAPRICE"`           // Изменение цены последней сделки к средневзвешенной цене, рублей
	WapToPrevWaPricePrcnt          float64 `json:"WAPTOPREVWAPRICEPRCNT"`          // Изменение средневзвешенной цены относительно средневзвешенной цены предыдущего торгового дня, %
	WapToPrevWaPrice               float64 `json:"WAPTOPREVWAPRICE"`               // Изменение средневзвешенной цены к средневзвешенной цене предыдущего торгового дня, рублей
	ClosePrice                     float64 `json:"CLOSEPRICE"`                     // Цена послеторгового периода
	MarketPriceToday               float64 `json:"MARKETPRICETODAY"`               // Рыночная цена по результатам торгов сегодняшнего дня, за одну ценную бумагу
	MarkeTPrice                    float64 `json:"MARKETPRICE"`                    // Рыночная цена предыдущего дня
	LastToPrevPrice                float64 `json:"LASTTOPREVPRICE"`                // Изменение цены последней сделки к последней цене предыдущего дня, %
	NumTrades                      int     `json:"NUMTRADES"`                      // Количество сделок за торговый день
	VolToDay                       int64   `json:"VOLTODAY"`                       // Объем совершенных сделок, выраженный в единицах ценных бумаг
	ValToDay                       int64   `json:"VALTODAY"`                       // Объем совершенных сделок, в валюте расчетов
	ValToDay_USD                   int64   `json:"VALTODAY_USD"`                   // Объем заключенных сделок, дол. США
	ETFSETTLEPRICE                 float64 `json:"ETFSETTLEPRICE"`                 // Расчетная стоимость акции\/пая иностранного биржевого инвестиционного фонда
	TradingStatus                  string  `json:"TRADINGSTATUS"`                  // Индикатор состояния торговой сессии по инструменту
	UpdateTime                     string  `json:"UPDATETIME"`                     // Время последнего обновления
	LastBid                        float64 `json:"LASTBID"`                        // Лучшая котировка на покупку на момент завершения нормального периода торгов
	LastOffer                      float64 `json:"LASTOFFER"`                      // Лучшая котировка на продажу на момент завершения нормального периода торгов
	LClosePrice                    float64 `json:"LCLOSEPRICE"`                    // Официальная цена закрытия, рассчитываемая по методике ФСФР как средневзвешенная цена сделок за последние 10 минут торговой сессии
	LCurrentPrice                  float64 `json:"LCURRENTPRICE"`                  // Официальная текущая цена, рассчитываемая как средневзвешенная цена сделок заключенных за последние 10 минут
	MarketPrice2                   float64 `json:"MARKETPRICE2"`                   // Рыночная цена 2, рассчитываемая в соответствии с методикой ФСФР
	NumBids                        int     `json:"NUMBIDS"`                        // Количество заявок на покупку в очереди Торговой системы  (undefined)
	NumOffers                      int     `json:"NUMOFFERS"`                      // Количество заявок на продажу в очереди Торговой системы  (undefined)
	Change                         float64 `json:"CHANGE"`                         // Изменение цены последней сделки по отношению к цене последней сделки предыдущего торгового дня
	Time                           string  `json:"TIME"`                           // Время заключения последней сделки
	HighBid                        float64 `json:"HIGHBID"`                        // Наибольшая цена спроса в течение торговой сессии
	LowOffer                       float64 `json:"LOWOFFER"`                       // Наименьшая цена предложения в течение торговой сессии
	PriceMinusPrevWapRice          float64 `json:"PRICEMINUSPREVWAPRICE"`          // Цена последней сделки к оценке предыдущего дня
	OpenPeriodPrice                float64 `json:"OPENPERIODPRICE"`                // Цена предторгового периода
	SeqNum                         int64   `json:"SEQNUM"`                         // номер обновления (служебное поле)
	SysTime                        string  `json:"SYSTIME"`                        // Время загрузки данных системой
	ClosingAuctionPrice            float64 `json:"CLOSINGAUCTIONPRICE"`            // Цена послеторгового аукциона
	ClosingAuctionVolume           float64 `json:"CLOSINGAUCTIONVOLUME"`           // Количество в сделках послеторгового аукциона
	ISSUECapitalization            float64 `json:"ISSUECAPITALIZATION"`            // Текущая капитализация акции
	ETFSETTLECurrency              string  `json:"ETFSETTLECURRENCY"`              // Валюта расчетной стоимости акции\/пая иностранного биржевого инвестиционного фонда
	ValToday_RUR                   int64   `json:"VALTODAY_RUR"`                   // Объем совершенных сделок, рублей
	TradingSession                 string  `json:"TRADINGSESSION"`                 // Торговая сессия
	TrendISSUECapitalization       float64 `json:"TRENDISSUECAPITALIZATION"`       // Изменение капитализации к капитализации предыдущего дня
	ISSUECapitalization_UpdateTime string  `json:"ISSUECAPITALIZATION_UPDATETIME"` // Время обновления капитализации
}

StockData рыночные данные по акциям https://iss.moex.com/iss/engines/stock/markets/shares/securities/columns.json?iss.only=marketdata

type StockInfo

type StockInfo struct {
	SecID               string  `json:"SECID"`               // Код инструмента
	BoardID             string  `json:"BOARDID"`             // Код режима
	ShortName           string  `json:"SHORTNAME"`           // Кратк. наим.
	PrevPrice           float64 `json:"PREVPRICE"`           // Последняя предыдущего дня""Цена последней сделки нормального периода предыдущего торгового дня
	LotSize             int     `json:"LOTSIZE"`             // Размер лота
	FaceValue           float64 `json:"FACEVALUE"`           // Номинал
	Status              string  `json:"STATUS"`              // Статус
	BoardName           string  `json:"BOARDNAME"`           // Режим торгов
	Decimals            int     `json:"DECIMALS"`            // Точность
	SecName             string  `json:"SECNAME"`             // Наименование
	Remarks             string  `json:"REMARKS"`             // Примечание
	MarketCode          string  `json:"MARKETCODE"`          // Рынок, Идентификатор рынка на котором торгуется финансовый инструмент
	InstrID             string  `json:"INSTRID"`             // Группа инструментов
	SectorID            string  `json:"SectorID"`            // Сектор (Устарело)"
	MinStep             float64 `json:"MINSTEP"`             // Мин. шаг цены
	PrevWaPrice         float64 `json:"PREVWAPRICE"`         // Значение оценки (WAPRICE) предыдущего торгового дня
	FaceUnit            string  `json:"FACEUNIT"`            // Код валюты, в которой выражен номинал ценной бумаги
	PrevDate            string  `json:"PREVDATE"`            // Дата предыдущего торгового дня
	IssueSize           int     `json:"ISSUESIZE"`           // Объем выпуска
	ISIN                string  `json:"ISIN"`                // Международный идентификационный код ценной бумаги
	LatName             string  `json:"LATNAME"`             // Наименование финансового инструмента на английском языке
	RegNumber           string  `json:"REGNUMBER"`           // Регистрационный номер
	PrevLegalClosePrice float64 `json:"PREVLEGALCLOSEPRICE"` // Официальная цена закрытия предыдущего дня, рассчитываемая по методике ФСФР
	CurrencyID          string  `json:"CURRENCYID"`          // Валюта расчетов
	SecType             string  `json:"SECTYPE"`             // Тип ценной бумаги
	LisTLevel           int     `json:"LISTLEVEL"`           // Уровень листинга
	SettLeDate          string  `json:"SETTLEDATE"`          // Дата расчетов сделки
}

StockInfo параметры акций https://iss.moex.com/iss/engines/stock/markets/shares/securities/columns.json?iss.only=securities

type Ticker

type Ticker struct {
	SecID       string
	ShortName   string  // Краткое наименование ценной бумаги (Серия срочного инструмента)
	SecName     string  // Наименование финансового инструмента (срочного инструмента)
	Decimals    int     // Точность, знаков после запятой
	MinStep     float64 // Шаг цены
	SecType     string  // Тип инструмента
	AssetCode   string  // Базовый актив
	LastDelDate string  // День исполнения
	// contains filtered or unexported fields
}

func (*Ticker) Candles

func (t *Ticker) Candles(interval int, from, to string) (Candles, error)

Candles получим исторические свечи

func (*Ticker) Data

func (t *Ticker) Data() (TickerData, error)

Data текущие рыночные данные

func (*Ticker) Info

func (t *Ticker) Info() (TickerInfo, error)

Info Информация по тикеру

func (*Ticker) OrderBook

func (t *Ticker) OrderBook() (OrderBook, error)

OrderBook Возвращает текущий стакан лучших цен нужна авторизация

type TickerData

type TickerData struct {
	SecID           string  `json:"SECID"`           // Код инструмента
	BoardID         string  `json:"BOARDID"`         // Код режима
	Bid             float64 `json:"BID"`             // Лучшая котировка на покупку
	BidDepth        float64 `json:"BIDDEPTH"`        // Лотов на покупку по лучшей = null
	Offer           float64 `json:"OFFER"`           // Лучшая котировка на продажу
	OfferDepth      float64 `json:"OFFERDEPTH"`      // Лотов на продажу по лучшей = null
	Spread          float64 `json:"SPREAD"`          // Разница между лучшей котировкой на продажу и покупку (спред), руб
	BidDeptht       int     `json:"biddeptht"`       // Oбъем всех заявок на покупку в очереди Торговой Системы, выраженный в лотах
	OfferDeptht     int     `json:"OFFERDEPTHT"`     // Объем всех заявок на продажу в очереди Торговой Системы, выраженный в лотах
	Open            float64 `json:"OPEN"`            // Цена первой сделки
	Low             float64 `json:"LOW"`             // Минимальная цена сделки
	High            float64 `json:"HIGH"`            // Максимальная цена сделки
	Last            float64 `json:"LAST"`            // Цена последней сделки
	LastChange      float64 `json:"LASTCHANGE"`      // Изменение цены последней сделки к цене предыдущей сделки, рублей
	LastChangePrcnt float64 `json:"LASTCHANGEPRCNT"` // Изменение цены последней сделки к цене предыдущей сделки, %
	QTY             int     `json:"QTY"`             // Объем последней сделки, в лотах
	Value           float64 `json:"VALUE"`           // Объем последней сделки, в руб
	WapRrice        float64 `json:"WAPRICE"`         // Средневзвешенная цен
	NumTrades       int     `json:"NUMTRADES"`       // Количество сделок за торговый день
	VolToDay        int64   `json:"VOLTODAY"`        // Объем совершенных сделок, выраженный в единицах ценных бумаг
	ValToDay        int64   `json:"VALTODAY"`        // Объем совершенных сделок, в валюте расчетов
	OpenPosition    float64 `json:"OPENPOSITION"`    // Открытые позиции, контрактов
	OiChange        int64   `json:"OICHANGE"`        // Изменение открытых позиций к предыдущему закрытию, контр.
	UpdateTime      string  `json:"UPDATETIME"`      // Время последнего обновления
	SysTime         string  `json:"SYSTIME"`         // Время загрузки данных системой
	TradingSession  string  `json:"TRADINGSESSION"`  // Торговая сессия
}

type TickerInfo

type TickerInfo struct {
	SecID         string  `json:"SECID"`         // Код инструмента
	BoardID       string  `json:"BOARDID"`       // Код режима
	ShortName     string  `json:"SHORTNAME"`     // наименование ценной бумаги (Серия срочного инструмента)
	SecName       string  `json:"SECNAME"`       // Наименование финансового инструмента (срочного инструмента)
	Decimals      int     `json:"DECIMALS"`      // Точность
	MinStep       float64 `json:"MINSTEP"`       // Мин. шаг цены
	LotVolume     int     `json:"LOTVOLUME"`     // К-во единиц базового актива в инструменте
	LastTradeDate string  `json:"LASTTRADEDATE"` // Последний торговый день
	LastDelDate   string  `json:"LASTDELDATE"`   // День исполнения
	SecType       string  `json:"SECTYPE"`       // Тип инструмента
	AssetCode     string  `json:"ASSETCODE"`     // Код базового актива
	StepPrice     float64 `json:"STEPPRICE"`     // Стоимость шага цены
	PrevPrice     float64 `json:"PREVPRICE"`     // Цена последней сделки предыдущего торгового дня
	FaceValue     float64 `json:"FACEVALUE"`     // Номинал (акции)
	LisTLevel     int     `json:"LISTLEVEL"`     // Уровень листинга (акции)

}

type TradeStats

type TradeStats struct {
	TradeDate  string  `csv:"tradedate" json:"tradedate"`   // дата сделки
	TradeTime  string  `csv:"tradetime" json:"tradetime"`   // время сделки
	SecID      string  `csv:"secid" json:"secid"`           // код инструмента
	AssetCode  string  `csv:"asset_code" json:"asset_code"` // Код базового актива (для фьючерсов)
	Open       float64 `csv:"pr_open" json:"pr_open"`       // цена открытия
	High       float64 `csv:"pr_high" json:"pr_high"`       // максимальная цена за период
	Low        float64 `csv:"pr_low" json:"pr_low"`         // минимальная цена за период
	Close      float64 `csv:"pr_close" json:"pr_close"`     // последняя цена за период
	Std        float64 `csv:"pr_std" json:"pr_std"`         // стандартное отклонение цены
	Volume     int64   `csv:"vol" json:"vol"`               // объем в лотах
	Value      float64 `csv:"val" json:"val"`               // объем в рублях
	Trades     int64   `csv:"trades" json:"trades"`         // количество сделок
	Vwap       float64 `csv:"pr_vwap" json:pr_vwap"`        // взвешенная средняя цена
	Change     float64 `csv:"pr_change" json:"pr_change"`   // изменение цены за период, %
	TradesBuy  int64   `csv:"trades_b" json:"trades_b"`     // кол-во сделок на покупку
	TradesSell int64   `csv:"trades_s" json:"trades_s"`     // кол-во сделок на продажу
	ValueBuy   float64 `csv:"val_b" json:"val_b"`           // объем покупок в рублях
	ValueSell  float64 `csv:"val_s" json:"val_s"`           // объем продаж в рублях
	VolumeBuy  int64   `csv:"vol_b" json:"vol_b"`           // объем покупок в лотах
	VolumeSell int64   `csv:"vol_s" json:"vol_s"`           // объем продаж в лотах
	Disb       float64 `csv:"disb" json:"disb"`             // соотношение объема покупок и продаж
	VwapBuy    float64 `csv:"pr_vwap_b" json:"pr_vwap_b"`   // средневзвешенная цена покупки
	VwapSell   float64 `csv:"pr_vwap_s" json:"pr_vwap_s"`   // средневзвешенная цена продажи
	OiOpen     int64   `csv:"oi_open" json:"oi_open"`       // ОИ на открытии (для фьючерсов)
	OiHigh     int64   `csv:"oi_high" json:"oi_high"`       // максимальный ОИ (для фьючерсов)
	OiLow      int64   `csv:"oi_low" json:"oi_low"`         // минимальный ОИ (для фьючерсов)
	OiClose    int64   `csv:"oi_close" json:"oi_close"`     // ОИ на закрытии (для фьючерсов)
	SYSTIME    string  `csv:"SYSTIME" json:"SYSTIME"`       // время системы
}

TradeStats

type TradeStatsService

type TradeStatsService struct {
	// contains filtered or unexported fields
}

TradeStatsService сервис для получения супер свечей (TradeStats)

func (*TradeStatsService) Do

func (s *TradeStatsService) Do() ([]TradeStats, error)

Do выполняет выгрузку свечей

func (*TradeStatsService) Next

func (s *TradeStatsService) Next() ([]TradeStats, error)

Next загружает следующую страницу данных Если данных больше нет, то возвращается ошибка EOF TODO что возвращать данные или ссылку?

Directories

Path Synopsis
example

Jump to

Keyboard shortcuts

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