Использование getParamEx для облигаций

Страницы: 1
RSS
Использование getParamEx для облигаций, Получение данных по облигациям из таблицы Текущих торгов
 
Добрый вечер, камрады,

Пытаюсь использовать getParamEx для облигаций,
но похоже не понял, что нужно ставить в параметр SECCODE.

Попытка поставить туда ISIN облиги ничего не даёт.

В качестве CLASSCODE я перепробовал:
TQOB
TQOS
TQNO
PSOB
PSNO

Где брать SECCODE и CLASSCODE для облигаций, подскажите плиз?

И вообще - правильно ли я делаю?
Код:
Код
stopped = false

function OnStop(s)
  stopped = true
end

function main()
  t = getParamEx("TQOB", "RU000A100HE1", "LONGNAME")
  if not t then
    message("error!", 3)
    return
  end

    message("type="..t.param_type.."\nvalue="..t.param_value.."\nimage="..t.param_image.."\nresult="..t.result)
  

  sleep(5000)
end
 
Попробуйте SECCODE - TQCB
 
Vitalii Savinov, добрый день.

Функция getParamEx() принимает на вход 3 параметра: class_code (код класса), sec_code (код инструмента), param_name (наименование параметра из Таблицы текущих торгов).

Посмотреть код класса и код инструмента можно в Рабочем месте QUIK, открыв окно информации об инструменте (ПКМ по интересующему инструменту в Таблице текущих торгов / Информация об инструменте, или сочетание Alt+I).
 
Цитата
Дмитрий написал:
Попробуйте SECCODE - TQCB
Спасибо - помогло.
 
Цитата
Anton Belonogov написал:
Vitalii Savinov, добрый день.

Функция getParamEx() принимает на вход 3 параметра: class_code ( код класса ), sec_code ( код инструмента ), param_name (наименование параметра из Таблицы текущих торгов).

Посмотреть код класса и код инструмента можно в Рабочем месте QUIK, открыв окно информации об инструменте ( ПКМ  по интересующему инструменту в Таблице текущих торгов  /   И  нформация об инструменте , или сочетание  Alt+I ).
Спасибо - всё получилось.

Это хорошо, что код инструмента совпадает с ISIN.
Это правильно.
 
Цитата
Vitalii Savinov написал:
Цитата
Anton Belonogov написал:
Vitalii Savinov , добрый день.

Функция getParamEx() принимает на вход 3 параметра: class_code ( код класса ), sec_code ( код инструмента ), param_name (наименование параметра из Таблицы текущих торгов).

Посмотреть код класса и код инструмента можно в Рабочем месте QUIK, открыв окно информации об инструменте ( ПКМ  по интересующему инструменту в Таблице текущих торгов  /   И  нформация об инструменте , или сочетание  Alt+I ).
Спасибо - всё получилось.

Это хорошо, что код инструмента совпадает с ISIN.
Это правильно.
К сожалению, для ОФЗ это не так :(((

ISIN и код инструмента не совпадают!
(ну как так-то?)

А как можно получить коды инструмента для ОФЗ списком?
Или судьба моя вручную их из квика выковыривать по одному?
 
Vitalii Savinov, добрый день.

С помощью функции getItem(STRING TableName, NUMBER Index) можно обратиться к произвольной таблицы Рабочего места QUIK и получить информацию о данных из строки с номером  «Index» из таблицы с именем «TableName».

Для решения описанной Вами задачи необходимо обратиться к таблице "securities" и получить коды для инструментов из интересующего класса (например, TQCB).
Код может выглядеть так (с записью кодов инструментов в .txt-файл):

Код
sec = ""

for i = 0, getNumberOf("securities") - 1 do
   if getItem("securities", i).class_code == "TQCB" then
      sec = sec .. getItem("securities", i).code .. "\n"
   end
end

f = io.open("tqcb.txt", "w")
f:write(sec)
f:close()

Более подробная информация о функциях для обращения к данных таблиц Рабочего места QUIK и структурах данных представлена Руководстве пользователя QLua.

 
Цитата
Anton Belonogov написал:
Vitalii Savinov, добрый день.

С помощью функции  getItem(STRING TableName, NUMBER Index)  можно обратиться к произвольной таблицы Рабочего места QUIK и получить информацию о данных из строки с номером  «Index» из таблицы с именем «TableName».

Для решения описанной Вами задачи необходимо обратиться к таблице "securities" и получить коды для инструментов из интересующего класса (например, TQCB).
Код может выглядеть так (с записью кодов инструментов в .txt-файл):

Код
  sec  =   "" 

 for  i  =   0 ,  getNumberOf ( "securities" )  -   1   do 
    if   getItem ( "securities" , i).class_code  =  =   "TQCB"   then 
      sec  =  sec  ..   getItem ( "securities" , i).code  ..   "\n" 
    end 
 end 

f  =   io.open ( "tqcb.txt" ,  "w" )
f:write(sec)
f:close()  
     Более подробная информация о функциях для обращения к данных таблиц Рабочего места QUIK и структурах данных представлена Руководстве пользователя QLua.
Спасибо!
 
Цитата
Anton Belonogov написал:
Vitalii Savinov, добрый день.

Функция getParamEx() принимает на вход 3 параметра: class_code ( код класса ), sec_code ( код инструмента ), param_name (наименование параметра из Таблицы текущих торгов).

Посмотреть код класса и код инструмента можно в Рабочем месте QUIK, открыв окно информации об инструменте ( ПКМ  по интересующему инструменту в Таблице текущих торгов  /   И  нформация об инструменте , или сочетание  Alt+I ).
здравствуйте, подскажите что не так делаю.

actualPrice = getParamEx("Class","Emit","LAST").param_value;
Class   = "TQOB"                     пробовал   TQСB
Emit    = "SU26247RMFS5"   , пробовал  RU000A108EF8

вывожу в таблицу
SetCell(TableNaladka,2,2,actualPrice);

возвращает значение 0.000000

как узнать цену облигации? подскажите пожалуйста!
 
Танго,  Попробуйте так:
Код
  -- ОФЗ-ПД
  -- 26238 15/05/2041
  -- SU26238RMFS4
  -- TQOB
local Class   = "TQOB"                    -- пробовал   TQСB
local Emit    = "SU26238RMFS4"            -- пробовал  RU000A108EF8

local actualPrice = getParamEx(Class,Emit,"LAST").param_value;
message( 'actualPric = '.. tostring(actualPrice) )
-- вывожу в таблицу
-- SetCell(TableNaladka,2,2,actualPrice);
 
Цитата
VPM написал:
Танго,  Попробуйте так:
Код
     -- ОФЗ-ПД 
   -- 26238 15/05/2041 
   -- SU26238RMFS4 
   -- TQOB 
 local  Class    =   "TQOB"                      -- пробовал   TQСB 
 local  Emit     =   "SU26238RMFS4"              -- пробовал  RU000A108EF8 

 local  actualPrice  =   getParamEx (Class,Emit,"LAST").param_value;
 message (  'actualPric = '  ..  tostring(actualPrice) )  
-- вывожу в таблицу
-- SetCell(TableNaladka,2,2,actualPrice);
спасибо большое, все получилось
Страницы: 1
Читают тему
Наверх