Qpile или lua что лучше
Перейти к содержимому

Qpile или lua что лучше

  • автор:

Вопрос по QUIK (Qpile, Lua).

Еще

ВНИМАНИЕ! КОММЕНТАРИИ ПЕРВОГО УРОВНЯ В ВОПРОСАХ УПОРЯДОЧИВАЮТСЯ ПО ЧИСЛУ ПЛЮСИКОВ, А НЕ ПО ВРЕМЕНИ ПУБЛИКАЦИИ.

Есть робот (написан на Qpile), который при торговле умеет на Срочном рынке самостоятельно переходить после экспирации на
следующий инструмент. Для своей работы он получает информацию о свечах с графика функцией «GET_CANDLE».
Конечная цель — запустить робота на виртуальном ПК и забыть про него на пару лет.
Проблема — Как «заставить» графики самостоятельно менять инструмент после экспирации (может у кого-нибудь есть такой
скрипт, например на Lua)? Или можно ли «научить» робота получать информацию о свечах, минуя графики?
P.S.«Клоунов» прошу сразу «идти в цирк».
За плюсики — Respect.

  • 15 февраля 2017, 12:35
  • Ответить

Еще

1) Как бы начал решать этот вопрос я в лоб из lua.
os.execute(«WndConverter.exe . »)
надеюсь ход мысли понятен

2) либо CreateDataSource для получение свечей без графиков. Это для Lua

  • 15 февраля 2017, 12:44
  • Ответить

Еще

Конкретный способ реализации зависит от того, какая методика смены тикера у Вас применяется, но в целом, Андрей К все верно написал.
Ну и в любом случае, я бы рекомендовал перейти с Qpile на Lua (это как минимум). А лучше — на С#, через QUIKSharp.
Да, и еще: Сильно сомневаюсь, что у Вас получится «запустить… … и забыть на пару лет». Ситуации разные бывают, и оставлять систему без присмотра на такой длительной срок как минимум опасно.

  • 15 февраля 2017, 14:56
  • Ответить

Еще

Спасибо!
Видимо, действительно, настало время для изучения Lua…

  • 15 февраля 2017, 19:45
  • Ответить

Еще

Андрей Кольцов, Вот Вам в помощь пара ссылок:

Когда я начинал писать на QLua первые две ссылки мне сильно помогли.

Также, не забудьте скачать библиотеку функций QL.lua в ней ОЧЕНЬ много полезного.

  • 16 февраля 2017, 16:40
  • Ответить

Еще

Prophetic, Большое спасибо!

  • 16 февраля 2017, 16:52
  • Ответить

Еще

Только зарегистрированные и авторизованные пользователи могут оставлять ответы.

С помощью каких инструментов/ЯП создаётся торговый робот?

Для терминала Quik указано, что при создании торгового робота могут использоваться ЯП Lua и Qpile. При этом в интернете достаточно много информации по написанию торговых роботов на самых разных языках (VBA,C, Python,R и т.д.)

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

Как я вижу эти этапы (возможно, неверно):

1. Вывод информации из терминала. Как производить вывод информации (в Excel или в БД), средствами одного ли только Qpile?

2. Анализ информации, создание робота. Этап анализа информации с последующим созданием непосредственно логики нужно выполнять на поддерживаемых терминалом Qpile/Lua либо можно использовать другие ЯП? Потенциально рассматриваю варианты VBA/R, в меньшей степени — Python, поэтому более всего интересует возможность использования этих ЯП.

3. Обратный ввод информации в терминал. Существует ли интерфейс (API) для такой операции либо опять же нужно использовать Lua/Qpile? В каком виде должна храниться выводимая информация?

Возможно, другие терминалы, в отличие от QUIK, предполагают более удобный способ создания торгового робота и ввода/вывода информации, если да, прошу уточнить.

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

  • Вопрос задан более трёх лет назад
  • 868 просмотров

QLUA — новый встроенный язык

LUA — это свободно распространяемый язык программирования, чем-то напоминающий JavaScript. В общем и целом, это один из наиболее распространённых скриптовых языков в мире. Теперь он имплементирован в терминал QUIK под названием QLUA.

Принципиальные преимущества перед QPILE:

  • Работа как в виде нескомпилированного скрипта, так и в виде байт-кода
  • Наличие механизмов ООП (объектно-ориентированного программирования)
  • 8 типов данных, включая метатаблицы
  • Возможность подключения внешних объектов, написанных на других языках программирования (С API)
  • Более высокая скорость исполнения (по сравнению с QPILE)
  • Виртуальная машина со сборкой мусора
  • Многопоточность
  • Наличие готовых инструментов разработчика
  • Асинхронная обработка событий терминала
  • Обращение к свечам по индексу
  • Асинхронные транзакции
  • Широкие возможности работы с таблицами разнородных данных
  • Распространённость языка, наличие сообществ, готовый инструментарий, масса расширений

