Блог им. morefinances

Qlua: введение.

Cерия статей по языку QLua и алгоритмической торговле для тех, кто хочет автоматизировать свою работу на финансовых рынках, освоить написание скриптов, индикаторов, торговых советников и роботов для терминала Quik.

В 2022 году ЦБ выпустил презентацию «Портрет клиента брокера». В ней указано, что в РФ всего 0,03% клиентов используют алгоритмическую торговлю.

Qlua: введение.


Поэтому я понимаю, что людей, которые будут интересоваться темой программирования в трейдинге, совсем немного (хотя с ростом популярности изучения программирования доля со временем может подрасти, но вряд ли существенно).

У меня нет задачи популяризировать эту тему, скорее помочь тем, кто будет идти той же дорогой. Дело в том, что открытой информации по qlua и алгоритмической торговле через Quik в сети немного: есть несколько сайтов энтузиастов, где кусочками выложены разные полезности, часть из этой информации порой уже устаревшая (работает только на более ранних версиях терминала), есть несколько коммерческих проектов (продажи роботов, либо обучения) там информация актуальная, но за неё нужно платить. Есть интересные библиотеки, но отдельные (например, какие-то библиотеки визуального интерфейса) могут отваливаться с появлением новых версий квика.
Есть ужасный форум разработчиков терминала, где информация малоструктурирована, но куда можно писать по возникшим трудностям с разбором кода. Есть мануал по qlua и справка по языку, которые поставляются с торговым терминалом, при этом они очень скупы на подробности и примеры. Поэтому приходится из разных источников самому собирать по крупицам кусочки кода и делать из этого всего какую-то мозаику.

Кружок авиамоделизма.

Где-то здесь на форуме я встретил сравнение, что круг программирующих на qlua людей – это «кружок авиамоделизма». Очень близко к действительности. Хотя, наверное, более близкое сравнение — это создание парусников в бутылках. Когда ты через узкое горлышко торгового терминала пытаешься запустить свои скрипты при нелепых причудах, огромных ограничениях и извращенных особенностях терминала Quik.

Если вы решили войти в этот «кружок», то придётся набраться терпения и сперва изучить основы, научиться писать простые скрипты, научиться получать информацию из терминала, работать с заявками и сделками, таблицами, самостоятельно сохранять и читать внешние файлы, после чего уже можно будет подходить к написанию собственного робота. Я постараюсь поэтапно делиться своими наработками, полезными ссылками и материалами, чтобы этот путь можно было пройти легче и быстрее.

Немного истории.

Всего каких-то 5-8 лет назад все преимущественно работали на финансовых рынках через торговые терминалы (чаще всего брокеры предлагали терминал Quik для торговли, но были и собственные разработки у отдельных компаний – FinamTrade, АльфаДирект, SmartX, АЛОР-трейд и пр., где пытались посоревноваться по дизайну и по функциональности). При этом у некоторых из них была возможность написания и запуска скриптов для частичной или полной автоматизации своей торговли.

Однако за последние годы большинство крупных брокеров выпустили свои приложения для смартфонов и по статистике уже большая часть людей мониторят рынок или совершают операции именно через них. В том же «портрете клиента» от ЦБ указано, что 74% пользуются мобильными приложениями, а торговыми платформами (квик и аналоги) всего 17%.

Qlua: введение.

Однако если вы хотите оперативно анализировать динамику котировок интересуемых компаний, сегмента или динамики рынка в целом, автоматизировать частично или полностью свою работу на финансовых рынках, попробовать свои силы в алгоритмической торговле, то вам, в любом случае, понадобится торговый терминал. В случае программирования на qlua потребуется установить терминал Quik.

Почему не MetaTrader, где используется гораздо более простой язык MQL? Дело в том, что MetaTrader изначально в нашей стране предлагали форекс-компании. Сейчас часть брокеров, ориентируюсь, прежде всего, на аудиторию, которая ранее торговала форекс и для кого терминал MetaTrader более привычен, тоже стали его предлагать как альтернативу. Но Quik, тем не менее, остается основным терминалом у большинства брокеров. Т.к. сейчас уже такие времена, когда торговля редко ведется только через одного брокера, да и основной брокер может поменяться со временем (смена тарифов, списка торгуемых бумаг – после санкций, например, или просто другой брокер стал более технологичным и удобным), то проще сразу сориентироваться на более массовый Quik и язык qlua.

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

Варианты различных конструкторов вроде TSLab или Tradematic годятся разве что только для работы совсем простых торговых стратегий, хотя там и заложена возможность составлять логику не только графически «кубиками», но и прописывать алгоритмы кодом (но, во-первых, это платные платформы, во-вторых, они не всегда устойчиво работают, в-третьих, программирование через qlua в терминале даёт больше возможности как по получению информации по рынку, так и по реализации своей торговой стратегии). Хотя для тестирования простых стратегий TSLab для начинающих, наверное, очень даже неплохой вариант. Тем более, что функционал тестирования на исторических данных у них бесплатный.

