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
- Práce se stolem
- konstrukce QPILE
- Typy dat
- Výrazy
- Funkce
- Ladění programů
- QPILE nebo LUA?
- Jak vytvořit obchodního robota na QPILE?
- Obchodní roboti na QPILE – hotová řešení
- Pohyblivý průměrný robot
- N. Moroshkin kalkulátor polohy
- Objemový filtr
- Možnosti Řekové
- Obchodní robot TRIX pro QUIK
- Preprocesor M4
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.
- název tabulky;
- počet sloupců a klientů;
- seznam identifikátorů a klientů;
- seznam parametrů a zdrojový kód souboru.
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ň:
- Matematické funkce , které umožňují vrátit hodnotu sinus, kosinus, tangens, kotangens argumentu, vypočítat exponent argumentu, vygenerovat náhodné číslo atd.
- 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:
- 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ů.
- 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:
- Tabulky aktuálních obchodů . Získání parametrů výměny informací pomocí příkazů GET_PARAM (_EX).
- Citovat okna . Získání hodnot kotací nástrojů.
- 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:
- JEHO Quik.
- Editor kódu Notepad++.
- Průvodce po QPILE.
- 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++\
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.
Obchodní roboti na QPILE – hotová řešení
Pohyblivý průměrný robot
Demo robot není vhodný pro skutečné obchodování.
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.
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í.
Možnosti Řekové
Portfolio pro výpočet a zobrazení “Řeků” opcí. Liší se od metody Black-Showers.
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.
0к