Коллеги!
Есть два варианта как получать данные в квике в рамках луа-скриптов.
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 и строй свечи сам. Ну понятно лучше задублировать потоки и мерджить дату с двух квиков от разных брокеров
Почему компании переходят от банковских кредитов к рынку облигаций в период высоких ставок?
Высокая процентная ставка – это не просто рост стоимости заимствований. В подобные периоды взаимодействие между всеми участниками рынков, включая банки, инвесторов и эмитентов меняется. В такие...
Страховые резервы страховщиков жизни выросли за год на 33%
По данным Всероссийского союза страховщиков (ВСС), в 2025 году страховые резервы страховщиков жизни увеличились на 33% г/г и составили 2,9 трлн рублей против 2,2 трлн рублей в 2024 году....
Газовый капкан: удержит ли поддержка натиск весны?
«Газовые» котировки находятся в фазе агрессивной коррекции, вплотную приблизившись к области поддержки 2.65–2.85, откуда ранее начался мощный импульс роста. Не исключен повторный отскок вверх от...
Россети Урал. Отчет об исполнении инвестпрограммы за Q4 2025г. Считаем дивиденды!
Компания Россети Урал опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по РСБУ в 4 квартале (ну и понятно за целый год): 👉Выручка...
В новом альтернативном редакторе невозможно вставить цитату более одной строки ни отформатировать абзац в цитату. Ctl+v внутри окошка цитаты не работает.
FreeBird, У меня соединение со сберброком через ростелеком(кабель). После 16-17 часов начинается. Отстаёт время сервера, таблицы пустые и тд.
Перехожу на Теле2(раздача со смартфона), никаких проб...
Переговоры завершились, скоро 3 раунд сказал Мединский
Пока на переговры можно забить, пусть идут, на первый план выходит макроэкономика.
Сегодня инфляция, завтра инфляционные ожидания, пос...
допку нужно было делать в том году — я её в том году ждал… там хотя бы по 80-90 можно было бы...
кто купит мега объём сейчас на рынке тонком по 90? вуш? Кто?
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