QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára

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

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

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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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.

QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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ú:

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

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

  1. Aktuális kereskedések táblázatai . Csere információs paraméterek lekérése GET_PARAM (_EX) parancsokkal.
  2. Idézet ablakok . A műszer árajánlatok értékeinek megszerzése.
  3. 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:

  1. ITS Quik.
  2. Notepad++ kódszerkesztő.
  3. Útmutató a QPILE-hoz.
  4. 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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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ó.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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ó.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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ó.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára

Kereskedési robotok a QPILE-n – kész megoldások

Mozgó átlagos robot

Demó robot nem alkalmas valódi kereskedésre.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára 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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára

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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára

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.
QPILE algoritmikus nyelv kereskedési robotok programozásához QUIK számára

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.

info
Rate author
Add a comment

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

    Reply