Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK

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

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

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.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKČe je v programu prišlo do napake, bo sistem poslal obvestilo v “Okno za sporočila”, ki bo vsebovalo ime okvarjene datoteke in številko vrstice z napako. Če v datoteki ni bilo najdenih napak, bodo v poljih navedeni naslednji podatki:

  • ime tabele;
  • število stolpcev in strank;
  • seznam identifikatorjev in strank;
  • seznam parametrov in izvorno kodo datoteke.

Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKGumb »Lokalno prenesi« vam bo omogočil, da tabelo pridobite iz datoteke, »Naloži na strežnik« pa bo program poslal na strežnik, tako da bodo vsi uporabniki lahko do njega dostopali. Če želite ustvariti tabelo, kliknite Ustvari tabelo. V “Razpoložljivi skripti” izberite program, ki ga morate izvesti, nastavite število vrstic skozi “Filter odjemalcev”, določite zahtevane stolpce in njihovo zaporedje.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKZačasna zaustavitev in nadaljevanje izračuna, ponovni zagon izračuna in v načinu za odpravljanje napak, shranjevanje opisa v datoteko, predstavitev formule in parametri skripta so na voljo v kontekstnem meniju.

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:

  1. Matematične funkcije , ki vam omogočajo, da vrnete vrednost sinusa, kosinusa, tangensa, kotangensa argumenta, izračunate eksponent argumenta, ustvarite naključno število itd.
  2. 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:

  1. 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.
  2. 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:

  1. Tabele trenutnih poslov . Pridobivanje parametrov informacij o izmenjavi z ukazi GET_PARAM (_EX).
  2. Citirana okna . Pridobivanje vrednosti kotacij instrumentov.
  3. 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:

  1. ITS Quik.
  2. Urejevalnik kod Notepad++.
  3. Vodnik po QPILE.
  4. 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++\
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKNajprej ustvarimo naslednjo strategijo trgovanja. Skript bi moral vsako minuto izračunati Hi in Low za zadnjih nekaj sveč, preverite trenutno ceno instrumenta. Pozicija se odpre v zahtevani smeri, če cena instrumenta doseže najvišjo ali najnižjo vrednost v obdobju. Ko je prejet signal za kratko, se dolga pozicija samodejno zapre. Robot uporablja orodje GAZP, časovni okvir je nastavljen na 1 min. Hi-low meritvena globina je nastavljena na 5 sveč. Za vstop v Long je nastavljeno pravilo in presečišče trenutne cene najvišje vrednosti za obdobje. Robot bo vstopil v Short, če trenutna cena preseže minimalno vrednost za teh 5 sveč. Napišite blok kode v Notepad++ z osnovnimi nastavitvami ter datumom in uro strežnika. Ta koda je prikazana na spodnji sliki.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKPrve 4 vrstice kode tvorijo glavo programa. Med vrsticama 6 in 44 je telo programa, ki vsebuje vsebino robota. Vrstice 7-12 vsebujejo uporabniške nastavitve, ki vključujejo kode instrumenta, skupine in stranke, številko računa na MICEX. Te vrednosti se med izvajanjem programa ne spreminjajo. Vrstice 13 – 16 so začetne vrednosti spremenljivk. Ob vsakem ponovitvenem prehodu bodo ponastavljeni na nič. Vrstice 17–21 vsebujejo navedbo za uporabo datuma in časa strežnika. Ti podatki se posredujejo funkciji DATETIME in pretvorijo v besedilno obliko. Vrstice 22 – 29 pošiljajo prejete podatke v tabelo. Kodo je treba shraniti in določiti končnico qpl.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKOdprite program v QUIK-u tako, da pritisnete Ctrl+F10 in izberete generirano datoteko qpl. S kombinacijo Ctrl+F11 odprite okno “Delo s portfelji” in nastavite obdobje izračuna portfelja na 5 minut. Pritisnite Ctrl+F12, da nastavite stolpce za prikaz v tabeli. Slika prikazuje rezultat dela robota.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKV naš program dodamo še nekaj funkcij in pogojev.
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.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKAlgoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKNajpogosteje se indikatorji, oscilatorji, statistični izračuni izračunajo z zadnjimi N svečami grafikona. QPILE nima funkcije za zbiranje števila sveč pred N obdobji kot take, obstaja pa funkcija GET_CANDLE, ki dostopa do sveč na grafikonu po datumu in času v besedilni obliki. Naša koda vsebuje funkcijo za pridobitev zadnjih N vrstic OHLC(). Ustvari zbirko s parametri zadnjih sveč, ugnezdenih na seznamu COLLECTION. Program preveri vrednost INTERVAL in če ne sodi v območje 0…60, se izpiše sporočilo, da vrednost ne ustreza dovoljenemu območju. Zbirka MAP s svečami je ustvarjena v vrstici 88. Zanka FOR, ki anketira grafikon do zahtevane globine s korakom INTERVAL od nove do stare sveče. V vrstici 90 se po deklaraciji cikla robot vrne interval nazaj. Ko dobite svečo z GET_CANDLE, postavite v zbirko BARLIST s funkcijo INSERT_COLLECTION_TEAM. Kot rezultat delovanja ukaza OHLC() se BARLIST dopolni z zadnjimi svečami iz grafikona instrumentov v količini ŠTEVILO. Število elementov v zbirki zahteva ukaz GET_COLLECTION_COUNT(), poroča pa ga spremenljivka BARCOUNT. Datum, čas strežnika, vrednosti spremenljivk INSTRUMENT in BARCOUNT poroča funkcija SET_VALUE() v OUTPUT. Ta niz je ustvarjen z ukazom CREATE_MAP(). Podatki spadajo v tabelo po meri, ki je vidna na spodnji fotografiji. vrednosti spremenljivk INSTRUMENT in BARCOUNT poroča funkcija SET_VALUE() v OUTPUT. Ta niz je ustvarjen z ukazom CREATE_MAP(). Podatki spadajo v tabelo po meri, ki je vidna na spodnji fotografiji. vrednosti spremenljivk INSTRUMENT in BARCOUNT poroča funkcija SET_VALUE() v OUTPUT. Ta niz je ustvarjen z ukazom CREATE_MAP(). Podatki spadajo v tabelo po meri, ki je vidna na spodnji fotografiji.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK

Roboti za trgovanje na QPILE – že pripravljene rešitve

Robot drsečega povprečja

Demo robot ni primeren za pravo trgovanje.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIKRobot vključuje 5 parametrov. Vrednosti identifikatorja DATE, TIME, PRICE so nastavljene na raven 30. Identifikatorji MOVING in TP so nastavljeni na ničelno natančnost. Koda robota na drsečem povprečju, zapisana pod QPILE:

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.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK

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.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK

Možnosti Grki

Portfelj za izračun in prikaz “Grkov” opcij. Razlikuje se od metode Black-Showers.
Algoritemski jezik QPILE za programiranje trgovalnih robotov za QUIK

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.

info
Rate author
Add a comment

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

    Reply