Основной функционал.

С помощью qlua вы сможете в торговом терминале:

  • Создавать собственные индикаторы.
  • Получать онлайн информацию с графиков, биржевых стаканов, таблицы текущих торгов, ленты всех сделок, информацию по собственному портфелю и позициям (открытым, исполненным и снятым заявкам). Выгружать эту и производную информацию в отдельные таблицы или файлы.
  • Выставлять/снимать лимитные и рыночные заявки по различным условиям (по времени, по сигналам, условиям по другим заявкам или другим инструментам).
  • Создавать торговых советников (выдает только сигналы, трейдер сам принимает решение входить в сделку или нет) и торговых роботов (полностью автоматизированная торговля).
  • Использовать внешние библиотеки lua в своей работе (их много, но не все, к сожалению, могут нормально работать с торговым терминалом).
  • Совмещать qlua с другими языками программирования. Например можно через qlua выгружать необходимую информацию по текущим торгам и индикаторам, а уже обработку этой информации проводить программой написанной на том, что вам ближе (C++, C#, python и пр.). Это вполне рабочая схема, когда речь идет не о 1-10 торговых стратегий, а когда, например, одновременно торгуется более сотни роботов с разными параметрами и инструментами, тогда терминал только обрабатывает заявки и отдает статусы по ним плюс данные по рынку, а весь анализ и управление позициями проходит вне терминала в другом скрипте. Это не перегружает торговый терминал и позволяет быть гибким в своих торговых стратегиях.

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

Телеграмканала нет, ютубканала нет, роботов не продаю.

Теги: qlua для начинающих, кружок «авиамоделизма».

  • обсудить на форуме:
  • Quik Lua
★21
32 комментария
В том же «портрете клиента» от ЦБ указано, что 74% пользуются мобильными приложениями, а торговыми платформами (квик и аналоги) всего 17%.

Странные цифры. При постановке вопроса «хотя бы раз пользовались одним из перечисленных» сумма процентов должна быть существенно выше 100.
Дмитрий Овчинников, так там больше получается (около 106.1%), суммируйте все столбцы. Я отметил только пользователей терминалов и мобильных приложений.
avatar
alfacentavra, 
цифра должна быть существенно более 100%. Не верю я в то, что использующие Квик ни разу не использовали мобильное приложение.
Дмитрий Овчинников, одно множество может входить в другое. В этих 74% в т.ч. часть тех, кто торгует через терминалы, например.
avatar
alfacentavra, 
мда… теперь я понимаю кто именно пишет на qlua. успехов :)
Дмитрий Овчинников, прочитайте про вложение множеств. Много нового для себя откроете.
avatar
Почему немногие применяют алготейдинг? Потому что всем известно, что в трейдинге главное — психология. Очень много текстов.
Но никто не пишет, как встроить психологию в алгоритм.
Rostislav Kudryashov, насколько я помню обычно говорят про 3х «китов» успешной торговли: торговая стратегия, управление риском и капиталом, психология трейдинга.
В алгоритмы в т.ч. уходят чтобы убрать эмоциональную/импульсивную составляющую и более формализировать все свои правила.

Низкая доля во-первых, потому что не всем близко программирование в целом (сколько пользователей excel и какая доля из них используют макросы VBA? которые существенно упрощают работу, бесплатны и не требуют никаких дополнительных установок — 1-3 % максимум). Во-вторых, в отличие от VBA excel qlua квика не столь простой и интуитивно понятный.
avatar
Rostislav Kudryashov, трейдинг — это математика

если математика говорит о том, что вероятность выигрыша за 10 лет равна нулю, то тогда остается только психология))
avatar
Rostislav Kudryashov, вот это вот «всем известно» и есть психология. В алгоритме нет функциональности «лысая обезьяна за терминалом», и это его преимущество перед лысой обезьяной за терминалом.
Случаем нет скрипта на его перезапуск при остановке записи в лог? Базовым параметром к примеру есть время записи лог-файла по скрипту, которое правда тоже надо вытащить
avatar
Evgen Grig, это, как я понимаю, к предыдущему посту вопрос. Скрипта нет, но в общей логике это можно предусмотреть в основном скрипте, который обращается к файлу с логами и смотрит последнюю запись, исходя из чего запускает какие-то функции или уходит в спящий режим. 
avatar
alfacentavra, мне понравилась идея соединить с C… думаю действительно сторонней программой можно его осуществить. Спасибо
avatar
лучший контент по QLUA лежит на сайте quikluacsharp.ru/bez-rubriki/s-chego-nachat/

