gomoex

package module
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2022 License: Unlicense Imports: 11 Imported by: 0

README

Gomoex

Go test Go Report Card codecov Go Reference

Реализация части запросов к MOEX Informational & Statistical Server.

Основные возможности

Реализованы запросы получения:

  • списка торгуемых инструментов
  • интервалов дат с доступными свечками и историческими котировками
  • свечек и исторических котировок
  • дивидендов

При необходимости перечень запросов может быть расширен. Документация.

Пример использования

Получение дневных свечек для AKRN:

package main

import (
	"context"
	"fmt"
	"github.com/WLM1ke/gomoex"
	"net/http"
)

func main() {
	cl := gomoex.NewISSClient(http.DefaultClient)
	rows, _ := cl.MarketCandles(context.Background(), gomoex.EngineStock, gomoex.MarketShares, "AKRN", "2021-03-01", "2021-03-11", gomoex.IntervalDay)
	for _, row := range rows {
		fmt.Printf("%+v\n", row)
	}
}

Результат:

{Begin:2021-03-01 00:00:00 +0000 UTC End:2021-03-01 23:59:59 +0000 UTC Open:6006 Close:5992 High:6018 Low:5990 Value:5.138208e+06 Volume:856}
{Begin:2021-03-02 00:00:00 +0000 UTC End:2021-03-02 23:59:59 +0000 UTC Open:6006 Close:6032 High:6046 Low:5990 Value:1.2557102e+07 Volume:2087}
{Begin:2021-03-03 00:00:00 +0000 UTC End:2021-03-03 23:59:59 +0000 UTC Open:6048 Close:6000 High:6048 Low:5990 Value:7.280306e+06 Volume:1209}
{Begin:2021-03-04 00:00:00 +0000 UTC End:2021-03-04 23:59:59 +0000 UTC Open:6000 Close:5982 High:6008 Low:5964 Value:8.168796e+06 Volume:1365}
{Begin:2021-03-05 00:00:00 +0000 UTC End:2021-03-05 23:59:59 +0000 UTC Open:5968 Close:5996 High:6010 Low:5968 Value:4.505082e+06 Volume:752}
{Begin:2021-03-09 00:00:00 +0000 UTC End:2021-03-09 23:59:59 +0000 UTC Open:6018 Close:6010 High:6018 Low:5960 Value:9.577078e+06 Volume:1597}
{Begin:2021-03-10 00:00:00 +0000 UTC End:2021-03-10 23:59:59 +0000 UTC Open:6008 Close:6004 High:6010 Low:5982 Value:5.505522e+06 Volume:918}
{Begin:2021-03-11 00:00:00 +0000 UTC End:2021-03-11 23:59:59 +0000 UTC Open:6006 Close:6000 High:6010 Low:5992 Value:3.228186e+06 Volume:538}

Documentation

Overview

Package gomoex реализует часть запросов к MOEX ISS

Официальный справочник запросов https://iss.moex.com/iss/reference/

Официальный справочник разработчика https://fs.moex.com/files/6523

Index

Examples

Constants

View Source
const (
	IntervalMin1   = 1
	IntervalMin10  = 10
	IntervalHour   = 60
	IntervalDay    = 24
	IntervalWeek   = 7
	IntervalMonth  = 31
	IntervalQuoter = 4
)

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

View Source
const (
	EngineStock    = "stock"    // Фондовый рынок и рынок депозитов
	EngineCurrency = "currency" // Валютный рынок
	EngineFutures  = "futures"  // Срочный рынок

	MarketIndex         = "index"         // Индексы фондового рынка
	MarketShares        = "shares"        // Рынок акций
	MarketBonds         = "bonds"         // Рынок облигаций
	MarketForeignShares = "foreignshares" // Иностранные ценные бумаги
	MarketSelt          = "selt"          // Биржевые сделки с ЦК
	MarketFutures       = "futures"       // Поставочные фьючерсы
	MarketFORTS         = "forts"         // ФОРТС
	MarketOptions       = "options"       // Опционы ФОРТС

	BoardTQBR = "TQBR" // Т+: Акции и ДР — безадресные сделки
	BoardTQTF = "TQTF" // Т+: ETF — безадресные сделки
	BoardFQBR = "FQBR" // Т+ Иностранные Акции и ДР — безадресные сделки
)

Ключевые плейсхолдеры запросов.

Полный справочник https://iss.moex.com/iss/index.json

Variables

View Source
var ErrISSClient = errors.New("iss client error")

ErrISSClient - базовая ошибка при работе с MOEX ISS.

Functions

This section is empty.

Types

type Candle

type Candle struct {
	Begin  time.Time
	End    time.Time
	Open   float64
	Close  float64
	High   float64
	Low    float64
	Value  float64
	Volume int
}

Candle представляет исторические котировки в формате OCHL + объем торгов в деньгах и штуках.

type CandleBorder

type CandleBorder struct {
	Begin    time.Time
	End      time.Time
	Interval int
}

CandleBorder содержит информацию о диапазоне доступных дат для свечек заданного интервала.

type Date

type Date struct {
	From time.Time
	Till time.Time
}

Date содержит информацию о диапазоне доступных торговых дат.

type Dividend

type Dividend struct {
	Ticker   string
	ISIN     string
	Date     time.Time
	Dividend float64
	Currency string
}

Dividend содержит информацию дате закрытия реестра, дивиденде и валюте.

type ISSClient

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

ISSClient клиент для осуществления запросов к MOEX ISS.

