Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK

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

Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK.
Obchodné roboty môžu byť napísané v špecifickom jazyku, podobne ako programový kód. QPILE je jedným z nich, článok sa bude zaoberať týmto jazykom, porovná jazyky QPILE a
LUA a tiež poskytne príklady robotov v tomto jazyku.

Všeobecné informácie o QPILE

QPILE je skratka, ktorá znamená QUIK Programmable Interface and Logic Environment.

Toto je séria príkazov interpretovaných pracovnou stanicou QUIK. Používa sa najmä na výpočet ceny portfólií cenných papierov. Jazyk sa používa aj na:

  • dynamický prepočet ceny klientskych aktív na desktope brokera a v ich portfóliách. V druhom prípade sa prepočítava aj ich celková cena;
  • nájdenie chýbajúcich ukazovateľov pomocou vlastných algoritmov a údajov pre pôžičky s doplatkom;
  • vypracovanie správnej obchodnej stratégie.

Jazyk popisuje štruktúru tabuľky: vymenovanie stĺpcov a riadkov, vzorce. V tom druhom možno na výpočet použiť matematické operácie, premenné, údaje z iných tabuliek. Programový kód načítaný zo servera QUIK alebo z disku používateľa spracuje jazykový interpret, ktorý vypočíta hodnoty vo vzorcoch. Tabuľky jedného programu majú jeden zdroj údajov, ale výpočty nie sú duplicitné a neovplyvňujú efektivitu systému. Pri práci s tabuľkami QUIK majú tabuľky na QPILE štandardné funkcie. QUIK na pracovisku je vybavený debuggerom kódu QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Jazyk umožňuje popísať nové tabuľky s danou štruktúrou, zvýrazniť bunky s určitými hodnotami, vypočítať polia na základe matematických a logických výrazov. Používateľ dostane upozornenia vo forme zvukového signálu alebo textovej správy. Tabuľky na QPILE je možné upravovať, tlačiť, kopírovať, exportovať cez ODBC a DDE server. Počiatočné údaje sú z tabuliek QUIK:

  • transakcie vrátane vykonávacích a neosobných;
  • príkazy vrátane stop príkazov pre mimoburzové obchody a príkazy – prehľady obchodov v obchodoch s vyrovnaním;
  • “klientske portfólio”, “kúpiť/predať”
  • údaje z pozícií účastníka podľa peňazí, obchodných účtov, nástroja.

Tabuľky založené na QPILE nie je možné kopírovať do textového súboru cez kontextové menu a exportovať do systémov technickej analýzy a nie je možné na základe nich vytvárať grafy. Tabuľky založené na QPILE nemožno filtrovať ani triediť.

Práca so stolom

Ak chcete načítať kód programu, musíte vybrať ponuku služieb a potom skripty QPILE. Môžete použiť aj kombináciu Ctrl+F11. Potom musíte kliknúť na „Pridať“ a vybrať požadovaný súbor. Má príponu .qpl a jej názov sa zobrazí v zozname Dostupné skripty.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKAk sa v programe vyskytne chyba, systém v “Okne správy” zobrazí upozornenie, ktoré bude obsahovať názov chybného súboru a číslo riadku s chybou. Ak sa v súbore nezistili žiadne chyby, v poliach budú uvedené nasledujúce údaje:

  • názov tabuľky;
  • počet stĺpcov a klientov;
  • zoznam identifikátorov a klientov;
  • zoznam parametrov a zdrojový kód súboru.

Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKTlačidlo „Stiahnuť lokálne“ vám umožní získať tabuľku zo súboru a „Nahrať na server“ odošle program na server, aby k nemu mali prístup všetci používatelia. Ak chcete vytvoriť tabuľku, kliknite na položku Vytvoriť tabuľku. V časti „Dostupné skripty“ vyberte program, ktorý potrebujete spustiť, nastavte počet riadkov cez „Filter klientov“, určte požadované stĺpce a ich poradie.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKPozastavenie a obnovenie výpočtu, opätovné spustenie výpočtu a v režime ladenia, uloženie popisu do súboru, demonštrácia vzorca a parametre skriptu sú dostupné v kontextovej ponuke.

konštrukcie QPILE

Typy údajov

  • String — struna.
  • Double je číslo s pohyblivou rádovou čiarkou.
  • Zbierka – zbierka.
  • Mapa – asociatívne pole – postupnosť párov, ktorá umožňuje získať informácie podľa kľúča.

Výrazy

Aplikujú sa aritmetické operácie sčítania, odčítania, násobenia, delenia. Používajú sa aj logické výrazy „a“, „alebo“, rovná sa, viac, menej, nerovnosti, podmienená konštrukcia „ak … potom …“.

Funkcie

Funkcie môžu byť umiestnené kdekoľvek v programe a majú rôzne názvy. Celkovo je k dispozícii 18 skupín matematických funkcií a funkcií na získanie hodnôt tabuliek a parametrov, asociatívnych polí, zoznamu tabuliek a ďalších úloh. Prvá trieda:

  1. Matematické funkcie , ktoré umožňujú vrátiť hodnotu sínusu, kosínusu, tangensu, kotangensu argumentu, vypočítať exponent argumentu, vygenerovať náhodné číslo atď.
  2. Všeobecné príkazy : NEW_GLOBAL na inicializáciu globálnej premennej a MESSAGE na otváranie správ.

Funkcie, s ktorými sa dá pracovať:

  • Zbierky predmetov (Collection) . Umožňujú vám vytvoriť novú kolekciu, vrátiť požadovaný počet prvkov, nahradiť alebo vložiť požadované hodnoty.
  • Asociatívne polia (MAP) . Pomôžte vytvoriť a spravovať pole.
  • Súbory – práca s textovými súbormi, udržiavanie log-logu programu. Názov súboru môže obsahovať cestu k nemu.
  • Struny .
  • Grafy . Funkcie GET_CANDLE na prístup k údajom o sviečkach a GET_CANDLE EX na vrátenie asociatívneho poľa.
  • Aplikácie . Vytváranie objednávok a ich odosielanie do obchodného systému.
  • Značky . Ich konštrukcia a inštalácia na grafe. Pridanie, odstránenie jedného alebo všetkých štítkov, získanie a nastavenie parametrov pre konkrétny štítok.

Existujú aj funkcie pre:

  1. Pre prístup k riadkom ľubovoľných tabuliek QUIK a zoznamom dostupných parametrov . Prístup k údajom tabuľky na pracovisku. Patrí medzi ne GET_ITEM na vrátenie MAP a GET_NUMBER_OF na vrátenie počtu záznamov.
  2. Na prácu s programovateľným stolom . Tieto príkazy fungujú na tabuľke OWN. Je čitateľný štandardnými funkciami z predchádzajúceho odseku a týmito funkciami. Táto skupina obsahuje príkazy na pridanie, úpravu a vymazanie riadku s indexom a úplné vymazanie tabuľky OWN.

Na získanie hodnôt použite:

  1. Tabuľky aktuálnych obchodov . Získanie parametrov výmeny informácií pomocou príkazov GET_PARAM (_EX).
  2. Citovať okná . Získanie hodnôt kotácií nástrojov.
  3. Tabuľky pozícií podľa nástrojov a peňazí . Získanie údajov o klientovi, firme, nástroji, depo účte kódom.

Servisné funkcie – vrátenie dátumu aktuálnej obchodnej seansy, asociatívnej série, aktuálneho dátumu a času, zistenie stavu pripojenia, prerušenie režimu výpočtu.

Ladiace programy

Postupná kontrola prevádzky programu sa vykonáva v okne “Ladenie”. Otvára sa z kontextového menu “Spustiť výpočet v režime ladenia”. Dá sa otvoriť aj príkazom breakpoint() a riadok programu bude zvýraznený červenou farbou. Okno obsahuje polia s kódom programu a hodnotami premenných. V spodnej časti okna sú tlačidlá “Ďalší krok”, “Pokračovať v vykonávaní”, “Zastaviť výpočet”. Stlačenie F5 bude pokračovať vo vykonávaní programu, kombinácia Shift + F5 zastaví ladenie, kláves F10 presmeruje na ďalší riadok.

QPILE alebo LUA?

LUA je nový programovací jazyk na vytváranie obchodných robotov. Podobne ako QPILE je implementovaný v termináli QUIK. https://articles.opexflow.com/programming/lua.htm Stránka venovaná vývoju obchodných robotov na obchodovanie ukazuje výhody jazyka LUA oproti QPILE. Môže teda fungovať ako nekompilovaný skript a bajtkód, vybavený vývojárskymi nástrojmi a objektovo orientovanými programovacími mechanizmami. Objekty napísané v iných programovacích jazykoch je možné pripojiť k programom LUA. LUA poskytuje 8 typov údajov vrátane metatabuľiek. Jazyk LUA je viacvláknový, rýchly a transakcie a terminálové udalosti sú asynchrónne. LUA je bežnejší ako QPILE a bolo preň napísaných mnoho rozšírení.

Jazyk QPILE je teraz zastaraný. Odborníci na fórach odporúčajú používať LUA. Aj keď sa stále používajú užitočné a efektívne programy.

Jazyk QPILE je však v porovnaní s LUA jednoduchý, takže ak nemáte skúsenosti s programovaním, je lepšie zvoliť QPILE. V tomto jazyku môžete napísať jednoduchého robota, ak nepotrebujete vykonávať zložité výpočty.

Ako vytvoriť obchodného robota na QPILE?

Na vytvorenie obchodného poradcu budete potrebovať nasledujúce programy:

  1. JEHO Quik.
  2. Editor kódu Notepad++.
  3. Sprievodca po QPILE.
  4. XML plugin na detekciu kódu v programe Notepad++.

Stiahnite si a nainštalujte tieto programy. Povoľte syntax jazyka umiestnením súboru userDefineLang.xml do cesty C:\Users\User\ AppData\Roaming\Notepad++\
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKNajprv si vytvorte nasledujúcu obchodnú stratégiu. Skript by mal každú minútu vypočítať Hi a Low pre posledných pár sviečok, skontrolovať aktuálnu cenu nástroja. Pozícia sa otvorí v požadovanom smere, ak cena nástroja dosiahne maximálnu alebo minimálnu hodnotu za dané obdobie. Keď je prijatý krátky signál, dlhá pozícia sa automaticky uzavrie. Robot využíva nástroj GAZP, časový rámec je nastavený na 1 min. Vysoká-nízka hĺbka merania je nastavená na 5 sviečok. Pre zadanie Long je nastavené pravidlo a priesečník aktuálnej ceny maximálnej hodnoty za obdobie. Robot vstúpi do Short, ak aktuálna cena prekročí minimálnu hodnotu pre týchto 5 sviečok. Napíšte blok kódu v programe Notepad++ so základnými nastaveniami a dátumom a časom servera. Tento kód je zobrazený na obrázku nižšie.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKPrvé 4 riadky kódu tvoria hlavičku programu. Medzi riadkami 6 a 44 je telo programu, ktoré obsahuje obsah robota. Riadky 7 – 12 obsahujú užívateľské nastavenia, ktoré obsahujú kódy prístroja, skupiny a klienta, číslo účtu na MICEX. Tieto hodnoty sa počas vykonávania programu nemenia. Riadky 13 – 16 sú počiatočné hodnoty premenných. Pri každom prechode iterácie sa vynulujú. Riadky 17 – 21 obsahujú označenie na použitie dátumu a času servera. Tieto údaje sa prenesú do funkcie DATETIME a skonvertujú sa do textového formátu. Riadky 22 – 29 odosielajú prijaté dáta do tabuľky. Kód musí byť uložený a musí byť špecifikovaná prípona qpl.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKOtvorte program v QUIK stlačením Ctrl+F10 a výberom vygenerovaného súboru qpl. Pomocou kombinácie Ctrl+F11 otvorte okno „Práca s portfóliami“ a nastavte dobu výpočtu portfólia na 5 minút. Stlačením Ctrl+F12 nastavíte stĺpce, ktoré sa majú zobraziť v tabuľke. Na obrázku je výsledok práce robota.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKPridajme do nášho programu niekoľko ďalších funkcií a podmienok.
Blok “Používateľské nastavenia” je doplnený o premenné NUMBER a INTERVAL, ktoré budú použité vo funkcii získania posledných N pruhov. Funkcia DATETIME nastavuje dátum a čas servera a z nej sa volajú aktuálne funkcie dátumu a času CURDATE a CURTIME. Aktuálny čas sa prevedie na číslo v riadku 24. Riadok 26 nastavuje čas, kedy má algoritmus bežať od 10:00:01 do 18:40:00 UTC.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKAlgoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKNajčastejšie sa ukazovatele, oscilátory, štatistické výpočty počítajú podľa posledných N sviečok grafu. QPILE nemá funkciu na zber počtu sviečok pred N periódami ako takú, ale existuje funkcia GET_CANDLE, ktorá pristupuje k sviečkam na grafe podľa dátumu a času v textovom formáte. Náš kód obsahuje funkciu na získanie posledných N barov OHLC(). Vytvorí kolekciu s parametrami posledných sviečok vnorených v zozname COLLECTION. Program skontroluje hodnotu INTERVAL a ak nespadá do rozsahu 0…60, zobrazí sa hlásenie, že hodnota nezodpovedá povolenému rozsahu. Kolekcia MAP so sviečkami je vytvorená v riadku 88. Slučka FOR skúmajúca graf do požadovanej hĺbky s krokom INTERVAL od novej k starej sviečke. V riadku 90 sa po vyhlásení cyklu robot vráti o interval späť. Keď dostanete sviečku s GET_CANDLE, umiestnite ho do kolekcie BARLIST pomocou funkcie INSERT_COLLECTION_TEAM. V dôsledku operácie príkazu OHLC() je BARLIST doplnený poslednými sviečkami z inštrumentálnej tabuľky v množstve NUMBER. Počet prvkov v kolekcii vyžaduje príkaz GET_COLLECTION_COUNT() a uvádza ho premenná BARCOUNT. Dátum, čas, hodnoty premenných INSTRUMENT a BARCOUNT servera hlási funkcia SET_VALUE() vo OUTPUT. Toto pole je vytvorené príkazom CREATE_MAP(). Údaje spadajú do vlastnej tabuľky, ktorú je možné vidieť na fotografii nižšie. hodnoty premenných INSTRUMENT a BARCOUNT hlási funkcia SET_VALUE() vo OUTPUT. Toto pole je vytvorené príkazom CREATE_MAP(). Údaje spadajú do vlastnej tabuľky, ktorú je možné vidieť na fotografii nižšie. hodnoty premenných INSTRUMENT a BARCOUNT hlási funkcia SET_VALUE() vo OUTPUT. Toto pole je vytvorené príkazom CREATE_MAP(). Údaje spadajú do vlastnej tabuľky, ktorú je možné vidieť na fotografii nižšie.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK

Obchodné roboty na QPILE – hotové riešenia

Pohyblivý priemerný robot

Demo robot nie je vhodný na skutočné obchodovanie.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIKRobot obsahuje 5 parametrov. Hodnoty identifikátorov DATE, TIME, PRICE sú nastavené na úroveň 30. Identifikátory MOVING a TP sú nastavené na nulovú presnosť. Kód robota na kĺzavom priemere napísaný pod QPILE:

N. Moroshkin kalkulátor polohy

Program na výpočet úrovní maximálneho povoleného čerpania a cieľa pre dlhé a krátke pozície pri aktuálnych dopytových a nákupných cenách. Úrovne sú vypočítané pre 2 hodnoty objemu vstupu do pozície. Robot nájde povolený objem pozície pri zadávaní stop príkazu v jednom kroku od otváracej ceny s výpočtom otvorenia pozície v smere rastu tyče. Nájdené úrovne sa zadajú do okna terminálu, ktoré sa následne premietnu do cenového grafu. Transakcie sú pre daný nástroj fixné. Ak je pozícia otvorená, robot začne počítať jej parametre. V závislosti od zmeny polohy sa upravujú priradené zákazky.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK

Objemový filter

Portfóliový robot na výpočet aritmetického priemeru objemu pre sviečky a jeho porovnanie s priemerným produktom pomocou koeficientu X. Správne pracuje s vykreslenými grafmi vo zvolenom časovom období.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK

Možnosti Gréci

Portfólio na výpočet a zobrazenie “Grékov” opcií. Odlišuje sa od metódy Black-Showers.
Algoritmický jazyk QPILE pre programovanie obchodných robotov pre QUIK

Obchodný robot TRIX pre QUIK

Program je založený na indikátore TRIX. Keď sa indikátor zatvorí nad nulovou čiarou, určenou úrovňou, robot zaujme dlhú pozíciu. Pozíciu uzatvára Take Profit, Stop Loss alebo trailing stop.

Preprocesor M4

Program pre prácu s QPILE a Lua. Zahŕňa archívy so spustiteľnými súbormi, dokumentáciu a súbory DLL s analýzou regulárneho výrazu. Ak chcete program použiť, musíte rozbaliť spustiteľné súbory a umiestniť regexp2 do cesty C:\Windows. Lekcie o QPILE pre QUIK: https://youtu.be/vMTXwDUujpI Inštalácia skriptu na QPILE v termináli Quik: https://youtu.be/0B7qL8Svh7I Časť o githube, ktorá popisuje použitie algoritmického jazyka QPILE zabudovaného do Pracovná stanica systému QUIK umiestnená na odkaze – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE je zastaraný jazyk, ale celkom jednoduchý a dostupný aj pre začínajúcich obchodníkov. Obchodné roboty a programy, ktoré sa dlhodobo osvedčili, na ňom naďalej pracujú. Pre zložitejšie úlohy je však lepšie použiť LUA.

info
Rate author
Add a comment

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

    Reply