Николай Кондаков (Все сообщения пользователя)

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

Страницы: 1
SetUpdateCallback зависания системы
 
Цитата
Sergey Gorokhov написал:
Николай,
Тогда понятно почему у нас не воспроизводится проблема.
Приведите полный код, на котором проблема повторяется.

Я разобрался, по-видимому, код работает правильно, просто изначальный процесс создания источников данных занимает очень много времени. Ну и мне пришлось каждому источнику данных уникальное имя через _G[security], иначе в таблицу подгружалась какая-то мешанина.

В связи с этим вопрос, можно ли для созданных источников данных не подгружать всю историю (3000 или сколько там свечек), а получать данные только за эту сессию?
SetUpdateCallback зависания системы
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Попробуйте добавить обработку в функцию main
function main()
for class in string.gmatch(classes,"(%w+)") do
local securities = getClassSecurities(class);
for security in string.gmatch(securities,"(%w+)") do
 DataSource(class, security);
end
end
end

Пробовал не помогает. На самом деле, именно в ней у меня этот фрагмент кода и находится. У меня перед ним еще ряд условий, чтобы скрипт стартовал только раз в день, подключился к базе, обновил список бумаг в базе и т.д.
SetUpdateCallback зависания системы
 
Добрый день!

Не могли бы вы мне помочь с одной проблемой, уже всю голову себе сломал.

Я пытаюсь собирать данные (OHLCV) по двум классам бумаг, чтобы записывать их в локальную базу SQL.

Для этого я написал такой код, который, работает на одной-двух бумагах, но при масштабировании на оба класса он вешает QUIK. Не могли бы вы подсказать, что мне сделать, чтобы избежать этих зависаний.

Код
classes = "TQBR,TQOB";
interval = INTERVAL_M1;

function MyCallbackForAllStocks(class, security, index)
  local candle = index - 1
  local Datetime = ds:T(candle).year * 10000000000+ ds:T(candle).month * 100000000 + ds:T(candle).day*100000 + ds:T(candle).hour * 10000 + ds:T(candle).min * 100 + ds:T(candle).sec; --Получаем дату и время последней закрывшейся свечки
  local cOpen = ds:O(candle);
  local cHigh = ds:H(candle);
  local cLow = ds:L(candle);
  local cClose = ds:C(candle);
  local cVolume = ds:V(candle);
  --Затем данные упаковываются в вектор и передаются в SQL базу.
 end
end

--Создаётся обёртка
function DataSource(class,security)
 ds = CreateDataSource(class, security, interval);
 ds:SetUpdateCallback(function(index) MyCallbackForAllStocks(class,security,index) end)
end

--Скрипт запускается единожды вот такой конструкцией:
for class in string.gmatch(classes,"(%w+)") do
 local securities = getClassSecurities(class);
 for security in string.gmatch(securities,"(%w+)") do
  DataSource(class, security);
 end
end 


Заранее благодарен за любую помощь и идеи.
Страницы: 1
Наверх