Коллеги!
Есть два варианта как получать данные в квике в рамках луа-скриптов.
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
aTickerList = {«SBER», «GMKN», «GAZP», «NVTK», «ALRS»};
как построить таблицу с колонками, что бы получить OHLCV по инструментам? Возможно ли в таблицу вывести значение средней, без построения на графиках, что бы скажем сравнить выше цена или ниже MA.? Параметр средней одинаков для всех и сравнение произвести каждого инструмента.
2. CreateDataSource этот вариант самый лучший, не было не разу чтобы не создало источник данных, если не создало значит его в квике нет. По таймаутам, да зависит от скорости интернета и нагружености сервера брокера сколько ждать когда придет график, поэтому я делаю подписку на график CreateDataSource за несколько минут до начала торгов этого вполне хватает, либо можно контролировать по времени в последней свече(загрузился график или нет) но способ не универсален для неликвида не подойдет.
зачем это все? лей таблицу обезличенных сделок в sql и строй свечи сам. Ну понятно лучше задублировать потоки и мерджить дату с двух квиков от разных брокеров
CreateDataSource не является синхронным, т.е. polling с проверкой что datasource.count > 0 единственный способ узнать, что в quik пришли эти данные, результат при этом не гарантируется, особенно в ~10 утра.
— открываем источник данных local ds, error_desc; ds, error_desc = CreateDataSource(class,name,period); — Ограничиваем количество попыток (времени) ожидания получения данных от сервера local try_count = 0; if ds==nil then message(name..' '..class..' data source error :\n'..error_desc); return {0},0; end — Ждем пока не получим данные от сервера, либо пока не закончится время ожидания (количество попыток) while ds:Size() == 0 and try_count < 100 do sleep(100); try_count = try_count + 1 end — Если от сервера пришла ошибка, то выведем ее и прервем выполнение if try_count>99 or error_desc ~= nil then message('Error loading data for '..name..', '..class..' — can not open data source '); return; end
Всем доброго дня! Как раз на днях столкнулся ситуацией и тут появился этот пост! У меня вопрос не совсем по теме поста, хотя ...
Как то раз использовал это QPILE скрипт (редактировал под нужные мне инструменты рынки и таймфремы) из этого старого поста для экспорта свечек из Квика smart-lab.ru/blog/203956.php
К сожалению я не владею LUA на данный момент. Подскажите, есть ли какой нибудь готовый скрипт LUA, можно ли каким то способом, доступным не только программистам, экспортировать по-отдельности или вместе не только свечи по сделкам, но и данные по опционам:
— Спрос. Предложение, Теоретическая цена, Открытый Интерес, Волатильность?
Про ручной способ «Правая кнопка — Сохранить как», но хотелось сохранить не «один-два» страйка опционов, а несколько и поэтому желательна автоматизация ...
Заранее спасибо за любую помощь и дополнительные источники информации
UPD: отредактировал вопрос — понял что тот старый скрипт не lua а ещё qpile даже))
Поставки казахстанской нефти в Германию через «Дружбу» остановятся с мая
Россия с 1 мая может остановить транзит казахстанской нефти в Германию трубопроводу «Дружба». По данным Reuters, в 2025 году по этому маршруту страна получила 2,146 млн тонн нефти, а в первом...
Инвестаналитики повысили рекомендацию по акциям Норникеля до ПОКУПАТЬ
На днях аналитики SberCIB выпустили обзор, посвященный нашим бумагам, в котором рекомендуют инвесторам покупать акции Норникеля. Вместе разбираем отчет в нашем сегодняшнем посте. Аналитики...
USD/JPY: рынок собирается проверить решимость японского регулятора
Японская иена продолжает разнонаправленно колебаться в ограниченном коридоре, продолжая тестировать психологический рубеж 160, который продолжает оставаться непреодолимым барьером. Пара застряла...
Долларовые российские облигации: ищем интересные идеи
Доходности российских долларовых облигаций, после достижения локального минимума в сентябре 2025 г., скорректировались вверх и сейчас торгуются в сравнительно широком боковике. Какие уровни...
Chilim, а почему эмитент вообще что-то должен говорить? Цену на облигации обваливают облигационеры, продавая бумаги. Эмитенту вообще фиолетово сколько его облигации на бирже стоят. У него две цели:...
Voron_Baffet, никуда дивергенция не угасла.
В самом соку :
Эта область повышенной волантильности. Тут нету никаких гарантий куда двинется эта область: ниже или выше. Здесь чисто эмоции правят, ...
Трамп объявил о продлении перемирия с Ираном
По утверждению Трампа, приостановить удары его убедило руководство Пакистана. Американский президент отдал приказ американским силам продолжать блока...
Новые облигации Медскан (~16,2%, сбор сегодня, 22.04)
A, купон ~16,2% ежемес. (YTM ~17,44%), 2,1 года, 3 млрд.
(Доходность выпуска задается по формуле «КБД на сроке 2 года + 400 б.п.» На момен...
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
test.lua:33: attempt to index a nil value (global 'ds15')
aTickerList = {«SBER», «GMKN», «GAZP», «NVTK», «ALRS»};
как построить таблицу с колонками, что бы получить OHLCV по инструментам? Возможно ли в таблицу вывести значение средней, без построения на графиках, что бы скажем сравнить выше цена или ниже MA.? Параметр средней одинаков для всех и сравнение произвести каждого инструмента.
Надежней много раз.
Небольшой пример: luaq.ru/CreateDataSource.html
— открываем источник данных
local ds, error_desc;
ds, error_desc = CreateDataSource(class,name,period);
— Ограничиваем количество попыток (времени) ожидания получения данных от сервера
local try_count = 0;
if ds==nil then
message(name..' '..class..' data source error :\n'..error_desc);
return {0},0;
end
— Ждем пока не получим данные от сервера, либо пока не закончится время ожидания (количество попыток)
while ds:Size() == 0 and try_count < 100 do
sleep(100);
try_count = try_count + 1
end
— Если от сервера пришла ошибка, то выведем ее и прервем выполнение
if try_count>99 or error_desc ~= nil then
message('Error loading data for '..name..', '..class..' — can not open data source ');
return;
end
Как то раз использовал это QPILE скрипт (редактировал под нужные мне инструменты рынки и таймфремы) из этого старого поста для экспорта свечек из Квика smart-lab.ru/blog/203956.php
К сожалению я не владею LUA на данный момент. Подскажите, есть ли какой нибудь готовый скрипт LUA, можно ли каким то способом, доступным не только программистам, экспортировать по-отдельности или вместе не только свечи по сделкам, но и данные по опционам:
— Спрос. Предложение, Теоретическая цена, Открытый Интерес, Волатильность?
Про ручной способ «Правая кнопка — Сохранить как», но хотелось сохранить не «один-два» страйка опционов, а несколько и поэтому желательна автоматизация ...
Заранее спасибо за любую помощь и дополнительные источники информации
UPD: отредактировал вопрос — понял что тот старый скрипт не lua а ещё qpile даже))