Широкий шаг вперед. Похоже, что qpile уходит за ненадобностью в прошлое.

Остальные изменения, произошедшие в этой версии, меня не впечатлили по сравнению с QLUA.

На текущий момент полностью отсутствуют средства взаимодействия с GUI терминала, однако они будут добавлены. Интерфейс к Windows GIU придется делать (или адаптировать что-то из доступного). При удачном решении последнего вопроса надобность в сторонних средствах для построения роботов с использованием терминала QUIK становится близкой к нулю.

Язык QPILE в обозримом будущем будет по-прежнему поддерживаться терминалом — все написанные на нём программы будут работать по-прежнему. Развитие языка QPILE, очевидно, не предполагается.

Недостаточно прав для комментирования

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Торговые роботы могут быть написаны на определенном языке, подобно программному коду. QPILE является одним из них в статье будет рассмотрен этот язык, проведено сравнение языков QPILE и LUA, а также приведены примеры роботов на этом языке.

Общая информация про QPILE

QPILE – аббревиатура, расшифровываемая как QUIK Programmable Interface and Logic Environment.

Это ряд команд, интерпретируемых рабочим местом QUIK. Применяется он главным образом для расчета цены портфелей ценных бумаг. Язык используется также для:

  • динамического пересчета цены активов клиентов на рабочем столе брокера и в их портфелях. В последнем случае пересчитывается еще и суммарная их цена;
  • нахождения недостающих показателей по собственным алгоритмам и данных для маржинального кредитования;
  • разработки нужной торговой стратегии.

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

Загруженный с сервера QUIK или с диска пользователя код программы проходит обработку интерпретатором языка, вычисляющим значения в формулах. Таблицы одной программы имеют один источник данных, но расчеты не дублируются и не влияют на эффективность системы.

При работе с таблицами QUIK таблицы на QPILE имеют стандартные функции. QUIK в рабочем месте оснащен отладчиком кода QPILE.

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

Таблицы на QPILE можно редактировать, распечатать, скопировать, экспортировать по ODBC и DDE-серверу.

Исходными выступают данные из таблиц QUIK:

  • сделок, в т. ч для исполнения и обезличенных;
  • заявок, включая стоп-заявки, на внебиржевые сделки и заявки – отчеты на сделки РПС;
  • «клиентский портфель», «купить/продать»
  • данные из позиций участника по деньгам, торговым счетам, инструмента.

Таблицы на основе QPILE не могут быть скопированы в текстовый файл через контекстное меню и экспортированы в системы теханализа, а на их основе не могут быть разработаны графики. К таблицам на основе QPILE нельзя применять фильтры и сортировку.

Работа с таблицей

Чтобы загрузить код программы, нужно выбрать меню сервисы, затем QPILE скрипты. Также можно использовать комбинацию Ctrl+F11. После нужно кликнуть «Добавить» и выбрать нужный файл. Он имеет расширение .qpl, а его имя отобразится в списке «Доступные скрипты».

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

  • имя таблицы;
  • число столбцов и клиентов;
  • перечень идентификаторов и клиентов;
  • список параметров и исходный код файла.

Кнопка «Загрузить локально» позволит получить таблицу из файла, а «Загрузить на сервер» — отправить программу на сервер, чтобы все пользователи смогли получить к ней доступ.

Чтобы создать таблицу, щелкните «Создать таблицу». В «Доступных скриптах» выберите нужную для исполнения программу, задайте число строк через «Фильтр клиентов», определите нужные столбцы и их последовательность.

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

Конструкции QPILE

Типы данных

  • String – строковый.
  • Double – число в плавающей точкой.
  • Collection – коллекция.
  • Map – ассоциативный массив — последовательность пар, позволяющая получить информацию по ключу.

Выражения

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

Функции

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

  1. Математические функции, позволяющие вернуть значение синуса, косинуса, тангенса, котангенса аргумента, вычислить экспонент от аргумента, сгенерировать случайное число и т.д.
  2. Общие команды: NEW_GLOBAL для инициализации глобальной переменной и MESSAGE для открытия сообщений.

Функции для работы с:

  • Коллекциями объектов (Collection). Позволяют создать новую коллекцию, возвратить нужное количество элементов, заменить или вставить нужные значения.
  • Ассоциативными массивами (MAP). Помогут создать и управлять массивом.
  • Файлами — работа с текстовыми файлами, ведение log-журнала программы. Название файла могут содержать путь к нему.
  • Строками.
  • Графиками. Функции GET_CANDLE для обращения к данным «свечек» и GET_CANDLE EX для возврата ассоциативного массива.
  • Заявками. Создание заявок и их отправка в торговую систему.
  • Метками. Их построение и установка на график. Добавление, удаление одной или всех меток, получение и установка параметров для определенной метки.

