Как получить любой SECCODE по BASE_CONTRACT ?

Страницы: 1
RSS
Как получить любой SECCODE по BASE_CONTRACT ?, В какой таблице идёт привязка между текущим фьючерсным инструментом и базовым активом?
 
1.фьюченые инструменты постоянно меняются, но базовый актив - постоянный.
2.как я установил одному базовому активу может быть присвоено несколько фьючерсов по срокам истечения, например: BR = BRH3, BRG3, BRF3


Вопросы:
1.в какой таблице лежит список базовых активов?
2.какая таблица привязывает базовый актив к фьючерсам?

Хотелось бы получить Любой фьючерс по базовосу активу.
 
Цитата
awkozlov написал:
1.в какой таблице лежит список базовых активов?
В QUIK такой таблицы нет.
Есть только Params в которой все подряд.

Цитата
awkozlov написал:
2.какая таблица привязывает базовый актив к фьючерсам?
У каждого фьючерса в таблице Params есть параметр с обозначением базового актива.


Цитата
awkozlov написал:
Хотелось бы получить Любой фьючерс по базовосу активу.

Единственный вариант, перебрать в цикле все инструменты класса SPBFUT и выбрать из них только нужные.
Получить все инструменты класса SPBFUT можно функцией getClassSecurities
Далее перебираем их в цикле.
По каждому спрашиваем параметры функцией getSecurityInfo, в ней смотрим на код базового актива в параметре base_active_seccode
Если это нужный нам код, то что-то делаем, иначе идем по циклу дальше.
 
Можно сделать иначе:
К примеру есть "привязанный график" к таблице фьючерсов (меняем фьючерс - меняется график). Фьючерс, к примеру, SI-3.23
1. на график кидаем идентификатор
2. по идентификатору получаем "легенду графика" (getCandlesByIndex)
3. обрезаем ' [Price]' у "легенды графика" с помощью string.sub (оставляем только SI-3.23 вместо SI-3.23 Price)
4. перебираем таблицу "securities" ищем совпадение коротких имен
5. если совпадение есть - можно получить class_code, sec_code, min_price_step из таблицы "securities"
6. далее - меняем график, вернётся текущий sec_code графика.
 
Цитата
awkozlov написал:
1.фьюченые инструменты постоянно меняются, но базовый актив - постоянный.
2.как я установил одному базовому активу может быть присвоено несколько фьючерсов по срокам истечения, например: BR = BRH3, BRG3, BRF3


Вопросы:
1.в какой таблице лежит список базовых активов?
2.какая таблица привязывает базовый актив к фьючерсам?

Хотелось бы получить Любой фьючерс по базовосу активу.
Делюсь опытом бесплатно.
-------------------------
Код фьючеса создается из кода базового актива, квартала и интервала.
Правила формирования кода фьючерса найдете на бирже.
Вот по этим правилам можете собрать имя любого фьючерса
Аналогично для опционов.
 
Код базового актива во фьючерсе на сбер - SBRF. А в акциях код SBER. Как правильно для всех фьючерсов на акции найти соответствующие акции?
 
paluke, добрый день.

К сожалению, в данном случае не можем предложить какой-либо алгоритм, кроме описанного ранее.

Для инструмента SRM3 действительно указан базовый актив SBRF - эта информация транслируется из торговой системы биржи.
За более подробной информацией о данном коде базового актива Вы можете обратиться к специалистам Московской биржи.
 
Спецификации коротких кодов фьючерсных и опционных контрактов на срочном рынке

Коды срочных контрактов  состоят из следующих частей:

Коды фьючерсов
CMY

Коды опционов
CPKMY
                                                           
W
     

C – краткий код базисного актива,
P – цена страйк (максимум 6 символов),
К – тип расчетов,
M – месяц исполнения (а также тип для опциона),
Y – год исполнения,
W – признак недельного опциона.

Кодирование базового актива (поле "C")

