Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK.
Trgovalni roboti so lahko napisani v določenem jeziku, podobno kot programska koda. QPILE je eden izmed njih, članek bo obravnaval ta jezik, primerjal jezika QPILE in LUA ter
navedel primere robotov v tem jeziku.
- Splošne informacije o QPILE
- Delo z mizo
- QPILE konstrukcije
- Vrste podatkov
- Izrazi
- Funkcije
- Programi za odpravljanje napak
- QPILE ali LUA?
- Kako ustvariti trgovalnega robota na QPILE?
- Roboti za trgovanje na QPILE – že pripravljene rešitve
- Robot drsečega povprečja
- Kalkulator položaja N. Moroshkin
- Glasnostni filter
- Možnosti Grki
- TRIX trgovalni robot za QUIK
- M4 predprocesor
Splošne informacije o QPILE
QPILE je okrajšava za QUIK programabilni vmesnik in logično okolje.
To je vrsta ukazov, ki jih interpretira delovna postaja QUIK. Uporablja se predvsem za izračun cene portfeljev vrednostnih papirjev. Jezik se uporablja tudi za:
- dinamično preračunavanje cene premoženja strank na namizju borznega posrednika in v njihovih portfeljih. V slednjem primeru se preračuna tudi njihova skupna cena;
- iskanje manjkajočih indikatorjev z lastnimi algoritmi in podatki za margin lending;
- razvoj prave strategije trgovanja.
Jezik opisuje strukturo tabele: imenovanje stolpcev in vrstic, formule. Pri slednjem se lahko za izračun uporabijo matematične operacije, spremenljivke, podatki iz drugih tabel. Programsko kodo, naloženo s strežnika QUIK ali z diska uporabnika, obdela jezikovni tolmač, ki izračuna vrednosti v formulah. Tabele enega programa imajo en vir podatkov, vendar se izračuni ne podvajajo in ne vplivajo na učinkovitost sistema. Pri delu s tabelami QUIK imajo tabele na QPILE standardne funkcije. QUIK na delovnem mestu je opremljen z razhroščevalnikom kod QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Jezik omogoča opis novih tabel z dano strukturo, označevanje celic z določenimi vrednostmi, izračun polj na podlagi matematičnih in logičnih izrazov. Uporabnik bo prejemal obvestila v obliki zvočnega signala ali SMS sporočila. Tabele na QPILE je mogoče urejati, tiskati, kopirati, izvažati preko ODBC in DDE strežnika. Začetni podatki so iz tabel QUIK:
- transakcije, tudi za izvršitev in neosebne;
- naročila, vključno s stop naročili, za posle na prostem trgu in naročila – poročila za posle v poravnalnih poslih;
- “portfelj strank”, “kupi/prodaj”
- podatki iz pozicij udeleženca po denarju, trgovalnih računih, instrumentih.
Tabel, ki temeljijo na QPILE, ni mogoče preko kontekstnega menija kopirati v besedilno datoteko in izvoziti v sisteme za tehnično analizo, na njihovi podlagi pa ni mogoče razviti grafikonov. Tabel, ki temeljijo na QPILE, ni mogoče filtrirati ali razvrščati.
Delo z mizo
Za nalaganje programske kode morate izbrati meni storitev in nato skripte QPILE. Uporabite lahko tudi kombinacijo Ctrl+F11. Potem morate klikniti “Dodaj” in izbrati želeno datoteko. Ima pripono .qpl in njegovo ime bo prikazano na seznamu razpoložljivih skriptov.
- ime tabele;
- število stolpcev in strank;
- seznam identifikatorjev in strank;
- seznam parametrov in izvorno kodo datoteke.
QPILE konstrukcije
Vrste podatkov
- Vrvica – vrvica.
- Double je število s plavajočo vejico.
- Zbirka – zbirka.
- Zemljevid – asociativni niz – zaporedje parov, ki vam omogoča, da dobite informacije po ključu.
Izrazi
Uporabljajo se aritmetične operacije seštevanja, odštevanja, množenja, deljenja. Uporabljajo se tudi logični izrazi “in”, “ali”, enako, več, manj, neenakosti, pogojne konstrukcije “če … potem …”.
Funkcije
Funkcije se lahko nahajajo kjerkoli v programu in imajo različna imena. Skupaj je na voljo 18 skupin matematičnih funkcij in funkcij za pridobivanje vrednosti tabel in parametrov, asociativnih nizov, seznama tabel in drugih nalog. prvi razred:
- Matematične funkcije , ki vam omogočajo, da vrnete vrednost sinusa, kosinusa, tangensa, kotangensa argumenta, izračunate eksponent argumenta, ustvarite naključno število itd.
- Splošni ukazi : NEW_GLOBAL za inicializacijo globalne spremenljivke in MESSAGE za odpiranje sporočil.
Funkcije za delo:
- Zbirke predmetov (Zbirka) . Omogočajo ustvarjanje nove zbirke, vrnitev zahtevanega števila elementov, zamenjavo ali vstavljanje želenih vrednosti.
- Asociativni nizi (MAP) . Pomagajte ustvariti in upravljati niz.
- Datoteke – delo z besedilnimi datotekami, vzdrževanje dnevnika programa. Ime datoteke lahko vsebuje pot do nje.
- Strune .
- Grafi . Funkcije GET_CANDLE za dostop do podatkov o svečah in GET_CANDLE EX za vrnitev asociativne matrike.
- Aplikacije . Ustvarjanje naročil in njihovo pošiljanje v trgovalni sistem.
- Oznake . Njihova konstrukcija in namestitev na grafikonu. Dodajanje, brisanje ene ali vseh etiket, pridobivanje in nastavitev parametrov za določeno etiketo.
Obstajajo tudi funkcije za:
- Za dostop do vrstic poljubnih tabel QUIK in seznamov razpoložljivih parametrov . Dostop do podatkov tabele delovnega mesta. Ti vključujejo GET_ITEM za vrnitev MAP in GET_NUMBER_OF za vrnitev števila vnosov.
- Za delo s programabilno mizo . Ti ukazi delujejo v tabeli OWN. Berejo ga standardne funkcije iz prejšnjega odstavka in te funkcije. Ta skupina vključuje ukaze za dodajanje, spreminjanje in brisanje vrstice z indeksom ter popolno brisanje tabele OWN.
Če želite pridobiti vrednosti, uporabite:
- Tabele trenutnih poslov . Pridobivanje parametrov informacij o izmenjavi z ukazi GET_PARAM (_EX).
- Citirana okna . Pridobivanje vrednosti kotacij instrumentov.
- Tabele pozicij po instrumentih in denarju . Pridobivanje podatkov o stranki, podjetju, instrumentu, depo računu po šifri.
Storitvene funkcije – vračanje datuma trenutne trgovalne seje, asociativne serije, trenutnega datuma in časa, določanje stanja povezave, prekinitev načina izračuna.
Programi za odpravljanje napak
Postopni nadzor nad delovanjem programa se izvaja v oknu »Odpravljanje napak«. Odpre se iz kontekstnega menija “Začni izračun v načinu za odpravljanje napak”. Odprete ga lahko tudi z ukazom breakpoint() in programska vrstica bo označena rdeče. Okno vsebuje polja s programsko kodo in vrednostmi spremenljivk. Na dnu okna so gumbi “Naslednji korak”, “Nadaljuj z izvajanjem”, “Ustavi izračun”. S pritiskom na F5 se bo izvajanje programa nadaljevalo, kombinacija Shift + F5 bo ustavila razhroščevanje, tipka F10 bo usmerila v naslednjo vrstico.
QPILE ali LUA?
LUA je nov programski jezik za ustvarjanje trgovalnih robotov. Tako kot QPILE je implementiran v terminalu QUIK. https://articles.opexflow.com/programming/lua.htm Stran, namenjena razvoju trgovalnih robotov za trgovanje, prikazuje prednosti jezika LUA pred QPILE. Torej lahko deluje kot nepreveden skript in bajtna koda, opremljena z orodji za razvijalce in mehanizmi objektno usmerjenega programiranja. Objekte, napisane v drugih programskih jezikih, je mogoče povezati s programi LUA. LUA ponuja 8 vrst podatkov, vključno z metatabelami. Jezik LUA je večniten, hiter, transakcije in terminalski dogodki pa so asinhroni. LUA je pogostejši od QPILE in zanj je bilo napisanih veliko razširitev.
Jezik QPILE je zdaj zastarel. Strokovnjaki na forumih priporočajo uporabo LUA. Čeprav se uporabni in učinkoviti programi še vedno uporabljajo.
Vendar pa je jezik QPILE preprost v primerjavi z LUA, tako da če nimate izkušenj s programiranjem, je bolje izbrati QPILE. V tem jeziku lahko napišete preprostega robota, če vam ni treba izvajati zapletenih izračunov.
Kako ustvariti trgovalnega robota na QPILE?
Če želite ustvariti svetovalca za trgovanje, boste potrebovali naslednje programe:
- ITS Quik.
- Urejevalnik kod Notepad++.
- Vodnik po QPILE.
- Vtičnik XML za zaznavanje kode v Notepad++.
Prenesite in namestite te programe. Omogočite sintakso jezika tako, da userDefineLang.xml postavite na pot C:\Users\User\ AppData\Roaming\Notepad++\
Blok “Uporabniške nastavitve” je dopolnjen s spremenljivkama ŠTEVILO in INTERVAL, ki bosta uporabljeni v funkciji pridobivanja zadnjih N stolpcev. Funkcija DATETIME nastavi datum in čas strežnika, iz nje pa se kličeta trenutni funkciji datuma in časa CURDATE in CURTIME. Trenutni čas se pretvori v številko v vrstici 24. Vrstica 26 nastavi čas za izvajanje algoritma od 10:00:01 do 18:40:00 UTC.
Roboti za trgovanje na QPILE – že pripravljene rešitve
Robot drsečega povprečja
Demo robot ni primeren za pravo trgovanje.
Kalkulator položaja N. Moroshkin
Program za izračun ravni najvišjega dovoljenega črpanja in cilja za dolge in kratke pozicije pri trenutnih cenah povpraševanja in ponudbe. Ravni so izračunane za 2 vrednosti obsega vnosa pozicije. Robot najde dovoljen obseg pozicije pri dodelitvi stop naročila v enem koraku od odpiralne cene z izračunom odpiranja pozicije v smeri rasti stolpca. Najdene ravni se vnesejo v okno terminala, ki se nato odražajo v grafikonu cen. Transakcije so fiksne za določen instrument. Če je pozicija odprta, robot začne izračunavati njene parametre. Glede na spremembo pozicije se dodeljena naročila prilagodijo.
Glasnostni filter
Portfeljski robot za izračun aritmetične sredine volumna za sveče in primerjavo s povprečnim produktom s koeficientom X. Deluje pravilno z izrisanimi grafikoni v izbranem časovnem obdobju.
Možnosti Grki
Portfelj za izračun in prikaz “Grkov” opcij. Razlikuje se od metode Black-Showers.
TRIX trgovalni robot za QUIK
Program temelji na indikatorju TRIX. Ko se indikator zapre nad ničelno črto, določeno raven, robot zavzame dolg položaj. Pozicija se zapre s funkcijo Take Profit, Stop Loss ali trailing stop.
M4 predprocesor
Program za delo s QPILE in Lua. Vključuje arhive z izvršljivimi datotekami, dokumentacijo in datotekami DLL z razčlenjevanjem regularnih izrazov. Če želite uporabljati program, morate razpakirati izvršljive datoteke in postaviti regexp2 na pot C:\Windows. Lekcije o QPILE za QUIK: https://youtu.be/vMTXwDUujpI Namestitev skripta na QPILE v terminalu Quik: https://youtu.be/0B7qL8Svh7I Razdelek na githubu, ki opisuje uporabo algoritemskega jezika QPILE, vgrajenega v Delovna postaja sistema QUIK se nahaja na povezavi – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE je zastarel jezik, vendar precej preprost in dostopen tudi trgovcem začetnikom. Trgovalni roboti in programi, ki so se že dolgo izkazali, še naprej delajo na tem. Za zahtevnejše naloge pa je bolje uporabiti LUA.
0к