Пользователь (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как получить любой SECCODE по BASE_CONTRACT ?, В какой таблице идёт привязка между текущим фьючерсным инструментом и базовым активом?
 
а так не проще будет?
на график ставим метку, получаем 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
Как получить любой SECCODE по BASE_CONTRACT ?, В какой таблице идёт привязка между текущим фьючерсным инструментом и базовым активом?
 
Можно сделать иначе:
К примеру есть "привязанный график" к таблице фьючерсов (меняем фьючерс - меняется график). Фьючерс, к примеру, 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 графика.
Страницы: 1
Наверх