Группа
контрактов
Код
базисного
актива
(поле "C")
Код
базисного актива
на срочном рынке
Название базисного актива
Индексные контрактыMXMIXИндекс МосБиржи
MMMXIИндекс МосБиржи (мини)
RIRTSИндекс РТС
RMRTSMИндекс РТС (мини)
VIRVIВолатильность российского рынка
HOHOMEИндекс московской недвижимости ДомКлик
OGOGIИндекс МосБиржи нефти и газа
MAMMIИндекс МосБиржи металлов и добычи
FNFNIИндекс МосБиржи финансов
CSCNIИндекс МосБиржи потребительского сектора
RBRGBIИндекс RGBI
Фондовые контрактыAFAFLTПАО "Аэрофлот" (о.а.)
ALALRSАК "АЛРОСА" (ПАО) (о.а.)
CHCHMFПАО "Северсталь" (о.а.)
FSFEESПАО "ФСК ЕЭС" (о.а.)
GZGAZRПАО "Газпром" (о.а.)
GKGMKNПАО ГМК "Норильский Никель" (о.а.)
HYHYDRПАО "РусГидро" (о.а.)
LKLKOHПАО НК "ЛУКОЙЛ" (о.а.)
MNMGNTПАО "Магнит" (о.а.)
MEMOEXПАО Московская Биржа (о.а.)
MTMTSIПАО "МТС" (о.а.)
NMNLMKПАО "НЛМК" (о.а.)
NKNOTKПАО "НОВАТЭК" (о.а.)
RNROSNПАО "НК "Роснефть" (о.а.)
RTRTKMПАО "Ростелеком" (о.а.)
SPSBPRПАО Сбербанк (п.а.)
SRSBRFПАО Сбербанк (о.а.)
SGSNGPПАО "Сургутнефтегаз" (п.а.)
SRSBERПАО Сбербанк (о.а.)
SNSNGRПАО "Сургутнефтегаз" (о.а.)
TTTATNПАО "Татнефть" им. В.Д. Шашина (о.а.)
TNTRNFПАО "Транснефть" (п.а.)
VBVTBRБанк ВТБ (ПАО) (о.а.)
MGMAGNПАО "Магнитогорский металлургический ком­бинат" (о.а.)
PZPLZLПАО "Полюс" (о.а.)
YNYNDFЯндекс Н.В. (о.а.)
AKAFKSАФК Система (о.а.)
IRIRAOПАО "Интер РАО ЕЭС" (о.а.)
POPOLYПолиметалл Интернэшнл (о.а.)
PIPIKKПИК СЗ (о.а.)
SESPBEПАО "СПБ Биржа"
RLRUALМКПАО "Объединённая Компания "РУСАЛ"
PHPHORПАО "ФосАгро"
DYDSKYПАО "Детский мир"
SSSMLTПАО "Группа компаний "Самолет"
MCMTLRПАО "Мечел"
RERSTIПАО "Российские сети"
SOSIBNПАО "Газпром нефть"
TITCSIГДР ТиСиЭс Груп Холдинг ПиЭлСи
FVFIVEГДР Икс 5 Ритейл Груп Н.В
MLMAILГДР VK Company Limited
OZOZONАДР Озон Холдингс Пи Эл Си
SFSPYFSPDR S&P 500 ETF Trust
NANASDInvesco QQQ ETF Trust Unit Series 1
PSPOSIПАО Группа Позитив
SXSTOXiShares Core EURO STOXX 50 UCITS ETF EUR (Dist)
HSHANGTracker Fund of Hong Kong ETF
DXDAXiShares Core DAX UCITS ETF (DE)
N2NIKKiShares Core Nikkei 225 ETF
Процентные контрактыRRRUONставка RUONIA
MF1MFRставка RUSFAR
Валютные контрактыCRCNYкурс китайский юань – российский рубль
EuEuкурс евро – российский рубль
SiSiкурс доллар США – российский рубль
USDRUBFUSDRUBFкурс доллара США - российский рубль
EURRUBFEURRUBFкурс евро - российский рубль
CNYRUBFCNYRUBFкурс китайский юань – российский рубль
TYTRYкурс турецкая лира – российский рубль
HKHKDкурс гонконгский доллар – российский рубль
EDEDкурс евро – доллар США
AUAUDUкурс австралийский доллар – доллар США
GUGBPUкурс фунт стерлингов – доллар США
CAUCADкурс доллар США - канадский доллар
CFUCHFкурс доллар США – швейцарский франк
JPUJPYкурс доллар США – японская йена
TRUTRYкурс доллар США – турецкая лира
UCUCNYкурс доллар США – китайский юань
ECECADкурс евро – канадский доллар
EGEGBPкурс евро – фунт стерлингов
EJEJPYкурс евро – японская йена
Товарные контрактыBRBRнефть BRENT
GDGOLDзолото
PDPLDпалладий
PTPLTплатина
SVSILVсеребро
SASUGRсахар-сырец
SLSLVсеребро (поставочное)
AMALMNалюминий
CLCLнефть сорта Light Sweet Crude Oil
CoCoмедь
GOGLDзолото (поставочный)
NlNlникель
ZnZnцинк
NGNGприродный газ
WHWH4пшеница
W4WHEATИндекс пшеницы

Кодирование базисного актива для опционов на ценные бумаги (поле "C")

