QUIK үчүн соода роботторун программалоо үчүн QPILE алгоритмдик тили.
Соода роботтору программалык кодго окшош белгилүү бир тилде жазылышы мүмкүн. QPILE алардын бири, макалада бул тил каралат, QPILE жана
LUA тилдери салыштырылат , ошондой эле бул тилдеги роботтордун мисалдары келтирилет.
- QPILE жөнүндө жалпы маалымат
- Стол менен иштөө
- QPILE конструкциялары
- Маалымат түрлөрү
- Экспрессиялар
- Функциялар
- Мүчүлүштүктөрдү оңдоо программалары
- QPILE же LUA?
- QPILEде соода роботун кантип түзүүгө болот?
- QPILE боюнча соода роботтору – даяр чечимдер
- Кыймылдуу орточо робот
- Н Морошкин позициясынын калькулятору
- Үн чыпкасы
- Варианттар гректер
- QUIK үчүн TRIX соода роботу
- M4 Preprocessor
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 конструкциялары
Маалымат түрлөрү
- Сап – сап.
- Double – калкыма чекиттүү сан.
- Коллекция – коллекция.
- Карта – ассоциативдик массив – ачкыч менен маалымат алууга мүмкүндүк берген жуптардын ырааттуулугу.
Экспрессиялар
Кошуу, кемитүү, көбөйтүү, бөлүү арифметикалык амалдары колдонулат. “жана”, “же”, барабар, көбүрөөк, аз, теңсиздиктер, шарттуу куруу “эгер… анда…” деген логикалык туюнтмалар да колдонулат.
Функциялар
Функциялар программанын каалаган жеринде жайгашып, ар кандай аталыштарга ээ болушу мүмкүн. Бардыгы болуп, таблицалардын жана параметрлердин, ассоциативдик массивдердин, таблицалардын тизмесин жана башка тапшырмалардын маанилерин алуу үчүн математикалык функциялардын жана функциялардын 18 тобу бар. Биринчи класс:
- Аргументтин синус, косинус, тангенс, котангенс маанисин кайтарууга, аргументтин көрсөткүчүн эсептөөгө, кокус санды генерациялоого ж.б.у.с. мүмкүндүк берүүчү математикалык функциялар .
- Жалпы буйруктар : глобалдык өзгөрмөнү инициализациялоо үчүн NEW_GLOBAL жана билдирүүлөрдү ачуу үчүн MESSAGE.
Иштей турган функциялар:
- Объекттердин коллекциялары (Жыйнак) . Алар жаңы коллекция түзүүгө, керектүү сандагы элементтерди кайтарууга, керектүү маанилерди алмаштырууга же киргизүүгө мүмкүндүк берет.
- Ассоциативдик массивдер (MAP) . Массивди түзүүгө жана башкарууга жардам бериңиз.
- Файлдар – тексттик файлдар менен иштөө, программанын журналын жүргүзүү. Файлдын аталышы ага жолду камтышы мүмкүн.
- Strings .
- Графиктер . Шам маалыматтарына жетүү үчүн GET_CANDLE жана ассоциативдик массивди кайтаруу үчүн GET_CANDLE EX функциялары.
- Тиркемелер . Заказдарды түзүү жана аларды соода системасына жөнөтүү.
- Tags . Диаграммада аларды куруу жана орнотуу. Бир же бардык энбелгилерди кошуу, жок кылуу, белгилүү бир энбелги үчүн параметрлерди алуу жана орнотуу.
Төмөнкүлөр үчүн дагы функциялар бар:
- Каалаган QUIK таблицаларынын саптарына жана жеткиликтүү параметрлердин тизмелерине жетүү үчүн . Жумушчу таблицанын маалыматтарына кирүү. Аларга MAPты кайтаруу үчүн GET_ITEM жана жазуулардын санын кайтаруу үчүн GET_NUMBER_OF кирет.
- Программалануучу таблица менен иштөө . Бул буйруктар 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де соода роботун кантип түзүүгө болот?
Соода кеңешчисин түзүү үчүн сизге төмөнкү программалар керек болот:
- ITS Quik.
- Notepad++ код редактору.
- QPILE колдонмосу.
- Notepad++ ичинде кодду аныктоо үчүн XML плагини.
Бул программаларды жүктөп алып, орнотуңуз. C:\Users\User\ AppData\Roaming\Notepad++\ жолуна userDefineLang.xml коюу менен тил синтаксисин иштетиңиз
Биринчиден, төмөнкү соода стратегиясын түзөлү. Сценарий ар бир мүнөт сайын акыркы бир нече шам үчүн Hi жана Төмөндү эсептеп, инструменттин учурдагы баасын текшерүү керек. Эгерде инструменттин баасы мезгил ичинде максималдуу же минималдуу мааниге жетсе, позиция талап кылынган багытта ачылат. Кыска үчүн сигнал кабыл алынганда, узун позиция автоматтык түрдө жабылат. Робот GAZP куралын колдонот, убакыт алкагы 1 мин. Hi-төмөн өлчөө тереңдиги 5 шамга коюлган. Long киргизүү үчүн, эреже белгиленген жана мезгил үчүн максималдуу маани учурдагы баанын кесилиши. Эгерде учурдагы баа ушул 5 шамдын минималдуу маанисин кесип өтсө, робот Short кирет. Notepad++ программасында негизги орнотуулар жана сервердин күнү жана убактысы менен код блогун жазыңыз. Бул код төмөнкү сүрөттө көрсөтүлгөн.
Коддун биринчи 4 саптары программанын башын түзөт. 6 жана 44-саптардын ортосунда роботтун мазмунун камтыган программанын корпусу жайгашкан. 7 – 12-саптар инструменттин, топтун жана кардардын коддорун, ММКБдагы эсептин номерин камтыган колдонуучунун жөндөөлөрүн камтыйт. Бул баалуулуктар программаны аткаруу учурунда өзгөрбөйт. 13-16-саптар өзгөрмөлөрдүн баштапкы маанилери. Алар ар бир итерация өтүүсүндө нөлгө кайтарылат. 17 – 21-саптар сервердин датасын жана убактысын колдонууну камтыйт. Бул маалымат DATETIME функциясына өткөрүлүп, текст форматына айландырылат. 22-29-саптар алынган маалыматтарды таблицага жөнөтөт. Код сакталып, qpl кеңейтүүсү көрсөтүлүшү керек.
Ctrl+F10 баскычтарын басып, түзүлгөн qpl файлын тандоо менен QUIK программасында ачыңыз. “Портфолио менен иштөө” терезесин ачуу үчүн Ctrl+F11 комбинациясын колдонуңуз жана портфолионун эсептөө мөөнөтүн 5 мүнөткө коюңуз. Таблицада көрсөтүлө турган мамычаларды коюу үчүн Ctrl+F12 басыңыз. Сүрөттө роботтун ишинин натыйжасы көрсөтүлгөн.
Программабызга дагы бир нече функцияларды жана шарттарды кошолу.
“Колдонуучунун орнотуулары” блогу САН жана 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 менен шам алганыңызда, INSERT_COLLECTION_TEAM функциясын колдонуп, аны BARLIST жыйнагына жайгаштырыңыз. OHLC() командасынын иштешинин натыйжасында BARLIST инструменттер диаграммасындагы акыркы шамдар менен САН өлчөмүндө толукталат. Коллекциядагы элементтердин саны GET_COLLECTION_COUNT() буйругу менен суралат жана BARCOUNT өзгөрмө аркылуу кабарланат. INSTRUMENT жана BARCOUNT өзгөрмөлөрүнүн сервер күнү, убактысы, маанилери OUTPUT ичиндеги SET_VALUE() функциясы тарабынан билдирилет. Бул массив CREATE_MAP() буйругу менен түзүлгөн. Маалыматтар төмөндөгү сүрөттө көрүнүп турган салт таблицага түшөт. INSTRUMENT жана BARCOUNT өзгөрмөлөрдүн маанилери OUTPUT ичиндеги SET_VALUE() функциясы тарабынан билдирилет. Бул массив CREATE_MAP() буйругу менен түзүлгөн. Маалыматтар төмөндөгү сүрөттө көрүнүп турган салт таблицага түшөт. INSTRUMENT жана BARCOUNT өзгөрмөлөрдүн маанилери OUTPUT ичиндеги SET_VALUE() функциясы тарабынан билдирилет. Бул массив 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 соода роботу
Программа TRIX индикаторуна негизделген. Индикатор нөл сызыгынан, көрсөтүлгөн деңгээлден жогору жабылганда, робот Лонг позициясын алат. Позиция Take Profit, Stop Loss же арткы аялдама менен жабылат.
M4 Preprocessor
QPILE жана Lua менен иштөө программасы. Аткарылуучу файлдары, документациясы жана кадимки туюнтма талдоосу бар DLL файлдары бар архивдерди камтыйт. Программаны колдонуу үчүн, сиз аткарылуучу файлдарды таңгактан чыгарып, regexp2ди C:\Windows жолунда жайгаштырышыңыз керек. QUIK үчүн QPILE боюнча сабактар: https://youtu.be/vMTXwDUujpI Quik терминалында QPILEге скрипт орнотуу: https://youtu.be/0B7qL8Svh7I github боюнча бөлүм, ал QPILE алгоритмдик тилин колдонууну сүрөттөйт. QUIK тутумунун жумушчу станциясы шилтемеде жайгашкан – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE – эскирген тил, бирок абдан жөнөкөй жана башталгыч соодагерлерге да жеткиликтүү. Узак убакыт бою өзүн далилдеген соода роботтору жана программалары анын үстүндө иштөөнү улантууда. Бирок, татаалыраак тапшырмалар үчүн LUA колдонуу жакшы.
0к