Algoritmiline keel QPILE kauplemisrobotite programmeerimiseks QUIK-i jaoks. Kauplemisroboteid saab sarnaselt programmikoodile kirjutada kindlas keeles. QPILE on üks neist, artiklis käsitletakse seda keelt, võrreldakse QPILE ja LUA keeli ning tuuakse ka näiteid selles keeles olevate robotite kohta.
- Üldine teave QPILE kohta
- Töötamine lauaga
- QPILE konstruktsioonid
- Andmetüübid
- Väljendid
- Funktsioonid
- Silumisprogrammid
- QPILE või LUA?
- Kuidas luua QPILE’is kauplemisrobotit?
- QPILE kauplemisrobotid – valmislahendused
- Liikuv keskmine robot
- N. Moroškini positsioonikalkulaator
- Helitugevuse filter
- Valikud kreeklased
- TRIX kauplemisrobot QUIK jaoks
- M4 eelprotsessor
Üldine teave QPILE kohta
QPILE on lühend, mis tähistab QUIK programmeeritavat liidest ja loogilist keskkonda.
See on QUIK-i tööjaama tõlgendatud käskude jada. Seda kasutatakse peamiselt väärtpaberiportfellide hinna arvutamiseks. Keelt kasutatakse ka:
- klientide varade hinna dünaamiline ümberarvutamine maakleri töölaual ja nende portfellides. Viimasel juhul arvutatakse ümber ka nende koguhind;
- puuduvate näitajate leidmine, kasutades oma algoritme ja tagatislaenamise andmeid;
- õige kauplemisstrateegia väljatöötamine.
Keel kirjeldab tabeli ülesehitust: veergude ja ridade määramist, valemeid. Viimases saab arvutamiseks kasutada matemaatilisi tehteid, muutujaid, andmeid teistest tabelitest. QUIK-serverist või kasutaja kettalt laaditud programmikoodi töötleb keeletõlk, mis arvutab valemites olevad väärtused. Ühe programmi tabelitel on üks andmeallikas, kuid arvutused ei dubleerita ega mõjuta süsteemi efektiivsust. QUIK-tabelitega töötamisel on QPILE-i tabelitel standardfunktsioonid. QUIK töökohal on varustatud QPILE koodi siluriga. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Keel võimaldab kirjeldada uusi etteantud struktuuriga tabeleid, esile tõsta teatud väärtustega lahtreid, arvutada välja matemaatiliste ja loogiliste avaldiste põhjal. Kasutaja saab märguandeid helisignaali või tekstisõnumi kujul. QPILE-i tabeleid saab redigeerida, printida, kopeerida, eksportida ODBC ja DDE serveri kaudu. Algandmed pärinevad QUIK-i tabelitest:
- tehingud, sealhulgas täitmiseks ja isikustamata;
- orderid, sh stop orderid, börsiväliste tehingute ja orderite jaoks – arveldustehingutega seotud tehingute aruanded;
- “kliendiportfell”, “osta/müüa”
- andmed osaleja positsioonidest raha, kauplemiskontode, instrumentide kaupa.
QPILE-l põhinevaid tabeleid ei saa kontekstimenüü kaudu tekstifaili kopeerida ja tehnilise analüüsi süsteemidesse eksportida ning nende põhjal diagramme arendada. QPILE-põhiseid tabeleid ei saa filtreerida ega sortida.
Töötamine lauaga
Programmikoodi laadimiseks tuleb valida teenuste menüü ja seejärel QPILE skriptid. Võite kasutada ka kombinatsiooni Ctrl+F11. Pärast seda, kui peate klõpsama “Lisa” ja valima soovitud faili. Sellel on .qpl laiend ja selle nimi kuvatakse loendis Saadaolevad skriptid.
Kui programmis on viga, teeb süsteem “Teateaknas” teate, mis sisaldab vigase faili nime ja veaga rea numbrit. Kui failis tõrkeid ei leitud, näidatakse väljadel järgmised andmed:
- tabeli nimi;
- veergude ja klientide arv;
- identifikaatorite ja klientide nimekiri;
- parameetrite loend ja faili lähtekood.
Nupp “Laadi alla kohalikult” võimaldab teil saada tabeli failist ja “Laadi üles serverisse” saadab programmi serverisse, et kõik kasutajad saaksid sellele juurde pääseda. Tabeli loomiseks klõpsake nuppu Loo tabel. Valige jaotises “Saadaolevad skriptid” käivitatav programm, määrake ridade arv läbi “Klientide filtri”, määrake vajalikud veerud ja nende järjestus.
Arvutamise peatamine ja jätkamine, arvutuse uuesti alustamine ja silumisrežiimis, kirjelduse faili salvestamine, valemi demonstreerimine ja skripti parameetrid on saadaval kontekstimenüüs.
QPILE konstruktsioonid
Andmetüübid
- String – string.
- Double on ujukomaarv.
- Kollektsioon – kollektsioon.
- Kaart – assotsiatiivne massiiv – paaride jada, mis võimaldab teil saada teavet võtme järgi.
Väljendid
Rakendatakse liitmise, lahutamise, korrutamise, jagamise aritmeetilisi tehteid. Kasutatakse ka loogilisi väljendeid “ja”, “või”, võrdub, rohkem, vähem, ebavõrdsused, tingimuslik konstruktsioon “kui … siis …”.
Funktsioonid
Funktsioonid võivad asuda programmis kõikjal ja neil võivad olla erinevad nimed. Kokku on tabelite ja parameetrite väärtuste, assotsiatiivsete massiivide, tabelite loendi ja muude ülesannete saamiseks saadaval 18 matemaatiliste funktsioonide ja funktsioonide rühma. Esimene klass:
- Matemaatilised funktsioonid , mis võimaldavad tagastada argumendi siinuse, koosinuse, puutuja, kotangensi väärtuse, arvutada argumendi eksponendi, genereerida juhuslikku arvu jne.
- Üldkäsud : NEW_GLOBAL globaalse muutuja lähtestamiseks ja MESSAGE sõnumite avamiseks.
Funktsioonid, millega töötada:
- Esemete kogud (Kogu) . Need võimaldavad teil luua uue kollektsiooni, tagastada vajaliku arvu elemente, asendada või sisestada soovitud väärtused.
- Assotsiatiivsed massiivid (MAP) . Aidake massiivi luua ja hallata.
- Failid – tekstifailidega töötamine, programmi logi-logi pidamine. Faili nimi võib sisaldada selle asukohta.
- Stringid .
- Graafikud . Funktsioonid GET_CANDLE küünlaandmetele juurdepääsuks ja GET_CANDLE EX assotsiatiivse massiivi tagastamiseks.
- Rakendused . Tellimuste koostamine ja kauplemissüsteemi saatmine.
- Sildid . Nende ehitus ja paigaldamine graafikule. Ühe või kõigi siltide lisamine, kustutamine, konkreetse sildi parameetrite hankimine ja seadistamine.
Samuti on olemas järgmised funktsioonid:
- Juurdepääs suvaliste QUIK-tabelite ridadele ja saadaolevate parameetrite loenditele . Juurdepääs töökoha tabeliandmetele. Nende hulka kuuluvad GET_ITEM MAP-i tagastamiseks ja GET_NUMBER_OF kirjete arvu tagastamiseks.
- Programmeeritava tabeliga töötamiseks . Need käsud töötavad OMA tabelis. See on loetav eelmise lõigu standardfunktsioonide ja nende funktsioonide abil. See rühm sisaldab käske indeksiga rea lisamiseks, muutmiseks ja kustutamiseks ning OMA tabeli täielikuks tühjendamiseks.
Väärtuste saamiseks kasutage:
- Jooksvate tehingute tabelid . Vahetusteabe parameetrite hankimine GET_PARAM (_EX) käskude abil.
- Tsiteeri aknaid . Instrumentide noteeringute väärtuste saamine.
- Positsioonide tabelid instrumentide ja raha järgi . Kliendi, ettevõtte, instrumendi, depokonto andmete saamine koodi järgi.
Teenindusfunktsioonid – jooksva kauplemisseansi kuupäeva, assotsiatiivsete seeriate, jooksva kuupäeva ja kellaaja tagastamine, ühenduse oleku määramine, arvutusrežiimi katkestamine.
Silumisprogrammid
Programmi toimimise samm-sammuline juhtimine toimub aknas “Silumine”. See avatakse kontekstimenüüst “Alusta arvutust silumisrežiimis”. Seda saab avada ka käsuga breakpoint() ja programmirida tõstetakse punaselt esile. Aknas on väljad programmi koodi ja muutuja väärtustega. Akna allosas on nupud “Järgmine samm”, “Jätka täitmist”, “Lõpeta arvutamine”. F5 vajutamine jätkab programmi täitmist, kombinatsioon Shift + F5 lõpetab silumise, klahv F10 suunab järgmisele reale.
QPILE või LUA?
LUA on uus programmeerimiskeel kauplemisrobotite loomiseks. Nagu QPILE, rakendatakse seda QUIK terminalis. https://articles.opexflow.com/programming/lua.htm Kauplemisrobotite arendamisele pühendatud sait näitab LUA keele eeliseid QPILE ees. Seega võib see toimida kompileerimata skripti ja baitkoodina, mis on varustatud arendaja tööriistade ja objektorienteeritud programmeerimismehhanismidega. LUA programmidega saab ühendada ka teistes programmeerimiskeeltes kirjutatud objekte. LUA pakub 8 andmetüüpi, sealhulgas metatabeleid. LUA keel on mitme lõimega, kiire ning tehingud ja terminali sündmused on asünkroonsed. LUA on levinum kui QPILE ja sellele on kirjutatud palju laiendusi.
QPILE keel on nüüd aegunud. Foorumite eksperdid soovitavad kasutada LUA-d. Kuigi kasulikke ja tõhusaid programme kasutatakse endiselt.
QPILE keel on aga võrreldes LUA-ga lihtne, nii et kui sul pole programmeerimise kogemust, on parem valida QPILE. Selles keeles saate kirjutada lihtsa roboti, kui teil pole vaja keerulisi arvutusi teha.
Kuidas luua QPILE’is kauplemisrobotit?
Kauplemisnõustaja loomiseks vajate järgmisi programme:
- SEE Quik.
- Notepad++ koodiredaktor.
- QPILE juhend.
- XML-plugin koodi tuvastamiseks rakenduses Notepad++.
Laadige alla ja installige need programmid. Keele süntaksi lubamiseks asetage userDefineLang.xml teele C:\Users\User\ AppData\Roaming\Notepad++\
Kõigepealt loome järgmise kauplemisstrateegia. Skript peaks iga minuti järel arvutama Hi ja Low viimaste küünalde jaoks, kontrollige instrumendi hetkehinda. Positsioon avatakse vajalikus suunas, kui instrumendi hind saavutab perioodi maksimum- või miinimumväärtuse. Lühiajalise signaali vastuvõtmisel suletakse pikk asend automaatselt. Robot kasutab GAZP tööriista, ajaraamiks on seatud 1 min. Hi-low mõõtmissügavuseks on seatud 5 küünalt. Pika sisestamiseks seatakse reegel ja jooksva hinna ristumiskoht perioodi maksimaalse väärtusega. Robot sisestab Lühike, kui hetkehind ületab nende 5 küünla miinimumväärtuse. Kirjutage programmis Notepad++ koodiplokk põhiseadete ning serveri kuupäeva ja kellaajaga. See kood on näidatud alloleval pildil.Esimesed 4 koodirida moodustavad programmi päise. 6. ja 44. ridade vahel on programmi keha, mis sisaldab roboti sisu. Read 7–12 sisaldavad kasutaja seadeid, mis sisaldavad instrumendi, grupi ja kliendi koode, kontonumbrit MICEXis. Need väärtused ei muutu programmi täitmise ajal. Read 13–16 on muutujate algväärtused. Need lähtestatakse igal iteratsioonikäigul nullile. Read 17–21 sisaldavad viidet serveri kuupäeva ja kellaaja kasutamiseks. Need andmed edastatakse funktsioonile DATETIME ja teisendatakse tekstivormingusse. Read 22–29 saadavad saadud andmed tabelisse. Kood tuleb salvestada ja määrata qpl laiend.
Avage programm QUIK-is, vajutades Ctrl+F10 ja valides genereeritud qpl-faili. Kasutage Ctrl+F11 kombinatsiooni, et avada aken “Töö portfellidega” ja määrata portfelli arvutamise perioodiks 5 minutit. Tabelis kuvatavate veergude määramiseks vajutage klahvikombinatsiooni Ctrl+F12. Pildil on roboti töö tulemus.
Lisame oma programmi veel mõned funktsioonid ja tingimused. Plokk “Kasutaja seaded” on täiendatud muutujatega NUMBER ja INTERVAL, mida kasutatakse viimase N riba hankimise funktsioonis. Funktsioon DATETIME määrab serveri kuupäeva ja kellaaja ning sellest kutsutakse välja praegused kuupäeva ja kellaaja funktsioonid CURDATE ja CURTIME. Praegune kellaaeg teisendatakse numbriks real 24. Rida 26 määrab algoritmi käitamise aja vahemikus 10:00:01 kuni 18:40:00 UTC.Kõige sagedamini arvutatakse indikaatorid, ostsillaatorid, statistilised arvutused diagrammi viimase N küünla järgi. QPILE-l puudub funktsioon küünalde arvu kogumiseks N perioodi tagasi, kuid on olemas funktsioon GET_CANDLE, mis pääseb graafiku küünaldele juurde kuupäeva ja kellaaja järgi tekstivormingus. Meie kood sisaldab funktsiooni viimase N riba hankimiseks OHLC(). See loob kollektsiooni viimaste loendis KOGU pesastatud küünalde parameetritega. Programm kontrollib INTERVAL väärtust ja kui see ei jää vahemikku 0…60, kuvatakse teade, et väärtus ei vasta lubatud vahemikule. Küünaldega MAP kollektsioon luuakse real 88. FOR silmus, mis pollib diagrammi vajaliku sügavusega INTERVALI sammuga uuelt küünalt vanale. Real 90 läheb robot pärast tsükli deklareerimist intervalli tagasi. Kui saate küünla koos GET_CANDLE’iga, asetage see kogusse BARLIST, kasutades funktsiooni INSERT_COLLECTION_TEAM. Käsu OHLC() töö tulemusena täieneb BARLIST instrumentaalkaardi viimaste küünaldega summas NUMBER. Elementide arvu kogus küsib käsk GET_COLLECTION_COUNT() ja teatab muutuja BARCOUNT. Serveri kuupäev, kellaaeg, INSTRUMENT ja BARCOUNT muutujate väärtused edastatakse VÄLJUNDis funktsiooni SET_VALUE() abil. See massiiv luuakse käsu CREATE_MAP() abil. Andmed langevad kohandatud tabelisse, mida näete alloleval fotol. muutujate INSTRUMENT ja BARCOUNT väärtused edastab funktsioon SET_VALUE() väljas OUTPUT. See massiiv luuakse käsu CREATE_MAP() abil. Andmed langevad kohandatud tabelisse, mida näete alloleval fotol. muutujate INSTRUMENT ja BARCOUNT väärtused edastab funktsioon SET_VALUE() väljas OUTPUT. See massiiv luuakse käsu CREATE_MAP() abil. Andmed langevad kohandatud tabelisse, mida näete alloleval fotol.
QPILE kauplemisrobotid – valmislahendused
Liikuv keskmine robot
Demorobot ei sobi päris kauplemiseks. Robot sisaldab 5 parameetrit. DATE, TIME, PRICE identifikaatorite väärtused on seatud tasemele 30. MOVING ja TP identifikaatorid on seatud nulli täpsusega. QPILE alla kirjutatud liikuva keskmise roboti kood:
N. Moroškini positsioonikalkulaator
Programm maksimaalse lubatud väljavõtmise taseme ning pikkade ja lühikeste positsioonide eesmärgi arvutamiseks jooksvate müügi- ja pakkumishindade juures. Tasemed arvutatakse positsiooni sisestamise mahu kahe väärtuse jaoks. Robot leiab stopp-orderi määramisel lubatud positsiooni mahu ühes sammus avamishinnast koos positsiooni avamise arvestusega lati kasvu suunas. Leitud tasemed sisestatakse terminali aknasse, mis hiljem kajastuvad hinnagraafikus. Tehingud on fikseeritud antud instrumendi jaoks. Kui positsioon avatakse, hakkab robot oma parameetreid arvutama. Sõltuvalt positsiooni muutusest kohandatakse määratud tellimusi.
Helitugevuse filter
Portfooliorobot küünalde mahu aritmeetilise keskmise arvutamiseks ja selle võrdlemiseks X koefitsiendiga keskmise korrutisega Töötab õigesti valitud ajaperioodi graafikutega.
Valikud kreeklased
Portfell valikute “kreeklaste” arvutamiseks ja kuvamiseks. See erineb Black-Showersi meetodist.
TRIX kauplemisrobot QUIK jaoks
Programm põhineb TRIX indikaatoril. Kui indikaator sulgub nulljoonest, määratud tasemest kõrgemale, võtab robot pika positsiooni. Positsiooni sulgeb Take Profit, Stop Loss või trailing stop.
M4 eelprotsessor
Programm QPILE ja Lua töötamiseks. Sisaldab arhiive koos käivitatavate failidega, dokumentatsiooni ja regulaaravaldise parsimisega DLL-faile. Programmi kasutamiseks peate käivitatavad failid lahti pakkima ja asetama regexp2 teele C:\Windows. QUIK-i QPILE-i õppetunnid: https://youtu.be/vMTXwDUujpI Skripti installimine QPILE-i Quiki terminalis: https://youtu.be/0B7qL8Svh7I Githubi jaotis, mis kirjeldab QPILE-i algoritmilise keele kasutamist. QUIK süsteemi tööjaam, mis asub lingil – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE on aegunud keel, kuid üsna lihtne ja kättesaadav isegi algajatele kauplejatele. Kaubandusrobotid ja -programmid, mis on end pikka aega tõestanud, töötavad selle kallal edasi. Keerulisemate ülesannete jaoks on aga parem kasutada LUA-d.
0к