Группа
контрактов
Код
базисного
актива
(поле "C")
Код
базисного актива
на срочном рынке
Название базисного актива
Фондовые контрактыALRSALАК "АЛРОСА" (ПАО) (о.а.)
CHMFCHПАО "Северсталь" (о.а.)
FIVEFVГДР Икс 5 Ритейл Груп Н.В
GAZPGZПАО "Газпром" (о.а.)
GMKNGKПАО ГМК "Норильский Никель" (о.а.)
IRAOIRПАО "Интер РАО ЕЭС" (о.а.)
LKOHLKПАО НК "ЛУКОЙЛ" (о.а.)
MAGNMGПАО "Магнитогорский металлургический ком¬бинат" (о.а.)
MGNTMNПАО "Магнит" (о.а.)
MTLRMCПАО "Мечел"
NLMKNMПАО "НЛМК" (о.а.)
NVTKNKПАО "НОВАТЭК" (о.а.)
OZONOZАДР Озон Холдингс Пи Эл Си
PIKKPIПИК СЗ (о.а.)
PLZLPZПАО "Полюс" (о.а.)
POLYPOПолиметалл Интернэшнл (о.а.)
ROSNRNПАО "НК "Роснефть" (о.а.)
RUALRLМКПАО "Объединённая Компания "РУСАЛ"
SBERSRПАО Сбербанк (о.а.)
SBERPSPПАО Сбербанк (п.а.)
SMLTSSПАО "Группа компаний "Самолет"
SNGSSNПАО "Сургутнефтегаз" (о.а.)
TCSGTIГДР ТиСиЭс Груп Холдинг ПиЭлСи
VKCOVKГДР VK Company Limited
VTBRVBБанк ВТБ (ПАО) (о.а.)
YNDXYNЯндекс Н.В. (о.а.)
TATNTTПАО "Татнефть" им. В.Д. Шашина (о.а.)
MTSSMTПАО "МТС" (о.а.)
POSIPSПАО Группа Позитив
MOEXMEПАО Московская Биржа (о.а.)

Кодирование цены страйк для опционов (поле "P")

Для опционов на фьючерсные контракты в поле "цена страйк" указывается цена базисного актива (цена фьючерсного контракта). В свою очередь, цена фьючерсного контракта – это цена пакета акций, входящих в один контракт.

Для опционов на акции в поле "цена страйк" указывается цена за единицу базисного актива.

Кодирование типа расчетов (поле "К")

Символ
в коротком коде
Базовый активКатегорияТип расчетов
AФьючерсАмериканскийУплата премии
BФьючерсАмериканскийМаржируемый
САкцияЕвропейскийУплата премии

Кодирование месяца исполнения (поле "M")

Для фьючерсов:
МесяцКод фьючерса
ЯнварьF
ФевральG
МартH
АпрельJ
МайK
ИюньM
ИюльN
АвгустQ
СентябрьU
ОктябрьV
НоябрьX
ДекабрьZ
Для опционов:
МесяцКод опциона КОЛЛКод опциона ПУТ
ЯнварьAM
ФевральBN
МартCO
АпрельDP
МайEQ
ИюньFR
ИюльGS
АвгустHT
СентябрьIU
ОктябрьJV
НоябрьKW
ДекабрьLX

Кодирование года исполнения (поле "Y")

Год исполнения фьючерса и опциона кодируется одной цифрой от 0 до 9.
2 – 2022 год,
3 – 2023 год,
4 – 2024 год.

Кодирование признака недельного опциона (поле "W")

Код поляОпционы на фьючерсные контракты
Неделя
Опционы на ценные бумаги
Неделя
nullМесячный или квартальный опционМесячный или квартальный опцион
AНедельный опцион с экспирацией в 1-й четверг месяцаНедельный опцион с экспирацией в 1-ю среду месяца
BНедельный опцион с экспирацией во 2-ой четверг месяцаНедельный опцион с экспирацией во 2-ую среду месяца
СНедельный опцион с экспирацией в 3-й четверг месяцаНедельный опцион с экспирацией в 3-ую среду месяца
DНедельный опцион с экспирацией в 4-ый четверг месяцаНедельный опцион с экспирацией в 4-ую среду месяца
EНедельный опцион с экспирацией в 5-ый четверг месяцаНедельный опцион с экспирацией в 5-ую среду месяца

Алгоритм определения полей Y, M и W для недельного опциона на фьючерсные контракты:

  1. Рассматривается четверг недели, на которую приходится день экспирации
  2. Y определяется по году этого четверга
  3. M определяется по месяцу этого четверга
  4. W определяется:
    • по порядковому номеру этого четверга в месяце (для опционов на фьючерсы на индексы и валютные пары) Пример 1
    • по порядковому номеру четверга в месяце, которому предшествует последний торговый день опционов (для опционов на фьючерсы на акции) Пример 2

