Gjuha algoritmike QPILE për programimin e robotëve tregtarë për QUIK.
Robotët tregtarë mund të shkruhen në një gjuhë specifike, të ngjashme me kodin e programit. QPILE është një prej tyre, artikulli do të shqyrtojë këtë gjuhë, do të krahasojë gjuhët QPILE dhe
LUA dhe gjithashtu do të japë shembuj të robotëve në këtë gjuhë.
- Informacione të përgjithshme rreth QPILE
- Puna me një tryezë
- konstruktet QPILE
- Llojet e të dhënave
- Shprehjet
- Funksione
- Programet e korrigjimit
- QPILE apo LUA?
- Si të krijoni një robot tregtar në QPILE?
- Robotët e tregtimit në QPILE – zgjidhje të gatshme
- Robot mesatar në lëvizje
- Llogaritësi i pozicionit N. Moroshkin
- Filtri i volumit
- Opsionet grekët
- Robot tregtar TRIX për QUIK
- paraprocesor M4
Informacione të përgjithshme rreth QPILE
QPILE është një shkurtim që qëndron për QUIK Programmable Interface and Logic Environment.
Kjo është një seri komandash të interpretuara nga stacioni i punës QUIK. Përdoret kryesisht për llogaritjen e çmimit të portofolit të letrave me vlerë. Gjuha përdoret gjithashtu për:
- rillogaritje dinamike e çmimit të aktiveve të klientëve në desktopin e ndërmjetësit dhe në portofolet e tyre. Në rastin e fundit, çmimi total i tyre gjithashtu rillogaritet;
- gjetjen e treguesve që mungojnë duke përdorur algoritmet dhe të dhënat e tyre për huadhënien me marzh;
- zhvillimin e strategjisë së duhur tregtare.
Gjuha përshkruan strukturën e tabelës: caktimin e kolonave dhe rreshtave, formulat. Në këtë të fundit, për llogaritje mund të përdoren veprime matematikore, variabla, të dhëna nga tabela të tjera. Kodi i programit i ngarkuar nga serveri QUIK ose nga disku i përdoruesit përpunohet nga përkthyesi i gjuhës, i cili llogarit vlerat në formula. Tabelat e një programi kanë një burim të dhënash, por llogaritjet nuk janë të dyfishta dhe nuk ndikojnë në efikasitetin e sistemit. Kur punoni me tabela QUIK, tabelat në QPILE kanë funksione standarde. QUIK në vendin e punës është i pajisur me një korrigjues të kodit QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Gjuha ju lejon të përshkruani tabela të reja me një strukturë të caktuar, të nënvizoni qelizat me vlera të caktuara, të llogaritni fushat bazuar në shprehjet matematikore dhe logjike. Përdoruesi do të marrë njoftime në formën e një sinjali zanor ose një mesazhi me tekst. Tabelat në QPILE mund të redaktohen, printohen, kopjohen, eksportohen nëpërmjet serverit ODBC dhe DDE. Të dhënat fillestare janë nga tabelat QUIK:
- transaksione, duke përfshirë për ekzekutim dhe jopersonale;
- urdhra, duke përfshirë urdhrat e ndalimit, për tregtitë pa recetë dhe porositë – raportet për tregtitë në marrëveshjet e shlyerjes;
- “portofoli i klientit”, “blej/shitet”
- të dhëna nga pozicionet e pjesëmarrësve sipas parave, llogarive tregtare, instrumentit.
Tabelat e bazuara në QPILE nuk mund të kopjohen në një skedar teksti përmes menysë së kontekstit dhe të eksportohen në sistemet e analizës teknike dhe grafikët nuk mund të zhvillohen në bazë të tyre. Tabelat e bazuara në QPILE nuk mund të filtrohen ose renditen.
Puna me një tryezë
Për të ngarkuar kodin e programit, duhet të zgjidhni menunë e shërbimeve, më pas skriptet QPILE. Ju gjithashtu mund të përdorni kombinimin Ctrl + F11. Pasi të duhet të klikoni “Shto” dhe zgjidhni skedarin e dëshiruar. Ai ka një shtesë .qpl dhe emri i tij do të shfaqet në listën e skripteve të disponueshme.
Nëse ka një gabim në program, sistemi do të bëjë një njoftim në “Dritarja e Mesazhit”, e cila do të përmbajë emrin e skedarit me defekt dhe numrin e linjës me gabimin. Nëse nuk u gjetën dështime në skedar, të dhënat e mëposhtme do të tregohen në fusha:
- emri i tabelës;
- numri i kolonave dhe klientëve;
- lista e identifikuesve dhe klientëve;
- listën e parametrave dhe kodin burimor të skedarit.
Butoni “Shkarko në nivel lokal” do t’ju lejojë të merrni tabelën nga një skedar dhe “Ngarko në server” do ta dërgojë programin në server në mënyrë që të gjithë përdoruesit të kenë akses në të. Për të krijuar një tabelë, klikoni Krijo tabelën. Në “Skriptet e disponueshme” zgjidhni programin që duhet të ekzekutoni, vendosni numrin e rreshtave përmes “Filterit të klientëve”, përcaktoni kolonat e kërkuara dhe sekuencën e tyre.
Ndërprerja dhe rifillimi i llogaritjes, fillimi i llogaritjes përsëri dhe në modalitetin e korrigjimit, ruajtja e përshkrimit në një skedar, demonstrimi i formulës dhe parametrat e skriptit janë të disponueshme në menynë e kontekstit.
konstruktet QPILE
Llojet e të dhënave
- Varg – varg.
- Double është një numër me pikë lundruese.
- Koleksion – një koleksion.
- Harta – një grup shoqërues – një sekuencë çiftesh që ju lejon të merrni informacion me çelës.
Shprehjet
Zbatohen veprimet aritmetike të mbledhjes, zbritjes, shumëzimit, pjesëtimit. Përdoren gjithashtu shprehjet logjike “dhe”, “ose”, e barabartë, më shumë, më pak, pabarazitë, ndërtimi i kushtëzuar “nëse … atëherë …”.
Funksione
Funksionet mund të vendosen kudo në program dhe të kenë emra të ndryshëm. Në total, 18 grupe funksionesh dhe funksionesh matematikore janë të disponueshme për të marrë vlerat e tabelave dhe parametrave, grupeve shoqëruese, një listë tabelash dhe detyra të tjera. Klasa e parë:
- Funksionet matematikore që ju lejojnë të ktheni vlerën e sinusit, kosinusit, tangjentës, kotangjentës së argumentit, llogaritni eksponentin e argumentit, gjeneroni një numër të rastësishëm, etj.
- Komandat e përgjithshme : NEW_GLOBAL për të inicializuar një ndryshore globale dhe MESSAGE për të hapur mesazhet.
Funksionet për të punuar me:
- Koleksione objektesh (Collection) . Ato ju lejojnë të krijoni një koleksion të ri, të ktheni numrin e kërkuar të elementeve, të zëvendësoni ose futni vlerat e dëshiruara.
- Vargjet asociative (MAP) . Ndihmoni për të krijuar dhe menaxhuar grupin.
- Skedarët – duke punuar me skedarë teksti, duke mbajtur një log-log të programit. Emri i skedarit mund të përmbajë shtegun drejt tij.
- Vargjet .
- Grafikët . Funksionon GET_CANDLE për të hyrë në të dhënat e qiririt dhe GET_CANDLE EX për të kthyer një grup shoqërues.
- Aplikacionet . Krijimi i porosive dhe dërgimi i tyre në sistemin e tregtimit.
- Etiketa . Ndërtimi dhe instalimi i tyre në grafik. Shtimi, fshirja e një ose të gjitha etiketave, marrja dhe vendosja e parametrave për një etiketë specifike.
Ekzistojnë gjithashtu funksione për:
- Për të aksesuar rreshtat e tabelave arbitrare QUIK dhe listat e parametrave të disponueshëm . Qasja në të dhënat e tabelës së vendit të punës. Këto përfshijnë GET_ITEM për të kthyer MAP-in dhe GET_NUMBER_OF për të kthyer numrin e hyrjeve.
- Për të punuar me një tabelë të programueshme . Këto komanda funksionojnë në tabelën OWN. Është i lexueshëm nga funksionet standarde nga paragrafi i mëparshëm dhe nga këto funksione. Ky grup përfshin komanda për shtimin, modifikimin dhe fshirjen e një rreshti me një indeks dhe pastrimin e plotë të tabelës OWN.
Për të marrë vlerat përdorni:
- Tabelat e tregtimeve aktuale . Marrja e parametrave të informacionit të shkëmbimit duke përdorur komandat GET_PARAM (_EX).
- Kuotat e dritareve . Marrja e vlerave të kuotave të instrumenteve.
- Tabelat e pozicioneve sipas instrumenteve dhe parave . Marrja e të dhënave për një klient, firmë, instrument, llogari depo me kod.
Funksionet e shërbimit – kthimi i datës së sesionit aktual të tregtimit, serive shoqëruese, datës dhe kohës aktuale, përcaktimi i gjendjes së lidhjes, ndërprerja e mënyrës së llogaritjes.
Programet e korrigjimit
Kontrolli hap pas hapi mbi funksionimin e programit kryhet në dritaren “Debug”. Hapet nga menyja e kontekstit “Fillimi i llogaritjes në modalitetin e korrigjimit”. Mund të hapet gjithashtu me komandën breakpoint() dhe linja e programit do të theksohet me të kuqe. Dritarja përmban fusha me kodin e programit dhe vlerat e variablave. Në fund të dritares ka butonat “Hapi tjetër”, “Vazhdo ekzekutimin”, “Ndalo llogaritjen”. Shtypja e F5 do të vazhdojë ekzekutimin e programit, kombinimi Shift + F5 do të ndalojë korrigjimin, tasti F10 do të drejtohet në rreshtin tjetër.
QPILE apo LUA?
LUA është një gjuhë e re programimi për krijimin e robotëve tregtarë. Ashtu si QPILE, ai zbatohet në terminalin QUIK. https://articles.opexflow.com/programming/lua.htm Një faqe e dedikuar për zhvillimin e robotëve të tregtimit për tregti tregon avantazhet e gjuhës LUA ndaj QPILE. Pra, mund të funksionojë si një skript dhe bajtkod jo i kompiluar, i pajisur me mjete zhvilluesish dhe mekanizma programimi të orientuar nga objekti. Objektet e shkruara në gjuhë të tjera programimi mund të lidhen me programet LUA. LUA ofron 8 lloje të dhënash, duke përfshirë tabelat meta. Gjuha LUA është me shumë fije, e shpejtë dhe transaksionet dhe ngjarjet e terminalit janë asinkrone. LUA është më e zakonshme se QPILE, dhe shumë shtesa janë shkruar për të.
Gjuha QPILE tani është e vjetëruar. Ekspertët në forume rekomandojnë përdorimin e LUA. Edhe pse programe të dobishme dhe efektive janë ende duke u përdorur.
Sidoqoftë, gjuha QPILE është e thjeshtë në krahasim me LUA, kështu që nëse nuk keni përvojë në programim, është më mirë të zgjidhni QPILE. Në këtë gjuhë, ju mund të shkruani një robot të thjeshtë nëse nuk keni nevojë të bëni llogaritje komplekse.
Si të krijoni një robot tregtar në QPILE?
Për të krijuar një këshilltar tregtar, do t’ju nevojiten programet e mëposhtme:
- E TIJ KUIK.
- Redaktori i kodit të Notepad++.
- Udhëzues për QPILE.
- Shtojca XML për zbulimin e kodit në Notepad++.
Shkarkoni dhe instaloni këto programe. Aktivizo sintaksën e gjuhës duke vendosur userDefineLang.xml në shtegun C:\Users\User\ AppData\Roaming\Notepad++\
Së pari, le të krijojmë strategjinë e mëposhtme të tregtimit. Skripti duhet të llogarisë Hi dhe Low për qirinjtë e fundit çdo minutë, kontrolloni çmimin aktual të instrumentit. Një pozicion hapet në drejtimin e kërkuar nëse çmimi i instrumentit arrin vlerën maksimale ose minimale për periudhën. Kur merret një sinjal për shkurt, pozicioni i gjatë mbyllet automatikisht. Roboti përdor mjetin GAZP, afati kohor është vendosur në 1 min. Thellësia e matjes hi-low është vendosur në 5 qirinj. Për të hyrë në Long, vendoset një rregull dhe kryqëzimi i çmimit aktual të vlerës maksimale për periudhën. Roboti do të hyjë në Short nëse çmimi aktual kalon vlerën minimale për këto 5 qirinj. Shkruani një bllok kodi në Notepad++ me cilësimet bazë dhe datën dhe kohën e serverit. Ky kod është paraqitur në foton më poshtë.
4 rreshtat e parë të kodit formojnë kokën e programit. Midis rreshtave 6 dhe 44 është trupi i programit, i cili përmban përmbajtjen e robotit. Rreshtat 7 – 12 përmbajnë cilësimet e përdoruesit, të cilat përfshijnë kodet e instrumentit, grupit dhe klientit, numrin e llogarisë në MICEX. Këto vlera nuk ndryshojnë gjatë ekzekutimit të programit. Rreshtat 13 – 16 janë vlerat fillestare të variablave. Ato do të rivendosen në zero në çdo kalim përsëritjeje. Rreshtat 17 – 21 përmbajnë një tregues për të përdorur datën dhe kohën e serverit. Këto të dhëna kalohen në funksionin DATETIME dhe konvertohen në format teksti. Rreshtat 22 – 29 dërgojnë të dhënat e marra në tabelë. Kodi duhet të ruhet dhe duhet të specifikohet shtrirja qpl.
Hapni programin në QUIK duke shtypur Ctrl+F10 dhe duke zgjedhur skedarin qpl të gjeneruar. Përdorni kombinimin Ctrl+F11 për të hapur dritaren “Work with Portfolios” dhe vendosni periudhën e llogaritjes së portofolit në 5 minuta. Shtypni Ctrl+F12 për të vendosur që kolonat të shfaqen në tabelë. Fotografia tregon rezultatin e punës së robotit.
Le të shtojmë disa funksione dhe kushte të tjera në programin tonë.
Blloku “Cilësimet e përdoruesit” plotësohet me variablat NUMBER dhe INTERVAL, të cilat do të përdoren në funksion të marrjes së shiritave të fundit N. Funksioni DATETIME cakton datën dhe orën e serverit, dhe funksionet aktuale të datës dhe orës CURDATE dhe CURTIME thirren prej tij. Ora aktuale konvertohet në një numër në rreshtin 24. Rreshti 26 cakton kohën që algoritmi të funksionojë nga ora 10:00:01 deri në 18:40:00 UTC.
Më shpesh, treguesit, oshilatorët, llogaritjet statistikore llogariten nga qirinjtë e fundit N të grafikut. QPILE nuk ka një funksion për mbledhjen e numrit të qirinjve N periudha më parë si i tillë, por ekziston një funksion GET_CANDLE që akseson qirinjtë në grafik sipas datës dhe orës në format teksti. Kodi ynë përmban funksionin për të marrë N shiritat e fundit OHLC(). Krijon një koleksion me parametrat e qirinjve të fundit të vendosur në listën KOLLEKSIONE. Programi kontrollon vlerën INTERVAL dhe nëse nuk bie në intervalin 0…60, shfaqet një mesazh që vlera nuk korrespondon me diapazonin e lejuar. Një koleksion MAP me qirinj krijohet në rreshtin 88. Një cikli FOR që sondaton grafikun në thellësinë e kërkuar me hapin INTERVAL nga qiriri i ri në atë të vjetër. Në rreshtin 90, pasi deklarohet cikli, roboti kthehet prapa një interval. Kur merrni një qiri me GET_CANDLE, vendoseni në koleksionin BARLIST duke përdorur funksionin INSERT_COLLECTION_TEAM. Si rezultat i funksionimit të komandës OHLC(), BARLIST plotësohet me qirinjtë e fundit nga grafiku i instrumenteve në shumën NUMBER. Numri i elementeve në koleksion kërkohet nga komanda GET_COLLECTION_COUNT() dhe raportohet nga ndryshorja BARCOUNT. Data, ora e serverit, vlerat e variablave INSTRUMENT dhe BARCOUNT raportohen nga funksioni SET_VALUE() në OUTPUT. Ky grup krijohet nga komanda CREATE_MAP(). Të dhënat bien në tabelën e personalizuar, e cila mund të shihet në foton më poshtë. vlerat e variablave INSTRUMENT dhe BARCOUNT raportohen nga funksioni SET_VALUE() në OUTPUT. Ky grup krijohet nga komanda CREATE_MAP(). Të dhënat bien në tabelën e personalizuar, e cila mund të shihet në foton më poshtë. vlerat e variablave INSTRUMENT dhe BARCOUNT raportohen nga funksioni SET_VALUE() në OUTPUT. Ky grup krijohet nga komanda CREATE_MAP(). Të dhënat bien në tabelën e personalizuar, e cila mund të shihet në foton më poshtë.
Robotët e tregtimit në QPILE – zgjidhje të gatshme
Robot mesatar në lëvizje
Roboti demonstrues nuk është i përshtatshëm për tregti reale.
Roboti përfshin 5 parametra. Vlerat e identifikuesit DATE, TIME, PRICE janë vendosur në nivelin 30. Identifikuesit MOVING dhe TP janë vendosur në saktësi zero. Kodi i robotit në mesataren lëvizëse të shkruar nën QPILE:
Llogaritësi i pozicionit N. Moroshkin
Një program për llogaritjen e niveleve të tërheqjes maksimale të lejueshme dhe objektivit për pozicionet e gjata dhe të shkurtra me çmimet aktuale të kërkesës dhe ofertës. Nivelet llogariten për 2 vlera të vëllimit të hyrjes së pozicionit. Roboti gjen vëllimin e lejueshëm të pozicionit kur cakton një urdhër ndalimi në një hap nga çmimi i hapjes me llogaritjen e hapjes së një pozicioni në drejtim të rritjes së shiritit. Nivelet e gjetura futen në dritaren e terminalit, të cilat më pas pasqyrohen në grafikun e çmimeve. Transaksionet janë fikse për një instrument të caktuar. Nëse hapet një pozicion, roboti fillon të llogarisë parametrat e tij. Në varësi të ndryshimit të pozicionit, urdhrat e caktuar rregullohen.
Filtri i volumit
Robot portofoli për llogaritjen e mesatares aritmetike të volumit për qirinj dhe krahasimin e tij me produktin mesatar me koeficientin X. Punon saktë me grafikët e vizatuar në periudhën kohore të zgjedhur.
Opsionet grekët
Portofoli për llogaritjen dhe paraqitjen e opsioneve “greke”. Ai ndryshon nga metoda Black-Showers.
Robot tregtar TRIX për QUIK
Programi bazohet në treguesin TRIX. Kur treguesi mbyllet mbi vijën zero, nivelin e specifikuar, roboti merr pozicionin e gjatë. Pozicioni mbyllet nga Take Profit, Stop Loss ose ndalesë pasuese.
paraprocesor M4
Program pune me QPILE dhe Lua. Përfshin arkivat me skedarë të ekzekutueshëm, dokumentacion dhe skedarë DLL me analizim të shprehjeve të rregullta. Për të përdorur programin, duhet të shpaketoni skedarët e ekzekutueshëm dhe të vendosni regexp2 në shtegun C:\Windows. Mësime mbi QPILE për QUIK: https://youtu.be/vMTXwDUujpI Instalimi i një skripti në QPILE në terminalin Quik: https://youtu.be/0B7qL8Svh7I Një seksion në github që përshkruan përdorimin e gjuhës algoritmike QPILE të integruar në Stacioni i punës i sistemit QUIK i vendosur në lidhjen – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE është një gjuhë e vjetëruar, por mjaft e thjeshtë dhe e aksesueshme edhe për tregtarët fillestarë. Robotët e tregtimit dhe programet që e kanë provuar veten për një kohë të gjatë vazhdojnë të punojnë në të. Sidoqoftë, për detyra më komplekse është më mirë të përdorni LUA.
0к