Коллеги!
Есть два варианта как получать данные в квике в рамках луа-скриптов.
1. getCandlesByIndex
2. CreateDataSource
Первый вариант неудобен тем, что нужно держать открытыми графики и, если используются разные тф, то нужно держать больше открытых графиков. Всё это неудобно, когда меняются контракты и тд. Зато надёжно. Если ты графики создал, то источники создались и скрипты отработают.
Второй вариант неудобен тем, что не всегда источники данных создаются, нужно выжидать тайм-ауты и всякое такое.
Подскажите, какой из вариантов вы считаете наиболее правильным/оптимальным или какой используете сами?
Если накидаете пример кода как это используете, буду премного благодарен!
function main()
while IsRun do
sleep(1000)
for j= 1, 1 do
if IsWindowClosed(t_id) then --Если окно робота закрыто, то выключить робота
IsRun=false
break
end
— ========= КОНТРОЛЬ ВРЕМЕНИ СЕССИИ И СОЕДИНЕНИЯ С СЕРВЕРОМ
if isConnected()~=1 then
is=isConnected()
FIRSTRUN=0
break
end
— ========= ПЕРВЫЙ ЗАПУСК
if FIRSTRUN==0 then
ds15, error = CreateDataSource(CLASSCODE, INSTRUMENT, INTERVAL_M15)
if ds15 == nil or ds15:Size()<500 then
if error~=nil then
message('OHLC Si15: '..error,3)
else
message('OHLC Si15: error',3)
end
break
end
ds15: SetEmptyCallback()
FIRSTRUN=1
end
end --end FOR GLOBAL
end --end while
ds15:Close()
end --main
2. CreateDataSource этот вариант самый лучший, не было не разу чтобы не создало источник данных, если не создало значит его в квике нет. По таймаутам, да зависит от скорости интернета и нагружености сервера брокера сколько ждать когда придет график, поэтому я делаю подписку на график CreateDataSource за несколько минут до начала торгов этого вполне хватает, либо можно контролировать по времени в последней свече(загрузился график или нет) но способ не универсален для неликвида не подойдет.
зачем это все? лей таблицу обезличенных сделок в sql и строй свечи сам. Ну понятно лучше задублировать потоки и мерджить дату с двух квиков от разных брокеров
Вот-вот новый год сменит предыдущий. Давайте вместе вспомним, чем 2025 отметился для Займера и его акционеров. 🎉 Январь: нашей компании исполнилось 11 лет. 📈 Февраль: “Эксперт РА” повысил...
🎄 Этот год мы прошли вместе с вами — нашими инвесторами. Каждый день были на связи, отвечали на вопросы, делились новостями, обсуждали результаты и планы. В конце года хотим немного...
📌 Редактируемая версия таблицы — в 👉👉👉 чате Иволги 👉 t.me/ivolgavdo/61478 Все сделки новой недели — по 0,1% от активов портфеля за торговую сессию, начиная с сегодняшней, для...
Оптовая цена на бензин рухнула. "Евротранс" наращивает розничную прибыль Оптовая стоимость топлива продолжает падать. Пик пришелся на середину октября, когда из-за временного сокращения прои...
Ежедневный обзор NG-1.26 Доброе утро, Легенды!
Волатильность в газе не перестает удивлять. Сегодня на утренних торгах цена теряет относительно пятницы.
В пятницу я перешел обратно на контр...
Акционеры Т-Технологий одобрили дивиденды за 3кв 2025г в размере 36 руб/акция (ДД 1,1%), отсечка - 8 января МКПАО «Т-Технологии»Решения общих собраний участников (акционеров)
1. Выплатить диви...
Подводим итоги Займера в 2025 Вот-вот новый год сменит предыдущий. Давайте вместе вспомним, чем 2025 отметился для Займера и его акционеров.🎉 Январь: нашей компании исполнилось 11 лет.📈 Февраль: “Эксп...
❤️ Подводим итоги года вместе с инвесторами МГКЛ
🎄 Этот год мы прошли вместе с вами — нашими инвесторами. Каждый день были на связи, отвечали на вопросы, делились новостями, обсуждали результаты и ...
Там вон АКРА отзывает у ТГК-14 рейтинг, который сама понизила недавно. Но отзыв по требованию самой ТГК-14. www.acra-ratings.ru/press-releases/6469/
Может скоро все эмитенты, столкнувшиеся с необосн...
function main()
while IsRun do
sleep(1000)
for j= 1, 1 do
if IsWindowClosed(t_id) then --Если окно робота закрыто, то выключить робота
IsRun=false
break
end
— ========= КОНТРОЛЬ ВРЕМЕНИ СЕССИИ И СОЕДИНЕНИЯ С СЕРВЕРОМ
if isConnected()~=1 then
is=isConnected()
FIRSTRUN=0
break
end
— ========= ПЕРВЫЙ ЗАПУСК
if FIRSTRUN==0 then
ds15, error = CreateDataSource(CLASSCODE, INSTRUMENT, INTERVAL_M15)
if ds15 == nil or ds15:Size()<500 then
if error~=nil then
message('OHLC Si15: '..error,3)
else
message('OHLC Si15: error',3)
end
break
end
ds15: SetEmptyCallback()
FIRSTRUN=1
end
end --end FOR GLOBAL
end --end while
ds15:Close()
end --main
Надежней много раз.
Небольшой пример: luaq.ru/CreateDataSource.html