Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK

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

Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK.
Obchodní roboti mohou být napsáni ve specifickém jazyce, podobně jako programový kód. QPILE je jedním z nich, článek se bude zabývat tímto jazykem, porovná jazyky QPILE a
LUA a také poskytne příklady robotů v tomto jazyce.

Obecné informace o QPILE

QPILE je zkratka, která znamená QUIK Programmable Interface and Logic Environment.

Toto je řada příkazů interpretovaných pracovní stanicí QUIK. Používá se především k výpočtu ceny portfolií cenných papírů. Jazyk se také používá pro:

  • dynamický přepočet ceny klientských aktiv na desktopu brokera a v jejich portfoliích. V druhém případě se přepočítává i jejich celková cena;
  • nalezení chybějících ukazatelů pomocí vlastních algoritmů a dat pro maržové půjčky;
  • vytvoření správné obchodní strategie.

Jazyk popisuje strukturu tabulky: jmenování sloupců a řádků, vzorce. V posledně jmenovaném lze pro výpočet použít matematické operace, proměnné, data z jiných tabulek. Programový kód načtený ze serveru QUIK nebo z disku uživatele je zpracován jazykovým interpretem, který vypočítává hodnoty ve vzorcích. Tabulky jednoho programu mají jeden zdroj dat, ale výpočty nejsou duplicitní a neovlivňují efektivitu systému. Při práci s tabulkami QUIK mají tabulky na QPILE standardní funkce. QUIK na pracovišti je vybaven debuggerem QPILE kódu. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Jazyk umožňuje popisovat nové tabulky s danou strukturou, zvýraznit buňky s určitými hodnotami, vypočítat pole na základě matematických a logických výrazů. Uživatel obdrží upozornění ve formě zvukového signálu nebo textové zprávy. Tabulky na QPILE lze upravovat, tisknout, kopírovat, exportovat přes ODBC a DDE server. Počáteční údaje jsou z tabulek QUIK:

  • transakce, včetně prováděcích a neosobních;
  • příkazy včetně stop příkazů pro mimoburzovní obchody a příkazy – sestavy pro obchody s vypořádacími obchody;
  • “klientské portfolio”, “koupit/prodat”
  • údaje z pozic účastníka podle peněz, obchodních účtů, instrumentů.

Tabulky založené na QPILE nelze kopírovat do textového souboru přes kontextové menu a exportovat do systémů technické analýzy a nelze na jejich základě vytvářet grafy. Tabulky založené na QPILE nelze filtrovat ani třídit.

Práce se stolem

Chcete-li načíst kód programu, musíte vybrat nabídku služeb a poté skripty QPILE. Můžete také použít kombinaci Ctrl+F11. Poté musíte kliknout na „Přidat“ a vybrat požadovaný soubor. Má příponu .qpl a její název se objeví v seznamu Dostupné skripty.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKPokud je v programu chyba, systém provede upozornění v “Okně zprávy”, které bude obsahovat název vadného souboru a číslo řádku s chybou. Pokud nebyly v souboru nalezeny žádné chyby, budou v polích uvedeny následující údaje:

  • název tabulky;
  • počet sloupců a klientů;
  • seznam identifikátorů a klientů;
  • seznam parametrů a zdrojový kód souboru.

Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKTlačítko “Stáhnout lokálně” vám umožní získat tabulku ze souboru a “Nahrát na server” odešle program na server, aby k němu měli přístup všichni uživatelé. Chcete-li vytvořit tabulku, klikněte na Vytvořit tabulku. V “Dostupné skripty” vyberte program, který potřebujete spustit, nastavte počet řádků přes “Filtr klientů”, určete požadované sloupce a jejich pořadí.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKV kontextové nabídce je k dispozici pozastavení a obnovení výpočtu, opětovné spuštění výpočtu a v režimu ladění, uložení popisu do souboru, ukázka vzorce a parametry skriptu.

konstrukce QPILE

Typy dat

  • String – řetězec.
  • Double je číslo s pohyblivou řádovou čárkou.
  • Kolekce – sbírka.
  • Mapa – asociativní pole – posloupnost párů, která umožňuje získat informace podle klíče.

Výrazy