Пример 1:
Недельный опцион call на индекс RTS со страйком 130000 исполняется 30 декабря 2019 года в понедельник. Четверг на этой неделе (2 января) - неторговый день. Поэтому день исполнения был перенесен на ближайший предшествующий торговый день.
Короткий код: RI130000BA0A, так как четверг недели экспирации относится к январю 2020 года, и это первый четверг в месяц.
Полный код: RTS-1.20M301219CA 130000

Пример 2:
Недельный опцион call на SBRF со страйком 20 000 с датой исполнения 31.03.2021 в среду.
Система кодирует такую серию, как апрельскую, т.к. четверг данной недели приходится на апрель.
Код месяца: D
Код недели: A (1-неделя месяца). Ближайший к дате исполнения 31.03.2021 четверг - 01.04.2021, т.е. уже в апреле
Короткий код: SR20000BD1A
Полный код: SBRF-4.21M310321CA 20000

На Срочном рынке Московской Биржи предусмотрена возможность заведения опционных контрактов с нулевыми и отрицательными страйками. Рассмотрим пример их кодирования для месячного опциона call на июльский фьючерс на нефть марки Brent с исполнением 25 июня 2020 г. со страйком -10.
Короткий код контракта: BR-10BF0
Полный код контракта: BR-7.20M250620СA -10
В случае нулевого страйка (0) для аналогичного контракта:
Короткий код контракта: BR0BF0
Полный код контракта: BR-7.20M250620СA 0

Алгоритм определения полей Y, M и W для недельного опциона на ценные бумаги:

  1. Рассматривается среда недели, на которую приходится день экспирации
  2. Y определяется по году этой среды
  3. M определяется по месяцу этой среды
  4. W определяется по порядковому номеру этой среды в месяце Пример 3

Пример 3:
Недельный опцион call на акцию Газпрома со страйком 300 исполняется 27 июля 2022 года в среду (четвертая среда месяца экспирации).
Короткий код: GZ300CG2DПолный код: GAZPP220722CE 300

 
Цитата
Anton Belonogov написал:
Для инструмента SRM3 действительно указан базовый актив SBRF - эта информация транслируется из торговой системы биржи.

А ещё из торговой системы транслируется справочник базовых контрактов для инструментов:




Цитата
Anton Belonogov написал:
За более подробной информацией о данном коде базового актива Вы можете обратиться к специалистам Московской биржи.
Anton Belonogov, я это сделал за вас:




 
А, это оказывается уже обсуждали: https://forum.quik.ru/forum10/topic5558/
Ладно, их не так много, придется список руками вбить.
 
  ACTIVE_BASE = getParamEx("SPBFUT", "SiM3", "OPTIONBASE").param_image -- Базовый актив (фьючерс) => Si
 
Цитата
Дмитрий Бланк написал:
ACTIVE_BASE = getParamEx("SPBFUT", "SiM3", "OPTIONBASE").param_image -- Базовый актив (фьючерс) => Si
это не совсем то конечно что нужно вам, но думаю можно поработать с циклами
 
а так не проще будет?
на график ставим метку, получаем sec_code напрямую с графика без всяких там поисков базового контракта:

function GetParameters(idgraf)
-- Получаем данные по легенде графика
-- Получаем sec_code с графика цены
-- возвращаем string class_code, string sec_code, table t (таблица OHLCVT последнего бара (1ый справа)), price_step
-- использование:
--[[
local classcode, seccode, bars, price_step = GetParameters(idgraf)
if classcode == nil then
msg("Проверить метку " .. tostring(idgraf) .. " на графике") -- todo
OnStop()
return
else
msg("classcode " .. tostring(classcode))
msg("seccode " .. tostring(seccode))
msg("price_step " .. tostring(price_step))
end
--]]
---

local lastbar = getNumCandles(idgraf) -- получаем номер последнего бара (1ый справа)
local t, _, legend = getCandlesByIndex(idgraf, 0, lastbar - 1, 1) -- получаем данные бара (таблицу OHLCVT, легенду графика). lastbar - 1 - потому что считаем от 0 до n - 1.

legend = string.sub(legend, 1, -9) -- обрезка " [Price]" в легенде графика

local txt = "securities" -- перебираем таблицу с инструментами
local n = getNumberOf(txt) -- получаем количество инструментов
for i = 0, n - 1 do
local data = getItem(txt, i)
if data.short_name == legend then
-- data.class_code -> classcode
-- data.sec_code -> seccode
-- t[0] -> OHLCVT (.open, .close, .high, .volume, . datetime --{})
-- data.min_price_step -> price_step

return data.class_code, data.sec_code, t[0], removeZero(data.min_price_step)
end
end
return nil
end

function msg(txt) -- сообщение
-- ф-ция вывода сообщений
-- данные приводятся к строке, выводится сообщение с треугольником '!'
---
   message(tostring(txt), 2)
end
Страницы: 1
Читают тему
Наверх