alfacentavra
alfacentavra личный блог
30 июня 2023, 16:56

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 для начинающих, кружок «авиамоделизма».

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

    Странные цифры. При постановке вопроса «хотя бы раз пользовались одним из перечисленных» сумма процентов должна быть существенно выше 100.
      • alfacentavra, 
        цифра должна быть существенно более 100%. Не верю я в то, что использующие Квик ни разу не использовали мобильное приложение.
          • alfacentavra, 
            мда… теперь я понимаю кто именно пишет на qlua. успехов :)
  • Rostislav Kudryashov
    30 июня 2023, 18:36
    Почему немногие применяют алготейдинг? Потому что всем известно, что в трейдинге главное — психология. Очень много текстов.
    Но никто не пишет, как встроить психологию в алгоритм.
    • GOLD
      30 июня 2023, 20:24
      Rostislav Kudryashov, трейдинг — это математика

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

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

        А базы то все же на чем работают? У нашей Мосбиржи  ?  
      • Skifan
        30 июня 2023, 23:04
        alfacentavra, как вам кажется, весь этот Квик, немного не устаревшая система  ? 
        она настолько допатопна, и не меняется уже лет 10 по сути, может больше 

        эт так, инфа к размышлению 
          • Skifan
            30 июня 2023, 23:33

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

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

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

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

              • Skifan
                01 июля 2023, 00:22
                alfacentavra, Приятно было услышать другое мнение. Интересно.  
                Спасибо. 
    • Кирилл Гудков
      01 июля 2023, 11:29
      Skifan, нет никакого QLua, есть язык Lua, который легко прикручивается к любому приложению для автоматизации. Разработчики QUIK, к счастью, перестали изобретать свой велосипед с костылями и граблями (QPile) и прикрутили стандартный движок (сейчас Lua 5.4.1). Весь API, специфичный для квика, состоит из нескольких десятков функций.
      • Некто
        01 июля 2023, 13:23
        Кирилл Гудков, ну да, qlua это либа для lua, а не язык
        • Кирилл Гудков
          01 июля 2023, 15:57
          alfacentavra, можно и API из одной функции сделать таким, что клиенты будут отваливаться через релиз. Кто вынужден был пользовался когда-либо PARDISO solver, тот в цирке не смеется.

          В сам язык они «улучшений» не вносили, к счастью.
  • Олег
    30 октября 2023, 16:27
    Здравствуйте. Спасибо за ваш труд.
    Какими инструментами сейчас проводится отладка кодов в qlua? Имеется ли что-то подобное mql5?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн