Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIK

Программирование

Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIK.
Гандлёвыя робаты могуць быць напісаны на вызначанай мове, падобна праграмнаму коду. QPILE з’яўляецца адным з іх у артыкуле будзе разгледжаны гэтую мову, праведзена параўнанне моў QPILE і
LUA , а таксама прыведзены прыклады робатаў на гэтай мове.

Агульная інфармацыя пра 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 для праграмавання гандлёвых робатаў для QUIKУ выпадку наяўнасці ў праграме памылкі сістэма зробіць апавяшчэнне ў «Акне паведамленняў», якое будзе змяшчаць імя дэфектнага файла і нумар радка з памылкай. Калі ў файле збояў не выяўлена, у палях будуць указаны наступныя дадзеныя:

  • імя табліцы;
  • колькасць слупкоў і кліентаў;
  • пералік ідэнтыфікатараў і кліентаў;
  • спіс параметраў і зыходны код файла.

Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIKКнопка “Загрузіць лакальна” дазволіць атрымаць табліцу з файла, а “Загрузіць на сервер” – адправіць праграму на сервер, каб усе карыстачы змаглі атрымаць да яе доступ. Каб стварыць табліцу, пстрыкніце “Стварыць табліцу”. У “Даступных скрыптах” абярыце патрэбную для выканання праграму, задайце колькасць радкоў праз “Фільтр кліентаў”, вызначыце патрэбныя слупкі і іх паслядоўнасць.
Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIKУ кантэкстным меню даступныя прыпыненні і аднаўленні разліку, пачаткі разліку нанова і ў рэжыме адладкі, захаванні апісання ў файл, дэманстрацыі формулы, параметраў скрыпту.

Канструкцыі 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. https://articles.opexflow.com/programming/lua.htm На сайце, прысвечаным распрацоўцы гандлёвых робатаў для трэйдзінг, прыводзяцца перавагі мовы 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:UsersUserUserAppDataRoamingNotepad++
Алгарытмічная мова 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Дадамо ў нашу праграму яшчэ некалькі функцый і ўмоў.
Блок “Карыстацкія наладкі” дапоўнены зменнымі NUMBER і INTERVAL, якія будуць задзейнічаны ў функцыі атрымання N апошніх бараў. Функцыя DATETIME усталёўвае серверныя дату і час, а з яе выкліканыя функцыі бягучых даты і часу CURDATE і CURTIME. Бягучы час пераўтворыцца ў лік у радку 24. Радок 26 устанаўлівае час працы алгарытму з 10:00:01 да 18:40:00 МСК.
Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIK
Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIK
Алгарытмічная мова QPILE для праграмавання гандлёвых робатаў для QUIKАлгарытмічная мова 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(). Дадзеныя трапляюць у карыстацкую табліцу, якую можна бачыць на фота ніжэй. значэння зменных INSTRUMENT і BARCOUNT паведамляюцца функцыяй SET_VALUE () у OUTPUT. Гэты масіў створаны камандай CREATE_MAP(). Дадзеныя трапляюць у карыстацкую табліцу, якую можна бачыць на фота ніжэй. значэння зменных 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: https://youtu.be/vMTXwDUujpI Усталяванне скрыпту на QPILE у тэрмінале Quik: https://youtu.be/0B7qL8Svh7I Раздзел на github, які апісвае ўжыванне алгарытмічнай мовы QQUILE, убудаванай у працоўнае месца сістэмы знаходзіцца па спасылцы – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE – мова састарэлая, але даволі простая і даступная нават пачаткоўцам трэйдарам. На ім працягваюць працаваць гандлёвыя робаты і праграмы, якія зарэкамендавалі сябе на працягу працяглага часу. Аднак, для больш складаных задач лепш выкарыстоўваць LUA.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Reply