Экспорт котировок из QUIK: простой скрипт на Lua » Элитный трейдер
Элитный трейдер


Экспорт котировок из QUIK: простой скрипт на Lua

Навыки программирования помогут получить данные для анализа сделок
31 марта 2023 Открытие | Открытый журнал Шемякин Алексей
Трейдеры и инвесторы могут экспортировать котировки из торгового терминала в файл при помощи сторонних программ, но пользоваться тем или иным сервисом может быть не всегда удобно. Иногда нужно экспортировать котировки напрямую из QUIK.

В этом терминале существуют встроенные механизмы экспорта — при помощи DDE и ODBC. Механизмы давно известны, но при эксплуатации пользователи сталкиваются со сложностями, или опции бывают недоступны «из коробки». Такое случается, если вы работаете в QUIK в операционных системах Linux. Однако QUIK может экспортировать котировки даже в таких сложных случаях.

QUIK имеет встроенную поддержку языка программирования Lua. И если у вас есть навыки программирования, то вы сумеете расширить возможности торгового терминала.

В статье предлагаем небольшой скрипт, который позволит экспортировать архив котировок по интересующему инструменту в текстовый файл с разделителями. Его можно впоследствии загрузить, например, в Excel.

Листинг скрипта экспорта котировок

function main()

-- list = getClassesList()

-- message(list)

--подготовительные процедуры

ticker = «SBER»

ds1, error_desc = CreateDataSource(«TQBR», ticker, INTERVAL_D1)

if error_desc ~= nil and error_desc ~= "" then

message(«Ошибка получения таблицы свечей:" .. error_desc)

return 0

end

local try_count = 0

while ds1:Size() == 0 and try_count < 1000 do

sleep(100)

try_count = try_count + 1

end

if error_desc ~= nil and error_desc ~= "" then

message(«Ошибка получения таблицы свечей:" .. error_desc)

return 0

end

--собственно экспорт

stocksFile = io.open(getScriptPath().."\\"..ticker..".csv»,«w»);

i = 1

stocksCount = ds1:Size()

message(«Количество записей для экспорта: "..tostring(stocksCount))

stocksFile:write(«Date;Open;High;Low;Close;Volume\n»)

while i < stocksCount do

dayStr = ""

if ds1:T(i).day < 10 then

dayStr = «0»..tostring(ds1:T(i).day)

else

dayStr = tostring(ds1:T(i).day)

end

monStr = ""

if ds1:T(i).month < 10 then

monStr = «0»..tostring(ds1:T(i).month)

else

monStr = tostring(ds1:T(i).month)

end

stockDate = dayStr.."."..monStr.."."..tostring(ds1:T(i).year)

stockOpen = tostring(ds1:O(i))

stockHigh = tostring(ds1:H(i))

stockLow = tostring(ds1:L(i))

stockClose = tostring(ds1:C(i))

stockVolume = tostring(ds1:V(i))

stocksFile:write(stockDate..";"..stockOpen..";"..stockHigh..";"..stockLow..";"..stockClose..";"..stockVolume.."\n»)

i = i + 1

end

stocksFile:close()

message(«Экспорт завершён")

end


Как пользоваться скриптом

Установка. Запустите программу «Блокнот» в Windows или аналогичный текстовый редактор и скопируйте в него текст скрипта. Сохраните файл под любым именем с расширением .lua в каталог, на который вы имеете права записи и чтения. Скрипт настроен таким образом, что котировки сохраняются в том же каталоге, где он находится.

Настройка. В пятой строке (ticker = …) SBER замените на другой тикер, для которого хотите экспортировать архив котировок. Скрипт настроен на экспорт дневных котировок, но интервал можно изменить. Для этого в 6-й строке замените INTERVAL_D1 на другое значение. Перечень доступных значений приведён на рисунке ниже. Настройка завершена.

Экспорт котировок из QUIK: простой скрипт на Lua


Запуск скрипта. Запустите QUIK, выберите пункт меню «Сервисы» — «Lua скрипты». Нажмите кнопку «Добавить», в диалоговом окне выбора файла найдите файл скрипта и нажмите «Открыть». Скрипт появится в списке «Загруженные скрипты». После этого нажмите кнопку «Запустить». Если скрипт отработает без ошибок, то в конце работы вы увидите сообщение «Экспорт завершён».


Диалоговое окно запуска скрипта в QUIK. Источник: QUIK

После того как работа скрипта успешно завершится, откройте папку, в которой находится скрипт. Там вы увидите файл с именем тикера, который ввели, и с расширением CSV. В нём сохранены котировки интересующего инструмента.


Пример содержимого файла экспорта. Источник: данные автора

Этот файл вы можете загрузить в какую-либо программу для дальнейшего анализа.

Скрипт, приведённый в данной статье, поставляется без каких-либо гарантий — явных или подразумеваемых. Вы несёте полную ответственность за любые последствия применения сведений и знаний, полученных в результате прочтения статьи.

https://journal.open-broker.ru/ (C)
Не является индивидуальной инвестиционной рекомендацией
При копировании ссылка обязательна Нашли ошибку: выделить и нажать Ctrl+Enter