сайт писал программист… для программистов… поэтому юзабилити и дизайн — почти на дне… но контент годный
avatar
$100, спасибо! Да, хороший ресурс, много полезного.
Я буду давать разные полезные ссылки и материалы, но уже после какой-то минимальной базы. На начальном этапе некоторые из них (например мануалы разработчиков, скорее могут напугать или оттолкнуть от этой темы).
avatar
слушайте, а вот такой вопрос  QLua от какого языка нарисован ?
основной обмен информации, на сколько знаю, это С + ++ в куче его видов   Java тоже, где работают банки и системы, 
QLua — это чисто внешка обертка для обращения, правильно понимаю ?  или через нее процессы проходят непосредственно самой биржи ? 
не разбираюсь, поэтому спрашиваю 
avatar
Skifan, 20:32 насколько я знаю, бразильское изобретение Lua  (Луна по-бразильски) — племянник языка JavaScript.
Что такое
через нее процессы проходят непосредственно самой биржи ?
не понял, потому и спрашиваю.
Rostislav Kudryashov, понял вас, спасибо  

А базы то все же на чем работают? У нашей Мосбиржи  ?  
avatar
Skifan, я читал, что сам lua написан на Си, на чем именно и как это реализовано в квике — не скажу.
avatar
Skifan, qlua это язык терминала. Биржа по нему с брокерами не «общается», если в этом вопрос. У биржи для брокеров и терминал отдельный есть (свой) и каналы выделенные. Qlua это всё бы не потянуло.
avatar
alfacentavra, как вам кажется, весь этот Квик, немного не устаревшая система  ? 
она настолько допатопна, и не меняется уже лет 10 по сути, может больше 

эт так, инфа к размышлению 
avatar
Skifan, я полностью согласен. Это дизайн приложений 90х, функционал середины 2000х, но пока это самый массовый терминал. Вполне возможно, что появится какой-то конкурент. Пока если что-то новое выходит, то очень локальное, внутри отдельных брокеров.
В команде разработчиков квика в Новосибе люди когда-то связанные с биржей и они уже очень сильно интегрировались. Но ничто не вечно.
avatar

alfacentavra, мы упираемся в монополизм, российский 

но было интересно ваше мнение послушать, спасибо. 

Вообще с точки зрения логики, могли бы люди протолкнуть тему, организации более эффективности обмена информации защищенной системы, но… воз там дальше и останется, кому эт надо 

и к вашей теме QLua — это мертвый язык, согласитесь, его в принципе нету ) 

avatar
Skifan, да, qlua как латынь)
Причём lua много где применяется, в т.ч. в играх, т.е. вполне себе современный язык, но qlua уже давно мог бы и API различные иметь от разработчиков, и с другими языками программирования быть совместимым (python, c#, c++, java, kotlin, go и пр.), но самим разработчикам это не нужно, в т.ч. потому что нет конкуренции.
К слову в штатах около 50 различных терминалов. Вот это конкуренция! Правда они платные) И исторические данные платные) Но это уже другая история)
avatar
alfacentavra, Приятно было услышать другое мнение. Интересно.  
Спасибо. 
avatar
Skifan, нет никакого QLua, есть язык Lua, который легко прикручивается к любому приложению для автоматизации. Разработчики QUIK, к счастью, перестали изобретать свой велосипед с костылями и граблями (QPile) и прикрутили стандартный движок (сейчас Lua 5.4.1). Весь API, специфичный для квика, состоит из нескольких десятков функций.
Кирилл Гудков, ну да, qlua это либа для lua, а не язык
avatar
Кирилл Гудков, есть много особенностей, почему его и называют qlua (от мелочей, вроде у lua print вывод на экран, у qlua message, заканчивая тем что не все библиотеки от lua можно спокойно использовать, отдельные просто вырубят терминал). Плюс сами разработчики вносят много «интересного» от версии к версии терминала, из-за чего отваливаются и ранее работающие библиотеки и сами скрипты перестают работать.
Есть много разработчиков роботов, которые написали их и оптимизировали лет 5 назад и теперь просят ставить только какой-нибудь 7 квик и ни в коем случае не обновлять его. Этого всего не было, если бы речь шла о простом lua, прикрученным в терминал
avatar
alfacentavra, можно и API из одной функции сделать таким, что клиенты будут отваливаться через релиз. Кто вынужден был пользовался когда-либо PARDISO solver, тот в цирке не смеется.

В сам язык они «улучшений» не вносили, к счастью.
Здравствуйте. Спасибо за ваш труд.
Какими инструментами сейчас проводится отладка кодов в qlua? Имеется ли что-то подобное mql5?
avatar
Олег, я использую только торговый терминал и Notepad++. Для отслеживания ошибок можно еще задействовать DebugView, чтобы не спамить терминал сообщениями.
avatar

теги блога alfacentavra

....все тэги



UPDONW
Новый дизайн