QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára.
A kereskedési robotok egy adott nyelven írhatók, hasonlóan a programkódhoz. A QPILE egyike ezeknek, ez a cikk megvizsgálja ezt a nyelvet, összehasonlítja a QPILE és a
LUA nyelveket , és példákat ad a robotokra ezen a nyelven.
- Általános információk a QPILE-ról
- Munka asztallal
- QPILE konstrukciók
- Adattípusok
- Kifejezések
- Funkciók
- Hibakereső programok
- QPILE vagy LUA?
- Hogyan lehet kereskedési robotot létrehozni a QPILE-n?
- Kereskedési robotok a QPILE-n – kész megoldások
- Mozgó átlagos robot
- N. Moroshkin pozíciókalkulátor
- Hangerőszűrő
- Opciók görögök
- TRIX kereskedési robot a QUIK-hoz
- M4 előfeldolgozó
Általános információk a QPILE-ról
A QPILE a QUIK programozható interfész és logikai környezet rövidítése.
Ez a QUIK munkaállomás által értelmezett parancsok sorozata. Főleg az értékpapír-portfóliók árának kiszámítására szolgál. A nyelvet a következőkre is használják:
- az ügyfelek eszközeinek árának dinamikus újraszámítása a bróker asztalán és portfóliójában. Ez utóbbi esetben a teljes árukat is újraszámítják;
- hiányzó mutatók felkutatása saját algoritmusaik és adataik segítségével a letéti hitelezéshez;
- a megfelelő kereskedési stratégia kialakítása.
A nyelv leírja a táblázat felépítését: oszlopok és sorok kijelölését, képleteket. Ez utóbbiban matematikai műveletek, változók, más táblákból származó adatok használhatók a számításhoz. A QUIK szerverről vagy a felhasználó lemezéről betöltött programkódot a nyelvi tolmács dolgozza fel, amely kiszámítja a képletek értékeit. Egy program tábláinak egy adatforrása van, de a számítások nem duplikálódnak és nem befolyásolják a rendszer hatékonyságát. Amikor QUIK táblákkal dolgozik, a QPILE táblái szabványos funkciókkal rendelkeznek. A munkahelyi QUIK QPILE kódhibakeresővel van felszerelve. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm A nyelv lehetővé teszi új táblázatok leírását adott szerkezettel, bizonyos értékeket tartalmazó cellák kiemelését, mezők kiszámítását matematikai és logikai kifejezések alapján. A felhasználó értesítést kap hangjelzés vagy szöveges üzenet formájában. A QPILE-n lévő táblázatok szerkeszthetők, nyomtathatók, másolhatók, exportálhatók ODBC-n és DDE-kiszolgálón keresztül. A kezdeti adatok a QUIK táblákból származnak:
- tranzakciók, beleértve a végrehajtást és a személytelenséget is;
- megbízások, beleértve a stop megbízásokat, tőzsdén kívüli kereskedésekre és megbízásokra – jelentések az elszámolási ügyletekkel kapcsolatos kereskedésekről;
- “ügyfélportfólió”, “vétel/eladás”
- adatok a résztvevő pozícióiból pénz, kereskedési számlák, eszközök szerint.
A QPILE alapú táblák nem másolhatók szöveges fájlba a helyi menün keresztül és nem exportálhatók műszaki elemző rendszerekbe, és ezek alapján nem fejleszthetők diagramok. A QPILE alapú táblák nem szűrhetők vagy rendezhetők.
Munka asztallal
A programkód betöltéséhez ki kell választani a szolgáltatások menüt, majd a QPILE scripteket. Használhatja a Ctrl+F11 kombinációt is. Miután rá kell kattintania a “Hozzáadás” gombra, és ki kell választania a kívánt fájlt. .qpl kiterjesztéssel rendelkezik, és a neve megjelenik az Elérhető szkriptek listában.
Ha a programban hiba van, a rendszer az „Üzenet ablakban” értesítést küld, amely tartalmazza a hibás fájl nevét és a hibás sor számát. Ha a fájlban nem található hiba, akkor a következő adatok jelennek meg a mezőkben:
- táblázat neve;
- oszlopok és ügyfelek száma;
- azonosítók és ügyfelek listája;
- a paraméterek listája és a fájl forráskódja.
A “Lokális letöltés” gomb lehetővé teszi a táblázat lekérését egy fájlból, a “Feltöltés a szerverre” pedig elküldi a programot a szervernek, hogy minden felhasználó hozzáférhessen. Táblázat létrehozásához kattintson a Táblázat létrehozása gombra. Az “Elérhető szkriptek” részben válassza ki a végrehajtani kívánt programot, állítsa be a sorok számát az “Ügyfélszűrőn” keresztül, adja meg a szükséges oszlopokat és azok sorrendjét.
A számítás szüneteltetése és folytatása, a számítás újraindítása és hibakeresési módban, a leírás fájlba mentése, a képlet és a szkript paraméterei a helyi menüben érhetők el.
QPILE konstrukciók
Adattípusok
- String – húr.
- A Double egy lebegőpontos szám.
- Gyűjtemény – gyűjtemény.
- Térkép – asszociatív tömb – párok sorozata, amely lehetővé teszi, hogy kulcsonként információkat kapjon.
Kifejezések
Az összeadás, kivonás, szorzás, osztás számtani műveleteit alkalmazzuk. A logikai „és”, „vagy”, egyenlő, több, kevesebb, egyenlőtlenségek, „ha… akkor…” feltételes konstrukció is használatos.
Funkciók
A függvények bárhol elhelyezkedhetnek a programban, és eltérő nevük lehet. Összesen 18 matematikai függvény- és függvénycsoport áll rendelkezésre a táblázatok és paraméterek, asszociatív tömbök, táblázatok és egyéb feladatok értékeinek megszerzéséhez. Első osztályú:
- Matematikai függvények , amelyek lehetővé teszik az argumentum szinuszának, koszinuszának, érintőjének, kotangensének visszaadását, az argumentum kitevőjének kiszámítását, véletlenszám generálását stb.
- Általános parancsok : NEW_GLOBAL a globális változó inicializálásához és MESSAGE az üzenetek megnyitásához.
Funkciók, amelyekkel dolgozni:
- Tárgygyűjtemények (Collection) . Lehetővé teszik új gyűjtemény létrehozását, a szükséges számú elem visszaadását, a kívánt értékek cseréjét vagy beszúrását.
- Associative Arrays (MAP) . Segítség a tömb létrehozásában és kezelésében.
- Fájlok – szöveges fájlokkal való munka, a program naplójának vezetése. A fájlnév tartalmazhatja az elérési utat.
- Húrok .
- Grafikonok . A GET_CANDLE függvények a gyertyaadatok eléréséhez és a GET_CANDLE EX függvények az asszociatív tömb visszaadásához.
- Alkalmazások . Megbízások létrehozása és elküldése a kereskedési rendszerbe.
- Címkék . Felépítésük és beépítésük a diagramon. Egy vagy összes címke hozzáadása, törlése, paraméterek lekérése és beállítása egy adott címkéhez.
Vannak még funkciók a következőkhöz:
- Tetszőleges QUIK táblák sorainak és az elérhető paraméterek listájának eléréséhez . Hozzáférés a munkahelyi táblázat adataihoz. Ezek közé tartozik a GET_ITEM a MAP és a GET_NUMBER_OF a bejegyzések számának visszaadása.
- Programozható asztallal való munkavégzés . Ezek a parancsok a SAJÁT táblán működnek. Az előző bekezdés szabványos függvényei és ezek a függvények olvashatók. Ez a csoport tartalmazza az indexet tartalmazó sor hozzáadására, módosítására és törlésére, valamint a SAJÁT tábla teljes törlésére szolgáló parancsokat.
Az értékek lekéréséhez használja:
- Aktuális kereskedések táblázatai . Csere információs paraméterek lekérése GET_PARAM (_EX) parancsokkal.
- Idézet ablakok . A műszer árajánlatok értékeinek megszerzése.
- Pozíciótáblázatok eszközök és pénz szerint . Ügyfélről, cégről, eszközről, depószámláról kódonkénti adatok beszerzése.
Szolgáltatási funkciók – az aktuális kereskedés dátumának visszaadása, asszociatív sorozatok, aktuális dátum és idő, a kapcsolat állapotának meghatározása, a számítási mód megszakítása.
Hibakereső programok
A program működésének lépésről lépésre történő vezérlése a “Debug” ablakban történik. A “Számítás indítása hibakeresési módban” helyi menüből nyílik meg. A breakpoint() paranccsal is megnyitható, és a programsor pirossal lesz kiemelve. Az ablak programkóddal és változóértékekkel rendelkező mezőket tartalmaz. Az ablak alján találhatók a „Következő lépés”, „Végrehajtás folytatása”, „Számítás leállítása” gombok. Az F5 billentyű lenyomása folytatja a program végrehajtását, a Shift + F5 kombináció leállítja a hibakeresést, az F10 billentyű a következő sorra irányít.
QPILE vagy LUA?
A LUA egy új programozási nyelv kereskedési robotok létrehozására. A QPILE-hez hasonlóan a QUIK terminálban van megvalósítva. https://articles.opexflow.com/programming/lua.htm A kereskedési célú kereskedési robotok fejlesztésével foglalkozó oldal bemutatja a LUA nyelv előnyeit a QPILE-val szemben. Tehát lefordítatlan szkriptként és bájtkódként működhet, fejlesztői eszközökkel és objektum-orientált programozási mechanizmusokkal felszerelve. Más programozási nyelven írt objektumok csatlakoztathatók a LUA programokhoz. A LUA 8 adattípust biztosít, beleértve a metatáblákat. A LUA nyelve többszálú, gyors, a tranzakciók és a terminálesemények pedig aszinkronok. A LUA elterjedtebb, mint a QPILE, és sok kiterjesztést írtak hozzá.
A QPILE nyelv már elavult. A fórum szakértői a LUA használatát javasolják. Bár hasznos és hatékony programokat még mindig használnak.
A QPILE nyelv azonban egyszerű a LUA-hoz képest, így ha nincs tapasztalatunk a programozásban, érdemes a QPILE-t választani. Ezen a nyelven írhat egy egyszerű robotot, ha nem kell bonyolult számításokat végeznie.
Hogyan lehet kereskedési robotot létrehozni a QPILE-n?
Kereskedési tanácsadó létrehozásához a következő programokra lesz szüksége:
- ITS Quik.
- Notepad++ kódszerkesztő.
- Útmutató a QPILE-hoz.
- XML beépülő modul kódfelismeréshez a Notepad++ programban.
Töltse le és telepítse ezeket a programokat. Engedélyezze a nyelvi szintaxist úgy, hogy a userDefineLang.xml fájlt a C:\Users\User\ AppData\Roaming\Notepad++\ útvonalba helyezi.
Először is készítsük el a következő kereskedési stratégiát. A szkriptnek percenként kell kiszámítania a Hi és Low értéket az utolsó néhány gyertyánál, ellenőrizze a hangszer aktuális árát. Pozíció a kívánt irányba nyitásra kerül, ha az eszköz árfolyama eléri az időszakra vonatkozó maximális vagy minimális értéket. Ha rövidre jelzés érkezik, a hosszú pozíció automatikusan bezárul. A robot a GAZP eszközt használja, az időkeret 1 percre van beállítva. A hi-low mérési mélység 5 gyertyára van állítva. A Hosszú beírásához egy szabály kerül beállításra, és az aktuális ár metszéspontja az időszak maximális értékéhez. A robot akkor lép Shortba, ha az aktuális ár átlépi ennek az 5 gyertyának a minimális értékét. Írjon egy kódblokkot a Notepad++ alkalmazásban az alapvető beállításokkal, valamint a szerver dátumával és időpontjával. Ez a kód az alábbi képen látható.
A kód első 4 sora alkotja a program fejlécét. A 6. és 44. sor között található a program törzse, amely a robot tartalmát tartalmazza. A 7-12 sorok felhasználói beállításokat tartalmaznak, amelyek tartalmazzák a műszer, csoport és ügyfél kódjait, a MICEX-en lévő számlaszámot. Ezek az értékek nem változnak a program végrehajtása során. A 13-16. sorok a változók kezdeti értékei. Minden iterációs lépésnél visszaállnak nullára. A 17-21. sorok a szerver dátumának és időpontjának használatára utalnak. Ezeket az adatokat a rendszer átadja a DATETIME függvénynek, és szöveges formátumba konvertálja. A 22-29. sorok a kapott adatokat a táblázatba küldik. A kódot el kell menteni, és meg kell adni a qpl kiterjesztést.
Nyissa meg a programot a QUIK-ban a Ctrl+F10 lenyomásával és a generált qpl fájl kiválasztásával. A Ctrl+F11 kombinációval nyissa meg a „Portfóliók kezelése” ablakot, és állítsa be a portfóliószámítási időszakot 5 percre. Nyomja meg a Ctrl+F12 billentyűkombinációt a táblázatban megjelenítendő oszlopok beállításához. A képen a robot munkájának eredménye látható.
Adjunk hozzá még néhány funkciót és feltételt programunkhoz.
A “Felhasználói beállítások” blokk kiegészül a NUMBER és INTERVAL változókkal, melyeket az utolsó N sáv lekérésének funkciójában használunk. A DATETIME funkció beállítja a szerver dátumát és idejét, és az aktuális dátum és idő függvények CURDATE és CURTIME hívódnak meg belőle. A 26. sor beállítja az algoritmus futásának idejét 10:00:01 és 18:40:00 UTC között.
Leggyakrabban a mutatókat, az oszcillátorokat, a statisztikai számításokat a diagram utolsó N gyertyája számítja ki. A QPILE-nek nincs olyan funkciója, amely önmagában összegyűjti az N periódussal ezelőtti gyertyák számát, de létezik egy GET_CANDLE függvény, amely szöveges formátumban dátum és idő szerint éri el a diagramon szereplő gyertyákat. Kódunk tartalmazza az utolsó N oszlop OHLC() függvényét. Gyűjteményt hoz létre a GYŰJTEMÉNY listába ágyazott utolsó gyertyák paramétereivel. A program ellenőrzi az INTERVAL értéket, és ha nem esik a 0…60 tartományba, akkor egy üzenet jelenik meg, hogy az érték nem felel meg a megengedett tartománynak. A 88. sorban létrejön egy gyertyákkal ellátott MAP gyűjtemény. A FOR hurok lekérdezi a diagramot a kívánt mélységig az INTERVAL lépéssel az újtól a régi gyertyáig. A 90. sorban a ciklus deklarálása után a robot visszalép egy intervallumot. Ha kap egy gyertyát a GET_CANDLE-val, helyezze a BARLIST gyűjteménybe az INSERT_COLLECTION_TEAM függvény segítségével. Az OHLC() parancs működése következtében a BARLIST a műszertáblázat utolsó gyertyáival töltődik fel SZÁM mennyiségben. A gyűjtemény elemeinek számát a GET_COLLECTION_COUNT() parancs kéri le, és a BARCOUNT változó jelenti. A szerver dátuma, időpontja, az INSTRUMENT és a BARCOUNT változók értékeit a SET_VALUE() függvény jelenti az OUTPUT-ban. Ezt a tömböt a CREATE_MAP() parancs hozza létre. Az adatok az egyéni táblázatba esnek, ami az alábbi képen látható. az INSTRUMENT és a BARCOUNT változók értékeit a SET_VALUE() függvény jelenti az OUTPUT-ban. Ezt a tömböt a CREATE_MAP() parancs hozza létre. Az adatok az egyéni táblázatba esnek, ami az alábbi képen látható. az INSTRUMENT és a BARCOUNT változók értékeit a SET_VALUE() függvény jelenti az OUTPUT-ban. Ezt a tömböt a CREATE_MAP() parancs hozza létre. Az adatok az egyéni táblázatba esnek, ami az alábbi képen látható.
Kereskedési robotok a QPILE-n – kész megoldások
Mozgó átlagos robot
Demó robot nem alkalmas valódi kereskedésre.
A robot 5 paramétert tartalmaz. A DÁTUM, IDŐ, ÁR azonosító értéke 30. szintre van állítva. A MOVING és TP azonosítók pontossága nulla. A QPILE alatt írt mozgóátlagos robotkód:
N. Moroshkin pozíciókalkulátor
Program a maximálisan megengedhető lehívás mértékének, valamint a hosszú és short pozíciók célértékének kiszámítására az aktuális eladási és vételi árakon. A szinteket a pozícióbeviteli térfogat 2 értékére számítják ki. A robot a stop megbízás hozzárendelésekor a nyitóárból egy lépésben találja meg a megengedett pozícióvolumen, a sáv felfelé irányuló pozíció nyitásának számításával. A talált szintek bekerülnek a terminál ablakba, amelyek utólag megjelennek az ártáblázatban. A tranzakciók egy adott eszközre fixek. Ha egy pozíciót kinyitunk, a robot elkezdi számolni a paramétereit. A pozíció változásától függően a hozzárendelt rendelések módosulnak.
Hangerőszűrő
Robot-portfólió a gyertyák térfogatának számtani középértékének kiszámítására és az X együttható átlagtermékével való összehasonlítására. Megfelelően működik ábrázolt diagramokkal egy kiválasztott időszakban.
Opciók görögök
Portfólió az opciók “görögök” kiszámításához és megjelenítéséhez. Ez eltér a Black-Showers módszertől.
TRIX kereskedési robot a QUIK-hoz
A program a TRIX indikátoron alapul. Amikor a jelző a nulla vonal, a megadott szint felett zár, a robot hosszú pozíciót vesz fel. A pozíciót a Take Profit, a Stop Loss vagy a trailing stop zárja.
M4 előfeldolgozó
Program a QPILE és Lua használatához. Tartalmazza a végrehajtható fájlokat tartalmazó archívumot, a dokumentációt és a DLL-fájlokat reguláris kifejezés-elemzéssel. A program használatához ki kell csomagolni a futtatható fájlokat, és el kell helyezni a regexp2-t a C:\Windows elérési útba. Leckék a QPILE-ról a QUIK-hoz: https://youtu.be/vMTXwDUujpI Szkript telepítése QPILE-re a Quik terminálban: https://youtu.be/0B7qL8Svh7I A github egy szakasza, amely leírja a QPILE-be épített algoritmikus nyelv használatát A QUIK rendszer munkaállomása a következő linken található: https://euvgub.github.io/quik_user_manual/ch8.html. A QPILE egy elavult nyelv, de meglehetősen egyszerű és még a kezdő kereskedők számára is elérhető. A már régóta bevált kereskedési robotok és programok továbbra is dolgoznak rajta. Bonyolultabb feladatokhoz azonban jobb a LUA használata.
0к