Также есть функции для:

  1. Для обращения к строкам произвольных таблиц QUIK и спискам доступных параметров. Доступ к данным таблицы рабочего места. К ним относятся GET_ITEM для возврата MAP и GET_NUMBER_OF для возврата количества записей.
  2. Для работы с программируемой таблицей. Эти команды работают с таблицей OWN. Она доступна для чтения стандартными функциями из предыдущего пункта и данными функциями. В эту группу входят команды добавления, модификации и удаления строки с индексом, полного очищения таблицы OWN.

Для получения значений используют:

  1. Таблицы текущих торгов. Получение параметров биржевой информации с помощью команд GET_PARAM (_EX).
  2. Окна котировок. Получение значений котировок инструментов.
  3. Таблицы позиций по инструментам и деньгам. Получение данных по клиенту, фирме, инструменту, счету депо по коду.

Сервисные функции — возврат даты текущей торговой сессии, ассоциативного ряда, текущих даты и времени, определения состояния подключения, прерывание режима расчета.

Отладка программ

Пошаговый контроль за работой программы осуществляется в окне «Отладка». Оно открывается из контекстного меню «Начать расчет в режиме отладки». Также его можно открыть с помощью команды breakpoint(), при этом строка программы будет выделена красным цветом.

Окно содержит поля с кодом программы и значениями переменных. Внизу окна расположены кнопки «Следующий шаг», «Продолжить выполнение», «Остановить расчет».

Нажатие F5 продолжит выполнение программы, комбинация Shift+F5 остановит отладку, клавиша F10 направит на следующую строку.

QPILE или LUA?

LUA – новый язык программирования для создания торговых роботов. Как и QPILE, он имплементирован в терминал QUIK.

На сайте, посвященном разработке торговых роботов для трейдинга, приводятся преимущества языка LUA перед QPILE.

Так, он может функционировать в виде не скомпилированного скрипта и байт-кода, оснащен инструментами разработчика и механизмами объектно-ориентированного программирования.

К программам на LUA можно подключить объекты, выполненные на других языках программирования. На LUA представлены 8 типов данных, в том числе метатаблицы.

Язык LUA многопоточен, отличается большим быстродействием, а транзакции и события терминала проходят асинхронно. LUA более распространен, нежели QPILE, для него написано множество расширений.

Язык QPILE в настоящее признан устаревшим. Специалисты на форумах рекомендуют применять LUA. Хотя полезные и эффективные программы по-прежнему используются.

Тем не менее, язык QPILE отличается простотой, по сравнению с LUA, поэтому если Вы не обладаете опытом в программировании, лучше выбрать QPILE. На этом языке можно написать простого робота, если не требуется выполнять сложные вычисления.

Как создать торгового робота на QPILE?

Чтобы создать торгового советника, понадобятся программы:

  1. ИТС Quik.
  2. Редактор кода Notepad++.
  3. Руководство по QPILE.
  4. XML-плагин для обнаружения кода в Notepad++.

Загрузите и установите эти программы. Подключите синтаксис языка, поместив userDefineLang.xml в путь C:\Users\User\ AppData\Roaming\Notepad++\

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Для начала создадим следующую торговую стратегию. Скрипт ежеминутно должен рассчитывать Hi и Low за несколько последних свечей, проверять текущую цену инструмента.

В нужном направлении открывается позиция, если цена инструмента достигает максимального или минимального значения за период. При получении сигнала на short позиция long автоматически закрывается.

Робот использует инструмент GAZP, величина тайм-фрейма задана 1 мин. Глубина измерения hi-low задана в количестве 5 свечей. Для входа в Long задано правило и пересечении текущей цены максимального значения за период. В Short робот зайдет, если текущая цена пересечет минимальное значение за эти 5 свечей.

Напишите в Notepad++ блок кода с основными настройками и указанием на серверные дату и время. Этот код представлен на картинке ниже.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Первые 4 строки кода образуют заголовок программы. Между строками 6 и 44 расположено тело программы, в котором содержится содержание робота.

На строках 7 – 12 расположены пользовательские настройки, включающие в себя коды инструмента, группы и клиента, номер счета на ММВБ. В ходе выполнения программы эти значения неизменны.

Строки 13 – 16 – начальные значения переменных. Они будут обнуляться при каждом проходе итерации.

Строки 17 – 21 содержат указание на применение серверных даты и времени. Эти данные передаются в функцию DATETIME и преобразуются в текстовый формат.

Строки 22 – 29 отправляют полученные данные в таблицу.