Example

nolint: lll

package main

import (
	"context"
	"fmt"
	"net/http"

	"github.com/WLM1ke/gomoex"
)

func main() {
	cl := gomoex.NewISSClient(http.DefaultClient)
	rows, _ := cl.MarketCandles(
		context.Background(),
		gomoex.EngineStock,
		gomoex.MarketShares,
		"AKRN",
		"2021-03-01",
		"2021-03-11",
		gomoex.IntervalDay,
	)

	for _, row := range rows {
		fmt.Printf("%+v\n", row)
	}
}
Output:

{Begin:2021-03-01 00:00:00 +0000 UTC End:2021-03-01 23:59:59 +0000 UTC Open:6006 Close:5992 High:6018 Low:5990 Value:5.138208e+06 Volume:856}
{Begin:2021-03-02 00:00:00 +0000 UTC End:2021-03-02 23:59:59 +0000 UTC Open:6006 Close:6032 High:6046 Low:5990 Value:1.2557102e+07 Volume:2087}
{Begin:2021-03-03 00:00:00 +0000 UTC End:2021-03-03 23:59:59 +0000 UTC Open:6048 Close:6000 High:6048 Low:5990 Value:7.280306e+06 Volume:1209}
{Begin:2021-03-04 00:00:00 +0000 UTC End:2021-03-04 23:59:59 +0000 UTC Open:6000 Close:5982 High:6008 Low:5964 Value:8.168796e+06 Volume:1365}
{Begin:2021-03-05 00:00:00 +0000 UTC End:2021-03-05 23:59:59 +0000 UTC Open:5968 Close:5996 High:6010 Low:5968 Value:4.505082e+06 Volume:752}
{Begin:2021-03-09 00:00:00 +0000 UTC End:2021-03-09 23:59:59 +0000 UTC Open:6018 Close:6010 High:6018 Low:5960 Value:9.577078e+06 Volume:1597}
{Begin:2021-03-10 00:00:00 +0000 UTC End:2021-03-10 23:59:59 +0000 UTC Open:6008 Close:6004 High:6010 Low:5982 Value:5.505522e+06 Volume:918}
{Begin:2021-03-11 00:00:00 +0000 UTC End:2021-03-11 23:59:59 +0000 UTC Open:6006 Close:6000 High:6010 Low:5992 Value:3.228186e+06 Volume:538}

func NewISSClient

func NewISSClient(client *http.Client) *ISSClient

NewISSClient создает клиент для осуществления запросов к MOEX ISS.

func (*ISSClient) BoardSecurities

func (iss *ISSClient) BoardSecurities(ctx context.Context, engine, market, board string) (table []Security, err error)

BoardSecurities получает таблицу с торгуемыми бумагами в данном режиме торгов.

Описание запроса - https://iss.moex.com/iss/reference/32

func (*ISSClient) Dividends

func (iss *ISSClient) Dividends(ctx context.Context, security string) (table []Dividend, err error)

Dividends получает таблицу с дивидендами.

Запрос не отражен в официальном справочнике. По многим инструментам дивиденды отсутствуют или отражены не полностью. Корректная информация содержится в основном только по наиболее ликвидным бумагам.

func (*ISSClient) MarketCandleBorders

func (iss *ISSClient) MarketCandleBorders(
	ctx context.Context,
	engine,
	market,
	security string,
) (table []CandleBorder, err error)

MarketCandleBorders получает таблицу с периодами дат рассчитанных свечей для разных по размеру свечек.

Описание запроса - https://iss.moex.com/iss/reference/156

func (*ISSClient) MarketCandles

func (iss *ISSClient) MarketCandles(
	ctx context.Context,
	engine, market, security, from, till string,
	interval int,
) ([]Candle, error)

MarketCandles свечки данного инструмента и интервала свечки для основного режима данного рынка.

По сравнению со свечками исторические котировки обычно доступны за больший период, но имеются только дневные данные. Даты в формате YYYY-MM-DD или пустая строка для получения информации с начала или до конца доступного интервала дат. Последняя свечка во время торгов может содержать неполную информацию.

Описание запроса - https://iss.moex.com/iss/reference/155

func (*ISSClient) MarketDates

func (iss *ISSClient) MarketDates(ctx context.Context, engine, market string) (table []Date, err error)

MarketDates получает таблицу с диапазоном дат с доступными данными для данного рынка.

Описание запроса - https://iss.moex.com/iss/reference/83

func (*ISSClient) MarketHistory

func (iss *ISSClient) MarketHistory(
	ctx context.Context,
	engine,
	market,
	security,
	from,
	till string,
) (table []Quote, err error)

MarketHistory исторические котировки данного инструмента для всех торговых режимов для данного рынка.

По сравнению со свечками обычно доступны за больший период, но имеются только дневные данные. Даты в формате YYYY-MM-DD или пустая строка для получения информации с начала или до конца доступного интервала дат.

Описание запроса - https://iss.moex.com/iss/reference/63

type Quote

type Quote struct {
	Date   time.Time
	Open   float64
	Close  float64
	High   float64
	Low    float64
	Value  float64
	Volume int
}

Quote представляет исторические дневные котировки в формате OCHL + объем торгов в деньгах и штуках.

type Security

type Security struct {
	Ticker     string
	LotSize    int
	ISIN       string
	Board      string
	Type       string
	Instrument string
}

Security содержит информацию о ценной бумаге.

Jump to

Keyboard shortcuts

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