Aplikují se aritmetické operace sčítání, odčítání, násobení, dělení. Používají se také logické výrazy „a“, „nebo“, rovná se, více, méně, nerovnosti, podmíněná konstrukce „jestliže … pak …“.

Funkce

Funkce mohou být umístěny kdekoli v programu a mohou mít různé názvy. Celkem je k dispozici 18 skupin matematických funkcí a funkcí pro získání hodnot tabulek a parametrů, asociativních polí, seznamu tabulek a dalších úloh. První stupeň:

  1. Matematické funkce , které umožňují vrátit hodnotu sinus, kosinus, tangens, kotangens argumentu, vypočítat exponent argumentu, vygenerovat náhodné číslo atd.
  2. Obecné příkazy : NEW_GLOBAL pro inicializaci globální proměnné a MESSAGE pro otevírání zpráv.

Funkce, se kterými lze pracovat:

  • Sbírky předmětů (Sbírka) . Umožňují vytvořit novou kolekci, vrátit požadovaný počet prvků, nahradit nebo vložit požadované hodnoty.
  • Asociativní pole (MAP) . Pomozte vytvořit a spravovat pole.
  • Soubory – práce s textovými soubory, udržování log-logu programu. Název souboru může obsahovat cestu k němu.
  • Struny .
  • Grafy . Funkce GET_CANDLE pro přístup k datům svíčky a GET_CANDLE EX pro vrácení asociativního pole.
  • Aplikace . Vytváření objednávek a jejich odesílání do obchodního systému.
  • Tagy . Jejich konstrukce a instalace na grafu. Přidání, odstranění jednoho nebo všech štítků, získání a nastavení parametrů pro konkrétní štítek.

Existují také funkce pro:

  1. Pro přístup k řádkům libovolných tabulek QUIK a seznamům dostupných parametrů . Přístup k datům tabulky pracoviště. Patří mezi ně GET_ITEM pro vrácení MAP a GET_NUMBER_OF pro vrácení počtu záznamů.
  2. Pro práci s programovatelnou tabulkou . Tyto příkazy fungují na VLASTNÍ tabulce. Je čitelný standardními funkcemi z předchozího odstavce a těmito funkcemi. Tato skupina obsahuje příkazy pro přidání, úpravu a odstranění řádku s indexem a úplné vymazání tabulky OWN.

Chcete-li získat hodnoty, použijte:

  1. Tabulky aktuálních obchodů . Získání parametrů výměny informací pomocí příkazů GET_PARAM (_EX).
  2. Citovat okna . Získání hodnot kotací nástrojů.
  3. Tabulky pozic podle nástrojů a peněz . Získávání dat o klientovi, firmě, nástroji, depo účtu pomocí kódu.

Servisní funkce – vrácení data aktuální obchodní seance, asociativní řady, aktuální datum a čas, zjištění stavu připojení, přerušení režimu výpočtu.

Ladění programů

Postupná kontrola nad provozem programu se provádí v okně “Debug”. Otevírá se z kontextové nabídky “Spustit výpočet v režimu ladění”. Lze jej také otevřít příkazem breakpoint() a řádek programu bude zvýrazněn červeně. Okno obsahuje pole s kódem programu a hodnotami proměnných. Ve spodní části okna jsou tlačítka “Další krok”, “Pokračovat v provádění”, “Zastavit výpočet”. Stisk F5 bude pokračovat v provádění programu, kombinace Shift + F5 zastaví ladění, klávesa F10 přesměruje na další řádek.

QPILE nebo LUA?

LUA je nový programovací jazyk pro vytváření obchodních robotů. Stejně jako QPILE je implementován v terminálu QUIK. https://articles.opexflow.com/programming/lua.htm Stránka věnovaná vývoji obchodních robotů pro obchodování ukazuje výhody jazyka LUA oproti QPILE. Může tedy fungovat jako nekompilovaný skript a bajtkód, vybavený vývojářskými nástroji a objektově orientovanými programovacími mechanismy. Objekty napsané v jiných programovacích jazycích lze připojit k programům LUA. LUA poskytuje 8 datových typů, včetně metatabulek. Jazyk LUA je vícevláknový, rychlý a transakce a události terminálu jsou asynchronní. LUA je běžnější než QPILE a bylo pro něj napsáno mnoho rozšíření.

