Значения param из функции CreateDataSource

Страницы: 1
RSS
Значения param из функции CreateDataSource, Получение значений param из функции CreateDataSource
 
Здравствуйте. Только начал изучать LUA. Есть функция CreateDataSource (class_code, sec_code, interval , param);
В описании говорится param      - (STRING) необязательный параметр. Если параметр не задан, то заказываются данные на основании таблицы всех сделок.

Есть список param для акций
"LOTSIZE"            -- Размер лота
"BID"                -- Лучшая цена спроса
"BIDDEPTH"           -- Спрос по лучшей цене
"BIDDEPTHT"          -- Суммарный спрос
"NUMBIDS"            -- Количество заявок на покупку
"OFFER"              -- Лучшая цена предложения
"OFFERDEPTH"         -- Предложение по лучшей цене
"OFFERDEPTHT"        -- Суммарное предложение
"NUMOFFERS"          -- Количество заявок на продажу
"OPEN"               -- Цена открытия
"HIGH"               -- Максимальная цена сделки
"LOW"                -- Минимальная цена сделки
"LAST"               -- Цена последней сделки
"CHANGE"             -- Разница цены последней
это неполный список.

Пишу простейшую функцию по извлечению данных
Код
ds = CreateDataSource("TQBR", "SBER", INTERVAL_TICK)
sleep(1000)
local Size = ds:Size()
данные из секции Open, High, Low,Close,Time получаю без проблем. Даже миллисекунды выдаёт.
Код
for i = 1, Size, 1 do 
ds:T(i).ms
end;
Но вот как мне из ds получить значения параметров для акций, к примеру "LAST"  ?
 
Цитата
Но вот как мне из ds получить значения параметров для акций, к примеру "LAST"  ?
Предположу, что Вы хотите получить данные из Таблицы текущих торгов, т.к. не описываете какую задачу решаете.
Если так, то это не стоит делать через CreateDataSource.
Проще и быстрее это сделать через функцию getParamEx  http://luaq.ru/getParamEx.html

А CreateDataSource используйте если необходимо "упаковать" данные в свечи, бары.
 
Цитата
BENDER написал:
Здравствуйте. Только начал изучать LUA. Есть функция CreateDataSource (class_code, sec_code, interval , param);
В описании говорится param      - (STRING) необязательный параметр. Если параметр не задан, то заказываются данные на основании таблицы всех сделок.

Есть список param для акций
"LOTSIZE"            -- Размер лота
"BID"                -- Лучшая цена спроса
"BIDDEPTH"           -- Спрос по лучшей цене
"BIDDEPTHT"          -- Суммарный спрос
"NUMBIDS"            -- Количество заявок на покупку
"OFFER"              -- Лучшая цена предложения
"OFFERDEPTH"         -- Предложение по лучшей цене
"OFFERDEPTHT"        -- Суммарное предложение
"NUMOFFERS"          -- Количество заявок на продажу
"OPEN"               -- Цена открытия
"HIGH"               -- Максимальная цена сделки
"LOW"                -- Минимальная цена сделки
"LAST"               -- Цена последней сделки
"CHANGE"             -- Разница цены последней
это неполный список.

Пишу простейшую функцию по извлечению данных
Код
  ds  =   CreateDataSource ( "TQBR" ,  "SBER" , INTERVAL_TICK)
 sleep ( 1000 )
 local   Size   =  ds: Size ()
  
данные из секции Open, High, Low,Close,Time получаю без проблем. Даже миллисекунды выдаёт.  
Код
   for  i  =   1 ,  Size ,  1   do  
ds:T(i).ms
 end ;  
Но вот как мне из ds получить значения параметров для акций, к примеру "LAST"  ?
функция  CreateDataSource посволяет получить данные либо свечей либо из таблицы обезличенных сделок.
Она создает таблицу  ds функция  CИ:
T,function:
C,function:
H,function:
V,function:
SetEmptyCallback,function:
_DataSource,_dataline_data_metatablegc:
L,function:
Size,function:
SetUpdateCallback,function:
Close,function:
O,function:
-------------------------
Поэтому , читать данные Вы можете лишь обращаясь к этим функциям, вне зависимости от заказанного параметра.
===============  
В таблице обезличенных сделок нет параметра
"BID" -- Лучшая цена спроса
"BIDDEPTH" -- Спрос по лучшей цене
"BIDDEPTHT" -- Суммарный спрос
"NUMBIDS" -- Количество заявок на покупку
"OFFER" -- Лучшая цена предложения
"OFFERDEPTH" -- Предложение по лучшей цене
"OFFERDEPTHT" -- Суммарное предложение
"NUMOFFERS" -- Количество заявок на продажу
поэтому их Вы этой функцией не получите.
------------------------
Параметр Last - это close последней свечи.
 
У функции createdatasource есть последний параметр.

если вы его не указываете, функция возвращает свечи котировок инструмента. Если укажете ("bid" например), то будут свечи истории параметров инструментов.

таблица обезличенных сделок тут не при чем
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
У функции createdatasource есть последний параметр.

если вы его не указываете, функция возвращает свечи котировок инструмента. Если укажете ("bid" например), то будут свечи истории параметров инструментов.

таблица обезличенных сделок тут не при чем
Вопрос был, как прочитать то, что получили.
Пример приведите.
 
смотрим документацию:
Функция CreateDataSource возвращает таблицу Lua с параметрами:

т е в таблице нет каких либо других функций. Возможно функция возвращает параметры, но читать их очевидно надо этими функциями.
Попытка вызвать с параметром Last на демо сервере дает нули, а свечи выдает нормально.
ПараметрТипОписание
SetUpdateCallbackfunctionПозволяет задать пользователю функцию обратного вызова для обработки  изменившихся свечек
O

function

Получить значение Open для указанной свечи
HfunctionПолучить значение High для указанной свечи
LfunctionПолучить значение Low для указанной свечи
Cfunction

Получить значение Close для указанной свечи

V

function

Получить значение Volume для указанной свечи
TfunctionПолучить значение Time для указанной свечи
SizefunctionВозвращает текущий размер (количество свечек в источнике данных)
Closefunction

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

SetEmptyCallbackfunction

Позволяет получать данные с сервера без указания функции обратного вызова  

 
nikolz,

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

функция createdatasource при указании названия параметра инструмента выводит не свечи котировок инструмента, а свечи истории этого параметра.

формат возвращаемых данных тот же самый и вы его правильно скопировали из документации.

таким образом, вы можете получать историю параметров в том же самом виде и формате, как и историю котировок.

спорить не стоит, но если потребуется помощь, спрашивайте.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
nikolz,

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

функция createdatasource при указании названия параметра инструмента выводит не свечи котировок инструмента, а свечи истории этого параметра.

формат возвращаемых данных тот же самый и вы его правильно скопировали из документации.

таким образом, вы можете получать историю параметров в том же самом виде и формате, как и историю котировок.

спорить не стоит, но если потребуется помощь, спрашивайте.
правильно Вас понял, что без рисования принять параметры невозможно?
--------------  
и еще вопрос.  
При прорисовке параметров на графиках КВИК  создает файл хранения истории данного параметра. Как правило это огромный файл на диске. Верно?
 
Получить можно и без рисования. Но как показывает практика, часто данные не транслируются вовсе или с перебоями. Возможно зависит от брокера, у одного работает, у другого нет.
 
сделал тестовый скрипт:
Код
name="main";
paths = "D:/QUIK_SCRIPT/"

function cb(i)
 O=ds:O(i); H=ds:H(i); L=ds:L(i); C=ds:C(i);   V=ds:V(i) Ti=ds:T(i)
   Log:write("ds "..tostring(O)..","..tostring(H)..","..tostring(L)..","..tostring(C).."\n");Log:flush()
end


function cb1(i)
 O=ds1:O(i); H=ds1:H(i); L=ds1:L(i); C=ds1:C(i);   V=ds1:V(i) Ti=ds1:T(i)
   Log:write("ds1 "..tostring(O)..","..tostring(H)..","..tostring(L)..","..tostring(C).."\n");Log:flush()
end

function main()
  while true do
   sleep(10);
      if ds==nil then  ds=CreateDataSource("QJSIM","SBER",INTERVAL_M1)
      Log:write("ds="..tostring(ds).."\n");Log:flush()
      ds: SetUpdateCallback (cb)
      end

      if ds1==nil then  ds1=CreateDataSource("QJSIM","SBER",INTERVAL_M1,"Last")
      Log:write("ds1="..tostring(ds1).."\n");Log:flush()
      ds1: SetUpdateCallback (cb1)
      end

   if ds~=nil    then local count=ds:Size();
      local i=count;   O=ds:O(i); H=ds:H(i); L=ds:L(i); C=ds:C(i);   V=ds:V(i) Ti=ds:T(i)
      Log:write("ds:count="..count..","..tostring(O)..","..tostring(H)..","..tostring(L)..","..tostring(C).."/"..tostring(i).."\n");Log:flush()
   end

   if ds1~=nil then local count=ds1:Size();
      local i=count O=ds1:O(i); H=ds1:H(i); L=ds1:L(i); C=ds1:C(i);   V=ds1:V(i) Ti=ds1:T(i)    i=i+1;
      Log:write("ds1:coint="..count..","..O..","..H..","..L..","..C.."/"..i.."\n");Log:flush()
   end
 end
end

--------------
function OnInit(pfile)
   Log=io.open(paths..name..".log","w")
end
В тесте открываются два источника:
ds - это свечи обычные
d1- это свечи "Last"
тест пускаем на демо сервере.
-----------------
Результаты ниже.
Поясню что там.
сначала смотрим ds и ds1 - они есть значит подписались
------------------
потом смотрим результат
обычные свечи - есть
а свечи last - нет
----------------------------
ds=table: 00000119201F8290
ds1=table: 00000119201F8BD0
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
ds1:coint=0,0.0,0.0,0.0,0.0/1
ds:count=823,132.0,132.0,132.0,132.0/823
------------------------  
 
Подождать нужно. Данные должны приехать с сервера. И проверить, что этот параметр разрешен терминалу к получению.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
У функции createdatasource есть последний параметр.

если вы его не указываете, функция возвращает свечи котировок инструмента. Если укажете ("bid" например), то будут свечи истории параметров инструментов.

таблица обезличенных сделок тут не при чем
Теперь всё понятно. Спасибо.

Open, High, Low,Close,Time  применимы или к котировкам или к параметрам инструментов  ("bid" например).

Запрашиваю тиковую историю и всё прекрасно выдаёт. Ну разве что в истории параметров нет миллисекунд.

Ну и количество дневных тиков по разным параметрам разное. Синхронизировать дело не хитрое.

С минутными и более свечами не пробовал. Мне это и не требуется.

P.S. Просто собираю данные для последующего анализа.
Страницы: 1
Читают тему
Наверх