Алгоритмічна мова QPILE для програмування торгівельних роботів для QUIK.
Торгові роботи можуть бути написані певною мовою, подібно до програмного коду. QPILE є одним з них у статті буде розглянута ця мова, проведено порівняння мов QPILE та
LUA , а також наведено приклади роботів цією мовою.
- Загальна інформація про QPILE
- Робота з таблицею
- Конструкції QPILE
- Типи даних
- Вирази
- Функції
- Налагодження програм
- QPILE чи LUA?
- Як створити торгового робота на QPILE?
- Торгові роботи на QPILE – готові рішення
- Робот на ковзній середній
- Калькулятор позиції Н. Морошкіна
- Фільтр обсягів
- Греки опціонів
- Торговий робот TRIX для QUIK
- М4 Препроцесор
Загальна інформація про QPILE
QPILE – абревіатура, що розшифровується як QUIK Programmable Interface and Logic Environment.
Це ряд команд, які інтерпретуються робочим місцем QUIK. Застосовується він головним чином розрахунку ціни портфелів цінних паперів. Мова використовується також для:
- динамічного перерахунку ціни активів клієнтів на робочому столі брокера та їх портфелях. У разі перераховується ще й сумарна їх вартість;
- знаходження відсутніх показників за власними алгоритмами та даними для маржинального кредитування;
- розробки необхідної торгової стратегії.
Мовою описується структура таблиці: призначення стовпців і рядків, формули. В останніх для обчислення можуть використовуватись математичні операції, змінні, дані з інших таблиць. Завантажений із сервера QUIK або з диска користувача код програми проходить обробку інтерпретатором мови, що обчислює значення у формулах. Таблиці однієї програми мають одне джерело даних, але розрахунки не дублюються і впливають ефективність системи. Працюючи з таблицями QUIK таблиці на QPILE мають стандартні функції. QUIK у робочому місці оснащений налагоджувачем коду QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Мова дозволить описати нові таблиці із заданою структурою, виділити кольором осередки з певними значеннями, обчислити поля на основі математичних та логічних виразів. Користувач отримає сповіщення у вигляді звукового сигналу або текстового повідомлення. Таблиці на QPILE можна редагувати, роздрукувати, скопіювати, експортувати з ODBC та DDE-серверу. Вихідними є дані з таблиць QUIK:
- угод, у т. ч. для виконання та знеособлених;
- заявок, включаючи стоп-заявки, на позабіржові угоди та заявки – звіти на угоди РПС;
- «Клієнтський портфель», «купити/продати»
- дані з позицій учасника щодо грошей, торгових рахунків, інструменту.
Таблиці на основі QPILE не можуть бути скопійовані в текстовий файл через контекстне меню та експортовані до систем теханалізу, а на їх основі не можуть бути розроблені графіки. До таблиць на основі QPILE не можна застосовувати фільтри та сортування.
Робота з таблицею
Щоб завантажити код програми, потрібно вибрати меню послуги, потім QPILE скрипти. Можна також використовувати комбінацію Ctrl+F11. Після цього потрібно клікнути «Додати» і вибрати потрібний файл. Він має розширення .qpl, а його ім’я з’явиться у списку “Доступні скрипти”.
- ім’я таблиці;
- число стовпців та клієнтів;
- перелік ідентифікаторів та клієнтів;
- список параметрів та вихідний код файлу.
Конструкції QPILE
Типи даних
- String – рядковий.
- Double – число в точці, що плаває.
- Collection – колекція.
- Map – асоціативний масив – послідовність пар, що дозволяє отримати інформацію за ключом.
Вирази
Застосовуються арифметичні дії додавання, віднімання, множення, розподілу. Також використовуються логічні вирази «і», «або», рівності, більше, менше, нерівності, умовна конструкція «якщо…, то…»
Функції
Функції можуть бути розміщені в будь-якому місці програми і мають різні імена. Усього доступно 18 груп математичних функцій та функцій для отримання значень таблиць та параметрів, асоціативних масивів, списку таблиць та інших завдань. Перша градація:
- Математичні функції , що дозволяють повернути значення синуса, косинуса, тангенсу, котангенсу аргументу, обчислити експонент від аргументу, згенерувати випадкове число тощо.
- Загальні команди : NEW_GLOBAL для ініціалізації глобальної змінної та MESSAGE для відкриття повідомлень.
Функції для роботи з:
- Колекціями об’єктів (Collection) . Дозволяють створити нову колекцію, повернути потрібну кількість елементів, замінити чи вставити потрібні значення.
- Асоціативними масивами (MAP) . Допоможуть створити та керувати масивом.
- Файлами – робота з текстовими файлами, ведення log-журналу програми. Назва файлу може містити шлях до нього.
- Рядками .
- Графіки . Функції GET_CANDLE для звернення до даних «свічок» та GET_CANDLE EX для повернення асоціативного масиву.
- Заявками . Створення заявок та їх відправлення до торгової системи.
- Мітками . Їх побудова та встановлення на графік. Додавання, видалення однієї або всіх позначок, отримання та встановлення параметрів для певної позначки.
Також є функції для:
- Для звернення до рядків довільних таблиць QUIK та списків доступних параметрів . Доступ до даних таблиці робочого місця. До них відносяться GET_ITEM для повернення MAP та GET_NUMBER_OF для повернення кількості записів.
- Для роботи з програмованою таблицею . Ці команди працюють із таблицею OWN. Вона доступна для читання стандартними функціями попереднього пункту та даними функціями. Ця група включає команди додавання, модифікації та видалення рядка з індексом, повного очищення таблиці OWN.
Для отримання значень використовують:
- Таблиці поточних торгів . Отримання параметрів біржової інформації за допомогою GET_PARAM (_EX).
- Вікна котирувань . Отримання значень котирувань інструментів.
- Таблиці позицій щодо інструментів та грошей . Отримання даних за клієнтом, фірмою, інструментом, рахунком депо за кодом.
Сервісні функції – повернення дати поточної торгової сесії, асоціативного ряду, поточної дати та часу, визначення стану підключення, переривання режиму розрахунку.
Налагодження програм
Покроковий контроль за роботою програми здійснюється у вікні «Налагодження». Воно відкривається з контекстного меню “Почати розрахунок в режимі налагодження”. Також його можна відкрити за допомогою команди breakpoint(), при цьому рядок програми буде виділено червоним кольором. Вікно містить поля з кодом програми та значеннями змінних. Внизу вікна розташовані кнопки “Наступний крок”, “Продовжити виконання”, “Зупинити розрахунок”. Натискання F5 продовжить виконання програми, комбінація Shift+F5 зупинить налагодження, клавіша F10 направить на наступний рядок.
QPILE чи LUA?
LUA – нова мова програмування для створення торгових роботів. Як і QPILE, він імплементований термінал QUIK. https://articles.opexflow.com/programming/lua.htm На сайті, присвяченому розробці торгових роботів для трейдингу, наводяться переваги мови LUA перед QPILE. Так, він може функціонувати у вигляді не скомпільованого скрипта та байт-коду, оснащений інструментами розробника та механізмами об’єктно-орієнтованого програмування. До програм LUA можна підключити об’єкти, виконані іншими мовами програмування. На LUA представлено 8 типів даних, зокрема метатаблиці. Мова LUA багатопотокова, відрізняється великою швидкодією, а транзакції та події терміналу проходять асинхронно. LUA найбільш поширений, ніж QPILE, для нього написано безліч розширень.
Мова QPILE в даний час визнана застарілою. Спеціалісти на форумах рекомендують застосовувати LUA. Хоча корисні та ефективні програми, як і раніше, використовуються.
Тим не менш, мова QPILE відрізняється простотою, порівняно з LUA, тому якщо Ви не маєте досвіду в програмуванні, краще вибрати QPILE. Цією мовою можна написати простого робота, якщо не потрібно виконувати складні обчислення.
Як створити торгового робота на QPILE?
Щоб створити торгового радника, знадобляться програми:
- ІТС Quik.
- Редактор коду Notepad++.
- Посібник з QPILE.
- XML-плагін для виявлення коду Notepad++.
Завантажте та встановіть ці програми. Підключіть синтаксис мови, помістивши userDefineLang.xml у шлях C:\Users\User\ AppData\Roaming\Notepad++\
Блок «Налаштування користувача» доповнений змінними NUMBER та INTERVAL, які будуть задіяні у функції отримання N останніх барів. Функція DATETIME встановлює серверні дату та час, а з неї викликані функції поточної дати та часу CURDATE та CURTIME. Поточний час перетворюється на число рядку 24. Рядок 26 встановлює час роботи алгоритму з 10:00:01 до 18:40:00 МСК.
Торгові роботи на QPILE – готові рішення
Робот на ковзній середній
Демонстраційний робот, який не підходить для реального трейдингу.
Калькулятор позиції Н. Морошкіна
Програма для розрахунку рівнів максимально допустимого просідання та мети на довгій та короткій позиціях за поточними цінами ask та bid. Рівні розраховуються для двох значень обсягу входу в позицію. Робот знаходить допустимий обсяг позиції при призначенні стоп-наказу за один крок від ціни відкриття з розрахунком відкриття позиції у бік зростання бару. У вікно терміналу вносяться знайдені рівні, що згодом відображаються у графіку ціни. ПО заданому інструменту фіксуються угоди. Якщо буде виявлено відкриття позиції, робот починає розрахунок параметрів. Залежно від зміни позиції призначені накази коригуються.
Фільтр обсягів
Робот-портфель для обчислення середнього арифметичного значення обсягу для свічок та порівняння його із середнім твором на коефіцієнт X. Коректно працює з побудованими графіками у вибраному відрізку часу.
Греки опціонів
Портфель для обчислення та відображення «греків» опціонів. Відрізняється від методу Блека-Шоуерса.
Торговий робот TRIX для QUIK
Програма базується на Індикаторі TRIX. При закритті індикатора вище нульової лінії заданого рівня робот приймає позицію Long. Позиція закривається за Take Profit, Stop Loss або трейлінг-стопом.
М4 Препроцесор
Програма для роботи з QPILE та Lua. Включає архіви з виконуваними файлами, документацією і DLL-файлами з розбором регулярних виразів. Щоб задіяти програму, потрібно розпакувати файли і помістити regexp2 в шлях C:\Windows. Уроки з QPILE для QUIK: https://youtu.be/vMTXwDUujpI Встановлення скрипту на QPILE у терміналі Quik: https://youtu.be/0B7qL8Svh7I Розділ на github, який описує застосування алгоритмічної мови QPILE, вбудованої в робоче місце системи QUIK знаходиться за посиланням – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE – мова застаріла, але досить проста і доступна навіть трейдерам-початківцям. На ньому продовжують працювати торгові роботи та програми, що зарекомендували себе протягом тривалого часу. Однак, для складніших завдань краще використовувати LUA.
0к