Jazyk QPILE je nyní zastaralý. Odborníci na fórech doporučují používat LUA. I když užitečné a efektivní programy se stále používají.

Jazyk QPILE je však oproti LUA jednoduchý, takže pokud nemáte s programováním žádné zkušenosti, je lepší zvolit QPILE. V tomto jazyce můžete napsat jednoduchého robota, pokud nepotřebujete provádět složité výpočty.

Jak vytvořit obchodního robota na QPILE?

K vytvoření obchodního poradce budete potřebovat následující programy:

  1. JEHO Quik.
  2. Editor kódu Notepad++.
  3. Průvodce po QPILE.
  4. XML plugin pro detekci kódu v Notepad++.

Stáhněte a nainstalujte tyto programy. Povolte syntaxi jazyka umístěním userDefineLang.xml do cesty C:\Users\User\ AppData\Roaming\Notepad++\
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKNejprve si vytvoříme následující obchodní strategii. Skript by měl každou minutu vypočítat Hi a Low pro posledních pár svíček, zkontrolovat aktuální cenu instrumentu. Pozice je otevřena v požadovaném směru, pokud cena nástroje dosáhne maximální nebo minimální hodnoty za dané období. Když je přijat krátký signál, dlouhá pozice se automaticky uzavře. Robot využívá nástroj GAZP, časový rámec je nastaven na 1 min. Vysoká a nízká hloubka měření je nastavena na 5 svíček. Pro zadání Long je nastaveno pravidlo a průsečík aktuální ceny s maximální hodnotou za období. Robot vstoupí do Short, pokud aktuální cena překročí minimální hodnotu pro těchto 5 svíček. Napište blok kódu v programu Notepad++ se základním nastavením a datem a časem serveru. Tento kód je zobrazen na obrázku níže.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKPrvní 4 řádky kódu tvoří hlavičku programu. Mezi řádky 6 a 44 je tělo programu, které obsahuje obsah robota. Řádky 7 – 12 obsahují uživatelská nastavení, která obsahují kódy přístroje, skupiny a klienta, číslo účtu na MICEX. Tyto hodnoty se během provádění programu nemění. Řádky 13 – 16 jsou počáteční hodnoty proměnných. Při každém průchodu iterací budou resetovány na nulu. Řádky 17 – 21 obsahují označení pro použití data a času serveru. Tato data jsou předána funkci DATETIME a převedena do textového formátu. Řádky 22 – 29 odesílají přijatá data do tabulky. Kód musí být uložen a musí být specifikována přípona qpl.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKOtevřete program v QUIK stisknutím Ctrl+F10 a výběrem vygenerovaného souboru qpl. Pomocí kombinace Ctrl+F11 otevřete okno “Práce s portfolii” a nastavte dobu výpočtu portfolia na 5 minut. Stiskněte Ctrl+F12 pro nastavení sloupců, které se mají v tabulce zobrazit. Na obrázku je výsledek práce robota.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKPojďme do našeho programu přidat pár dalších funkcí a podmínek.
Blok “Uživatelské nastavení” je doplněn o proměnné NUMBER a INTERVAL, které budou použity ve funkci získání posledních N pruhů. Funkce DATETIME nastavuje datum a čas serveru a jsou z ní volány aktuální funkce data a času CURDATE a CURTIME. Aktuální čas je převeden na číslo na řádku 24. Řádek 26 nastavuje čas, kdy má algoritmus běžet od 10:00:01 do 18:40:00 UTC.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKAlgoritmický jazyk QPILE pro programování obchodních robotů pro QUIKNejčastěji se indikátory, oscilátory, statistické výpočty počítají podle posledních N svíček grafu. QPILE nemá funkci pro sběr počtu svíček před N periodami jako takovou, ale existuje funkce GET_CANDLE, která přistupuje ke svíčkám v grafu podle data a času v textovém formátu. Náš kód obsahuje funkci pro získání posledních N čárek OHLC(). Vytvoří kolekci s parametry posledních svíček vnořených v seznamu COLLECTION. Program zkontroluje hodnotu INTERVAL, a pokud nespadá do rozsahu 0…60, zobrazí se hlášení, že hodnota neodpovídá povolenému rozsahu. Kolekce MAP se svíčkami je vytvořena v řádku 88. Smyčka FOR dotazuje graf do požadované hloubky s krokem INTERVAL od nové ke staré svíčce. V řádku 90 se po deklaraci cyklu robot vrátí o interval zpět. Když dostanete svíčku s GET_CANDLE, umístěte jej do kolekce BARLIST pomocí funkce INSERT_COLLECTION_TEAM. V důsledku operace příkazu OHLC() je BARLIST doplněn o poslední svíčky z instrumentové tabulky v množství NUMBER. Počet prvků v kolekci je požadován příkazem GET_COLLECTION_COUNT() a hlášen proměnnou BARCOUNT. Datum, čas, hodnoty proměnných INSTRUMENT a BARCOUNT serveru jsou hlášeny funkcí SET_VALUE() ve OUTPUT. Toto pole je vytvořeno příkazem CREATE_MAP(). Data spadají do vlastní tabulky, která je vidět na fotografii níže. hodnoty proměnných INSTRUMENT a BARCOUNT jsou hlášeny funkcí SET_VALUE() ve OUTPUT. Toto pole je vytvořeno příkazem CREATE_MAP(). Data spadají do vlastní tabulky, která je vidět na fotografii níže. hodnoty proměnných INSTRUMENT a BARCOUNT jsou hlášeny funkcí SET_VALUE() ve OUTPUT. Toto pole je vytvořeno příkazem CREATE_MAP(). Data spadají do vlastní tabulky, která je vidět na fotografii níže.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK

Obchodní roboti na QPILE – hotová řešení

Pohyblivý průměrný robot

Demo robot není vhodný pro skutečné obchodování.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIKRobot obsahuje 5 parametrů. Hodnoty identifikátorů DATE, TIME, PRICE jsou nastaveny na úroveň 30. Identifikátory MOVING a TP jsou nastaveny na nulovou přesnost. Kód robota na klouzavém průměru zapsaný pod QPILE:

N. Moroshkin kalkulátor polohy

Program pro výpočet úrovní maximálního povoleného čerpání a cíle pro dlouhé a krátké pozice za aktuální poptávkové a nabídkové ceny. Úrovně se počítají pro 2 hodnoty objemu vstupu do pozice. Robot najde povolený objem pozice při přiřazení stop příkazu v jednom kroku od otevírací ceny s výpočtem otevření pozice ve směru růstu tyče. Nalezené úrovně se zadávají do okna terminálu, které se následně promítnou do cenového grafu. Transakce jsou pro daný nástroj fixní. Pokud je pozice otevřena, robot začne vypočítávat její parametry. V závislosti na změně polohy se upravují přiřazené příkazy.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK

Objemový filtr

Portfoliový robot pro výpočet aritmetického průměru objemu pro svíčky a jeho porovnání s průměrným součinem koeficientem X. Správně pracuje s vykreslenými grafy ve zvoleném časovém období.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK

Možnosti Řekové

Portfolio pro výpočet a zobrazení “Řeků” opcí. Liší se od metody Black-Showers.
Algoritmický jazyk QPILE pro programování obchodních robotů pro QUIK

Obchodní robot TRIX pro QUIK

Program je založen na indikátoru TRIX. Když se indikátor zavře nad nulovou čarou, zadanou úrovní, robot zaujme dlouhou pozici. Pozice je uzavřena pomocí Take Profit, Stop Loss nebo trailing stop.

Preprocesor M4

Program pro práci s QPILE a Lua. Zahrnuje archivy se spustitelnými soubory, dokumentaci a soubory DLL s analýzou regulárních výrazů. Chcete-li program používat, musíte rozbalit spustitelné soubory a umístit regexp2 do cesty C:\Windows. Lekce o QPILE pro QUIK: https://youtu.be/vMTXwDUujpI Instalace skriptu na QPILE v terminálu Quik: https://youtu.be/0B7qL8Svh7I Část o githubu, která popisuje použití algoritmického jazyka QPILE zabudovaného do Pracovní stanice systému QUIK umístěná na odkazu – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE je zastaralý jazyk, ale docela jednoduchý a dostupný i pro začínající obchodníky. Na ní nadále pracují obchodní roboti a programy, které se dlouhodobě osvědčily. Pro složitější úkoly je však lepší použít LUA.

info
Rate author
Add a comment

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

    Reply