Как без открытия графиков получать историю из quik за сегодняшний день?

Страницы: 1
RSS
Как без открытия графиков получать историю из quik за сегодняшний день?, котировки из quik
 
Приветствую.
Есть ли какие-то функции или хотя бы функции доступа к таблице всех сделок, чтобы из сделок самому лепить свечи?
 
Цитата
В В пишет:
Приветствую.
Есть ли какие-то функции или хотя бы функции доступа к таблице всех сделок, чтобы из сделок самому лепить свечи?
Здравствуйте,
Для получения информации из таблицы всех сделок существуют функции getItem, SearchItems и CreateDataSource.
Именно свечки строить в LUA сейчас нельзя. Можно строить только линии и точки.
 
Цитата
Sergey Gorokhov пишет:
Для получения информации из таблицы всех сделок существуют функции getItem, SearchItems и CreateDataSource.
Именно свечки строить в LUA сейчас нельзя. Можно строить только линии и точки.
Сами свечи строить графически в qlua пока нет необъодимости. Не могли бы вы привести пример кода, который позволял бы мне получать мне хотя бы 5-минутные (open, high, low, close, volume) для фьючерса на индекс RTS хотя бы за текущий день?
 
Цитата
В В пишет:
Цитата
Sergey Gorokhov пишет:
Для получения информации из таблицы всех сделок существуют функции getItem, SearchItems и CreateDataSource.
Именно свечки строить в LUA сейчас нельзя. Можно строить только линии и точки.
Сами свечи строить графически в qlua пока нет необъодимости. Не могли бы вы привести пример кода, который позволял бы мне получать мне хотя бы 5-минутные (open, high, low, close, volume) для фьючерса на индекс RTS хотя бы за текущий день?
Задача решается функцией CreateDataSource

Код
ds = CreateDataSource("SPBFUT", "RIZ5", INTERVAL_M5)
ds:SetEmptyCallback()
sleep(100) --ждем прокачки информации

for i=1,ds:Size() do
   Open = ds:O(i)
   High = ds:H(i)
   Low = ds:L(i)
   Close = ds:C(i)
   Volume = ds:V(i)
--остальной код
end
 ds:Close()
 
Спасибо, код работает, только вот ожидание поставил подольше, а то прокачивается через раз.
 
Проще решать данную задачу в индикаторе.
Вне зависимости от выбранного тайма графика, функция OnCalculate  будет вызываться на каждый тик из таблицы всех сделок по данному инструменту.
Вот и стройте свечи с любым таймом.
 
Цитата
Николай Камынин пишет:
Вне зависимости от выбранного тайма графика, функция OnCalculateбудет вызываться на каждый тик из таблицы всех сделок по данному инструменту.
Это не так.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
ds = CreateDataSource("SPBFUT", "RIZ5", INTERVAL_M5)
ds:SetEmptyCallback()
sleep(100) --ждем прокачки информации

Этот код работает хоть и часто, но не всегда, не помогает даже увеличение загрузки до 5 секунд.
 
Можно использовать колбек
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Sergey Gorokhov пишет:

Задача решается функцией CreateDataSource
Код
  ds  =   CreateDataSource ( "SPBFUT" ,  "RIZ5" , INTERVAL_M5)
ds: SetEmptyCallback ()
 sleep ( 100 )  --ждем прокачки информации 

 for  i =  1 ,ds: Size ()  do 
   Open  =  ds:O(i)
   High  =  ds:H(i)
   Low  =  ds:L(i)
    Close   =  ds:C(i)
   Volume  =  ds:V(i)
 --остальной код 
 end 
 ds: Close ()  
Я бы решал эту задачу несколько иначе, примерно так:
---------------------------------
--эта часть кода должна быть вызвана один раз при установке связи с сервером:
ds  =   CreateDataSource ( "SPBFUT" ,  "RIZ5" , INTERVAL_M5)
ds: SetEmptyCallback ()
-----------------------------
--Далее в программе делаем так:
local size_now=ds:Size()
if size_old==nil or size_old>size_now  then
Size_old=0;
Open,High,Low,Close,Volume={},{},{},{},{};
else
  for  i = size_old,size_now-1 do  
local n=i+1;  
    Open[n] =  ds: (i)
     High[n]  =  ds:H(i)
     Low[n]  =  ds:L(i)
     Close[n] =  ds:C(i)
     Volume[n]  =  ds:V(i)
   end
end
size_old=size_now
-- последней свечой в массивах Open,High,Low,Close,Volume будет всегда последняя полученная с сервера свеча
----------------------------------------
 
Спасибо ответившим, попробую переписать.
Страницы: 1
Читают тему
Наверх