Алгоритамски јазик QPILE за програмирање на роботи за тргување за QUIK.
Трговските роботи можат да бидат напишани на одреден јазик, слично на програмскиот код. QPILE е еден од нив, статијата ќе го разгледа овој јазик, ќе ги спореди јазиците QPILE и
LUA , а исто така ќе даде примери на роботи на овој јазик.
- Општи информации за QPILE
- Работа со маса
- QPILE конструира
- Типови на податоци
- Изрази
- Функции
- Програми за дебагирање
- QPILE или LUA?
- Како да креирате робот за тргување на QPILE?
- Тргување со роботи на QPILE – готови решенија
- Просечен робот кој се движи
- Н.Морошкин калкулатор за позиција
- Филтер за јачина на звук
- Опции Грци
- ТРИКС робот за тргување за QUIK
- M4 претпроцесор
Општи информации за QPILE
QPILE е кратенка што значи QUIK програмабилен интерфејс и логичка средина.
Ова е серија на команди интерпретирани од работната станица 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 конструира
Типови на податоци
- Низа – низа.
- Двоен е број со подвижна запирка.
- Колекција – колекција.
- Карта – асоцијативна низа – низа од парови што ви овозможува да добивате информации со клуч.
Изрази
Се применуваат аритметичките операции собирање, одземање, множење, делење. Се користат и логичките изрази „и“, „или“, еднакви, повеќе, помалку, неравенки, условна конструкција „ако … тогаш …“.
Функции
Функциите може да се наоѓаат каде било во програмата и да имаат различни имиња. Севкупно, достапни се 18 групи математички функции и функции за да се добијат вредностите на табелите и параметрите, асоцијативните низи, списокот на табели и други задачи. Прво одделение:
- Математички функции кои ви дозволуваат да ја вратите вредноста на синусот, косинус, тангента, котангента на аргументот, да го пресметате експонентот на аргументот, да генерирате случаен број итн.
- Општи команди : NEW_GLOBAL за иницијализирање на глобална променлива и MESSAGE за отворање пораки.
Функции за работа со:
- Збирки на предмети (Колекција) . Тие ви дозволуваат да креирате нова колекција, да го вратите потребниот број елементи, да ги замените или вметнете саканите вредности.
- Асоцијативни низи (MAP) . Помогнете да се создаде и управува со низата.
- Датотеки – работа со текстуални датотеки, одржување на дневник на програмата. Името на датотеката може да ја содржи патеката до неа.
- Жици .
- Графикони . Функциите GET_CANDLE за пристап до податоците на свеќата и GET_CANDLE EX за враќање на асоцијативна низа.
- Апликации . Креирање нарачки и нивно испраќање до системот за тргување.
- Тагови . Нивната конструкција и инсталација на графиконот. Додавање, бришење на една или сите етикети, добивање и поставување параметри за одредена ознака.
Постојат и функции за:
- За пристап до редови на произволни QUIK табели и списоци на достапни параметри . Пристап до податоците од табелата на работното место. Тие вклучуваат GET_ITEM за враќање на MAP и GET_NUMBER_OF за враќање на бројот на записи.
- За работа со програмабилна табела . Овие команди работат на OWN табелата. Се чита со стандардните функции од претходниот став и од овие функции. Оваа група вклучува команди за додавање, менување и бришење ред со индекс и целосно чистење на OWN табелата.
За да добиете вредности, користете:
- Табели на тековни занаети . Добивање параметри на информации за размена со помош на команди GET_PARAM (_EX).
- Цитат прозорци . Добивање на вредностите на цитатите за инструменти.
- Табели на позиции по инструменти и пари . Добивање податоци за клиент, компанија, инструмент, депо сметка по код.
Сервисни функции – враќање на датумот на тековната трговска сесија, асоцијативна серија, тековен датум и време, одредување на состојбата на поврзување, прекинување на режимот на пресметка.
Програми за дебагирање
Чекор-по-чекор контрола врз работата на програмата се врши во прозорецот “Debug”. Се отвора од контекстното мени „Започнете со пресметка во режим за отстранување грешки“. Може да се отвори и со командата 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?
За да креирате советник за тргување, ќе ви требаат следниве програми:
- НЕГОВА КВИК.
- Уредувач на кодови Notepad++.
- Водич за QPILE.
- XML додаток за откривање код во Notepad++.
Преземете ги и инсталирајте ги овие програми. Овозможете ја јазичната синтакса со поставување userDefineLang.xml на патеката C:\Users\User\ AppData\Roaming\Notepad++\
Прво, да ја создадеме следната стратегија за тргување. Скриптата треба да ги пресметува Hi и Low за последните неколку свеќи секоја минута, проверете ја моменталната цена на инструментот. Позицијата се отвора во потребната насока доколку цената на инструментот ја достигне максималната или минималната вредност за периодот. Кога ќе се прими сигнал за кратко, долгата позиција автоматски се затвора. Роботот ја користи алатката GAZP, временската рамка е поставена на 1 мин. Длабочината на мерење на високо ниво е поставена на 5 свеќи. За да внесете Долго, се поставува правило и пресекот на моменталната цена на максималната вредност за периодот. Роботот ќе влезе во Short ако моменталната цена ја премине минималната вредност за овие 5 свеќи. Напишете блок код во Notepad++ со основни поставки и датум и време на серверот. Овој код е прикажан на сликата подолу.
Првите 4 линии код го формираат насловот на програмата. Помеѓу линиите 6 и 44 се наоѓа телото на програмата, која ја содржи содржината на роботот. Линиите 7 – 12 содржат кориснички поставки, кои ги вклучуваат шифрите на инструментот, групата и клиентот, бројот на сметката на MICEX. Овие вредности не се менуваат за време на извршувањето на програмата. Линиите 13 – 16 се почетните вредности на променливите. Тие ќе се ресетираат на нула при секое повторување. Линиите 17 – 21 содржат индикација за користење на датумот и времето на серверот. Овие податоци се пренесуваат на функцијата DATETIME и се претвораат во формат на текст. Линиите 22 – 29 ги испраќаат примените податоци на табелата. Кодот мора да се зачува и да се назначи екстензијата qpl.
Отворете ја програмата во QUIK со притискање на Ctrl+F10 и избирање на генерирана датотека qpl. Користете ја комбинацијата Ctrl+F11 за да го отворите прозорецот „Работа со портфолио“ и да го поставите периодот за пресметување на портфолиото на 5 минути. Притиснете Ctrl+F12 за да ги поставите колоните да се прикажуваат во табелата. Сликата го прикажува резултатот од работата на роботот.
Ајде да додадеме уште неколку функции и услови во нашата програма.
Блокот „Кориснички поставки“ е дополнет со променливите NUMBER и INTERVAL, кои ќе се користат во функција на добивање на последните N ленти. Функцијата DATETIME ги поставува датумот и времето на серверот, а од него се повикуваат тековните функции за датум и време CURDATE и CURTIME. Тековното време се претвора во број на линијата 24. Линијата 26 го поставува времето за алгоритмот да работи од 10:00:01 до 18:40:00 UTC.
Најчесто, индикаторите, осцилаторите, статистичките пресметки се пресметуваат со последните N свеќи од табелата. QPILE нема функција за собирање на бројот на свеќи пред N периоди како таква, но постои функција GET_CANDLE која пристапува до свеќите на табелата по датум и време во текстуален формат. Нашиот код ја содржи функцијата за добивање на последните N ленти OHLC(). Создава колекција со параметрите на последните свеќи вгнездени во списокот КОЛЕКЦИЈА. Програмата ја проверува вредноста на INTERVAL и ако таа не спаѓа во опсегот 0…60, се прикажува порака дека вредноста не одговара на дозволениот опсег. Во линијата 88 е креирана колекција MAP со свеќи. Јамка FOR која ја прикажува табелата до потребната длабочина со чекорот INTERVAL од новата до старата свеќа. Во редот 90, по објавувањето на циклусот, роботот се враќа назад еден интервал. Кога ќе добиете свеќа со GET_CANDLE, ставете го во колекцијата BARLIST користејќи ја функцијата INSERT_COLLECTION_TEAM. Како резултат на работата на командата OHLC(), BARLIST се надополнува со последните свеќи од табелата со инструменти во износ од NUMBER. Бројот на елементи во колекцијата е побаран од командата GET_COLLECTION_COUNT() и пријавен од променливата BARCOUNT. Датумот, времето на серверот, вредностите на променливите INSTRUMENT и BARCOUNT се пријавени од функцијата SET_VALUE() во OUTPUT. Оваа низа е создадена со командата CREATE_MAP(). Податоците спаѓаат во прилагодената табела, која може да се види на фотографијата подолу. вредностите на променливите INSTRUMENT и BARCOUNT се пријавени од функцијата SET_VALUE() во OUTPUT. Оваа низа е создадена со командата CREATE_MAP(). Податоците спаѓаат во прилагодената табела, која може да се види на фотографијата подолу. вредностите на променливите INSTRUMENT и BARCOUNT се пријавени од функцијата SET_VALUE() во OUTPUT. Оваа низа е создадена со командата CREATE_MAP(). Податоците спаѓаат во прилагодената табела, која може да се види на фотографијата подолу.
Тргување со роботи на QPILE – готови решенија
Просечен робот кој се движи
Демо робот не е погоден за вистинско тргување.
Роботот вклучува 5 параметри. Вредностите на идентификаторот DATE, TIME, PRICE се поставени на ниво 30. Идентификаторите MOVING и TP се поставени на нула прецизност. Кодот на роботот на движечки просек напишан под QPILE: [колони на галерија=”5″ ids=”14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]
Н.Морошкин калкулатор за позиција
Програма за пресметување на нивоата на максимално дозволеното повлекување и целта за долги и кратки позиции по тековни цени за барање и понуда. Нивоата се пресметуваат за 2 вредности на волуменот за влез во позиција. Роботот го наоѓа дозволениот волумен на позиција при доделување на налог за стоп во еден чекор од почетната цена со пресметка на отворање позиција во насока на раст на шипката. Пронајдените нивоа се внесуваат во терминалниот прозорец, кои последователно се рефлектираат во табелата со цени. Трансакциите се фиксирани за даден инструмент. Ако се отвори позиција, роботот започнува да ги пресметува неговите параметри. Во зависност од промената на положбата, доделените нарачки се прилагодуваат.
Филтер за јачина на звук
Портфолио робот за пресметување на аритметичката средина на јачината на звукот за свеќи и споредување со просечниот производ со коефициентот X. Правилно работи со исцртани графикони во избраниот временски период.
Опции Грци
Портфолио за пресметување и прикажување „Грци“ на опции. Се разликува од методот Black-Showers.
ТРИКС робот за тргување за QUIK
Програмата се базира на TRIX индикаторот. Кога индикаторот се затвора над нултата линија, наведеното ниво, роботот ја зазема позицијата Долга. Позицијата е затворена со Take Profit, Stop Loss или trailing stop.
M4 претпроцесор
Програма за работа со 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к