Код нужно сохранить и задать расширение qpl.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Откройте программу в QUIK, нажав Ctrl+F10 и выбрав созданный qpl-файл. Комбинацией Ctrl+F11 откройте окно «Работа с портфелями» и установите период расчета портфеля 5 мин. Нажмите Ctrl+F12, чтобы установить столбцы, которые следует отобразить в таблице. На картинке виден результат работы робота.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Добавим в нашу программу еще несколько функций и условий.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Блок «Пользовательские настройки» дополнен переменными NUMBER и INTERVAL, которые будут задействованы в функции получения N последних баров. Функция DATETIME устанавливает серверные дату и время, а из нее вызваны функции текущих даты и времени CURDATE и CURTIME. Текущее время преобразуется в число в строке 24.

Строка 26 устанавливает время работы алгоритма с 10:00:01 до 18:40:00 МСК.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Чаще всего, индикаторы, осцилляторы, статистические расчеты рассчитываются по N последним свечам графика. В QPILE нет функции забора количества свечей N периодов назад как таковой, но есть функция GET_CANDLE, которая обращается к свечам на графике по дате и времени в текстовом формате.

В нашем коде представлена функция получения N последних баров OHLC(). Она создает коллекцию с параметрами последних свечей, вложенными в список COLLECTION.

Программа проверяет значение INTERVAL, и если оно не входит в интервал 0… 60, выводится сообщение о несоответствии значения допустимому диапазону.

MAP-коллекция со свечами создается в строке 88. Цикл FOR с опросом графика на необходимую глубину с шагом INTERVAL от новой к старой свече.

В строке 90, после объявления цикла, робот возвращается на интервал назад.

Когда Вы получите свечу с помощью GET_CANDLE, поместите ее в коллекцию BARLIST с помощью функции INSERT_COLLECTION_TEAM.

BARLIST в итоге работы команды OHLC() пополняется последними свечами с графика инструмента в количестве NUMBER. Количество элементов коллекции запрашивается командой GET_COLLECTION_COUNT () и сообщается переменной BARCOUNT.

Серверные дата, время, значения переменных INSTRUMENT и BARCOUNT сообщаются функцией SET_VALUE () в OUTPUT. Этот массив создан командой CREATE_MAP ().

Данные попадают в пользовательскую таблицу, которую можно видеть на фото ниже.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Торговые роботы на QPILE – готовые решения

Робот на скользящей средней

Демонстрационный робот, не подходящий для реального трейдинга.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Робот включает в себя 5 параметров. Значения идентификаторов DATE, TIME, PRICE заданы на уровне 30. Для идентификаторов MOVING и TP задана нулевая точность.

Код робота на скользящей средней писанного под QPILE:

Калькулятор позиции Н. Морошкина

Программа для расчета уровней максимально допустимой просадки и цели на длинной и короткой позициях по текущим ценам ask и bid.

Уровни рассчитываются для 2 значений объема входа в позицию. Робот находит допустимый объем позиции при назначении стоп-приказа в одном шаге от цены открытия с расчетом открытия позиции в сторону роста бара.

В окно терминала вносятся найденные уровни, которые впоследствии отражаются в графике цены.

ПО заданному инструменту фиксируются сделки. Если будет обнаружено открытие позиции, робот начинает расчет ее параметров. В зависимости от изменения позиции назначенные приказы корректируются.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Фильтр объемов

Робот-портфель для вычисления среднего арифметического значения объема для свечей и сравнения его со средним произведением на коэффициент X. Корректно работает с построенными графиками в выбранном отрезке времени.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Греки опционов

Портфель для вычисления и отображения «греков» опционов. Отличается от метода Блэка-Шоуэрса.

Алгоритмический язык QPILE для программирования торговых роботов для QUIK

Торговый робот TRIX для QUIK

Программа основана на Индикаторе TRIX. При закрытии индикатора выше нулевой линии, заданного уровня робот принимает позицию Long. Позиция закрывается по Take Profit, Stop Loss или трейлинг-стопу.

М4 Препроцессор

Программа для работы с QPILE и Lua. Включает в себя архивы с выполняемыми файлами, документацией и DLL-файлами с разбором регулярных выражений. Чтобы задействовать программу, нужно распаковать выполняемые файлы и поместить regexp2 в путь C:\Windows.

Уроки по на QPILE для QUIK:

Установка скрипта на QPILE в терминале Quik:

Раздел на github, который описывает применение алгоритмического языка QPILE, встроенного в рабочее место системы QUIK находится по ссылке — https://euvgub.github.io/quik_user_manual/ch8.html.

QPILE – язык устаревший, но довольно простой и доступный даже начинающим трейдерам. На нем продолжают работать торговые роботы и программы, зарекомендовавшие себя в течение длительного времени. Однако, для более сложных задач лучше использовать LUA.

Если вам понравилась статья, то подписывайтесь на мой телеграм канал.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *