Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK

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

Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK.
Handelsrobotar kan skrivas på ett specifikt språk, liknande programkod. QPILE är en av dem, den här artikeln kommer att överväga detta språk, jämföra QPILE- och
LUA-språken och även ge exempel på robotar på detta språk.

Allmän information om QPILE

QPILE är en förkortning som står för QUIK Programmable Interface and Logic Environment.

Detta är en serie kommandon som tolkas av QUIK-arbetsstationen. Det används främst för att beräkna priset på portföljer av värdepapper. Språket används även för:

  • dynamisk omräkning av priset på kunders tillgångar på mäklarens skrivbord och i deras portföljer. I det senare fallet räknas även deras totala pris om;
  • hitta saknade indikatorer med hjälp av sina egna algoritmer och data för marginalutlåning;
  • utveckla rätt handelsstrategi.

Språket beskriver strukturen i tabellen: utnämningen av kolumner och rader, formler. I det senare kan matematiska operationer, variabler, data från andra tabeller användas för beräkning. Programkoden som laddas från QUIK-servern eller från användarens disk bearbetas av språktolken, som beräknar värdena i formlerna. Tabellerna i ett program har en datakälla, men beräkningarna är inte duplicerade och påverkar inte systemets effektivitet. När man arbetar med QUIK-tabeller har tabeller på QPILE standardfunktioner. QUIK på arbetsplatsen är utrustad med en QPILE-kodfelsökare. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Språket låter dig beskriva nya tabeller med en given struktur, markera celler med vissa värden, beräkna fält baserat på matematiska och logiska uttryck. Användaren kommer att få aviseringar i form av en ljudsignal eller ett textmeddelande. Tabeller på QPILE kan redigeras, skrivas ut, kopieras, exporteras via ODBC- och DDE-server. De första uppgifterna kommer från QUIK-tabellerna:

  • transaktioner, inklusive för utförande och opersonliga;
  • order, inklusive stopporder, för affärer över disk och beställningar – rapporter för affärer i avvecklingsaffärer;
  • ”klientportfölj”, ”köp/sälj”
  • data från deltagarens positioner per pengar, handelskonton, instrument.

Tabeller baserade på QPILE kan inte kopieras till en textfil via snabbmenyn och exporteras till tekniska analyssystem, och diagram kan inte utvecklas utifrån dem. QPILE-baserade tabeller kan inte filtreras eller sorteras.

Arbeta med ett bord

För att ladda programkoden måste du välja servicemenyn och sedan QPILE-skript. Du kan också använda kombinationen Ctrl+F11. När du måste klicka på ”Lägg till” och välj önskad fil. Den har filtillägget .qpl och dess namn kommer att visas i listan med tillgängliga skript.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKOm det finns ett fel i programmet kommer systemet att göra ett meddelande i ”Meddelandefönstret”, som kommer att innehålla namnet på den defekta filen och radnumret med felet. Om inga fel hittades i filen kommer följande data att anges i fälten:

  • tabellnamn;
  • antal kolumner och klienter;
  • lista över identifierare och klienter;
  • listan över parametrar och filens källkod.

Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKKnappen ”Ladda ner lokalt” låter dig hämta tabellen från en fil, och ”Ladda upp till server” skickar programmet till servern så att alla användare kan komma åt det. För att skapa en tabell, klicka på Skapa tabell. I ”Tillgängliga skript” välj det program du behöver köra, ställ in antalet rader genom ”Klientfiltret”, definiera de obligatoriska kolumnerna och deras sekvens.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKPausa och återuppta beräkningen, starta beräkningen igen och i felsökningsläge, spara beskrivningen i en fil, demonstrera formeln och skriptparametrar är tillgängliga i snabbmenyn.

QPILE konstruktioner

Datatyper

  • String – sträng.
  • Dubbel är ett flyttal.
  • Samling – en samling.
  • Karta – en associativ array – en sekvens av par som låter dig få information med nyckel.

Uttryck

De aritmetiska operationerna addition, subtraktion, multiplikation, division tillämpas. De logiska uttrycken ”och”, ”eller”, är lika med, mer, mindre, ojämlikheter, villkorskonstruktion ”om … då …” används också.

Funktioner

Funktioner kan finnas var som helst i programmet och har olika namn. Totalt finns 18 grupper av matematiska funktioner och funktioner tillgängliga för att få värdena för tabeller och parametrar, associativa arrayer, en lista med tabeller och andra uppgifter. Första klass:

  1. Matematiska funktioner som låter dig returnera värdet på sinus, cosinus, tangent, cotangens för argumentet, beräkna exponenten för argumentet, generera ett slumptal osv.
  2. Allmänna kommandon : NEW_GLOBAL för att initiera en global variabel och MESSAGE för att öppna meddelanden.

Funktioner att arbeta med:

  • Samlingar av föremål (Samling) . De låter dig skapa en ny samling, returnera önskat antal element, ersätta eller infoga önskade värden.
  • Associativa arrayer (MAP) . Hjälp till att skapa och hantera arrayen.
  • Filer – arbeta med textfiler, upprätthålla en logglogg över programmet. Filnamnet kan innehålla sökvägen till den.
  • Strängar .
  • Grafer . Funktioner GET_CANDLE för att komma åt ljusdata och GET_CANDLE EX för att returnera en associativ array.
  • Ansökningar . Skapa order och skicka dem till handelssystemet.
  • Taggar . Deras konstruktion och installation på diagrammet. Lägga till, ta bort en eller alla etiketter, hämta och ställa in parametrar för en specifik etikett.

Det finns även funktioner för:

  1. För åtkomst till rader med godtyckliga QUIK-tabeller och listor över tillgängliga parametrar . Tillgång till arbetsplatstabelldata. Dessa inkluderar GET_ITEM för att returnera MAP och GET_NUMBER_OF för att returnera antalet poster.
  2. Att arbeta med ett programmerbart bord . Dessa kommandon fungerar på den EGNA tabellen. Den är läsbar av standardfunktionerna från föregående stycke och av dessa funktioner. Denna grupp innehåller kommandon för att lägga till, ändra och ta bort en rad med ett index, och helt rensa den EGNA tabellen.

För att få värden använd:

  1. Tabeller över aktuella affärer . Hämta utbytesinformationsparametrar med GET_PARAM (_EX) kommandon.
  2. Citat windows . Att erhålla värdena för instrumentkurser.
  3. Tabeller över positioner efter instrument och pengar . Inhämta data om en kund, ett företag, ett instrument, ett depåkonto genom kod.

Servicefunktioner – returnera datumet för den aktuella handelssessionen, associativ serie, aktuellt datum och tid, bestämma anslutningstillståndet, avbryta beräkningsläget.

Felsökningsprogram

Steg-för-steg kontroll över programmets funktion utförs i fönstret ”Debug”. Den öppnas från snabbmenyn ”Starta beräkning i felsökningsläge”. Den kan också öppnas med kommandot breakpoint() och programraden kommer att markeras i rött. Fönstret innehåller fält med programkod och variabelvärden. Längst ner i fönstret finns knappar ”Nästa steg”, ”Fortsätt exekvering”, ”Stoppa beräkning”. Att trycka på F5 kommer att fortsätta körningen av programmet, kombinationen Shift + F5 kommer att sluta felsöka, F10-tangenten leder till nästa rad.

QPILE eller LUA?

LUA är ett nytt programmeringsspråk för att skapa handelsrobotar. Liksom QPILE är det implementerat i QUIK-terminalen. https://articles.opexflow.com/programming/lua.htm En webbplats dedikerad till utvecklingen av handelsrobotar för handel visar fördelarna med LUA-språket framför QPILE. Så det kan fungera som ett okompilerat skript och bytekod, utrustad med utvecklarverktyg och objektorienterade programmeringsmekanismer. Objekt skrivna på andra programmeringsspråk kan kopplas till LUA-program. LUA tillhandahåller 8 datatyper, inklusive metatabeller. LUA-språket är flertrådigt, snabbt, och transaktioner och terminalhändelser är asynkrona. LUA är vanligare än QPILE, och många tillägg har skrivits för det.

QPILE-språket är nu utfasat. Experter på forumen rekommenderar att du använder LUA. Även om användbara och effektiva program fortfarande används.

QPILE-språket är dock enkelt jämfört med LUA, så om du inte har någon erfarenhet av programmering är det bättre att välja QPILE. På det här språket kan du skriva en enkel robot om du inte behöver utföra komplexa beräkningar.

Hur skapar man en handelsrobot på QPILE?

För att skapa en handelsrådgivare behöver du följande program:

  1. DESS Quik.
  2. Notepad++ kodredigerare.
  3. Guide till QPILE.
  4. XML-plugin för koddetektering i Notepad++.

Ladda ner och installera dessa program. Aktivera språksyntaxen genom att placera userDefineLang.xml i sökvägen C:\Users\User\AppData\Roaming\Notepad++\
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKLåt oss först skapa följande handelsstrategi. Skriptet ska beräkna Hi och Low för de sista ljusen varje minut, kontrollera instrumentets aktuella pris. En position öppnas i önskad riktning om priset på instrumentet når maximi- eller minimivärdet för perioden. När en signal för kort tas emot stängs den långa positionen automatiskt. Roboten använder GAZP-verktyget, tidsramen är inställd på 1 min. Hög-lågt mätdjup är inställt på 5 ljus. För att ange Lång, sätts en regel och skärningspunkten för det aktuella priset för maxvärdet för perioden. Roboten går in i Short om det aktuella priset överskrider minimivärdet för dessa 5 ljus. Skriv ett kodblock i Notepad++ med grundläggande inställningar och serverdatum och tid. Denna kod visas på bilden nedan.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKDe första 4 raderna kod bildar programhuvudet. Mellan rad 6 och 44 finns programmets kropp, som innehåller robotens innehåll. Raderna 7 – 12 innehåller användarinställningar, som inkluderar koderna för instrumentet, gruppen och klienten, kontonumret på MICEX. Dessa värden ändras inte under programkörning. Raderna 13 – 16 är de initiala värdena för variablerna. De kommer att återställas till noll vid varje iterationspass. Raderna 17 – 21 innehåller en indikation för att använda serverns datum och tid. Dessa data skickas till DATETIME-funktionen och konverteras till textformat. Raderna 22 – 29 skickar mottagna data till tabellen. Koden måste sparas och qpl-tillägget måste anges.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKÖppna programmet i QUIK genom att trycka på Ctrl+F10 och välja den genererade qpl-filen. Använd kombinationen Ctrl+F11 för att öppna fönstret ”Arbeta med portföljer” och ställ in portföljberäkningsperioden till 5 minuter. Tryck på Ctrl+F12 för att ställa in kolumnerna att visas i tabellen. Bilden visar resultatet av robotens arbete.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKLåt oss lägga till några fler funktioner och villkor till vårt program.
Blocket ”Användarinställningar” kompletteras med variablerna NUMBER och INTERVAL, som kommer att användas i funktionen att erhålla de sista N staplarna. Funktionen DATETIME ställer in serverns datum och tid, och de aktuella datum- och tidsfunktionerna CURDATE och CURTIME anropas från den. Den aktuella tiden omvandlas till ett tal på rad 24. Rad 26 ställer in tiden för algoritmen att gå från 10:00:01 till 18:40:00 UTC.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKAlgoritmiskt språk QPILE för programmering av handelsrobotar för QUIKOftast beräknas indikatorer, oscillatorer, statistiska beräkningar av de sista N ljusen i diagrammet. QPILE har inte en funktion för att samla in antalet ljus för N perioder sedan som sådan, men det finns en GET_CANDLE-funktion som kommer åt ljus på diagrammet efter datum och tid i textformat. Vår kod innehåller funktionen för att få de sista N staplarna OHLC(). Den skapar en samling med parametrarna för de sista ljusen kapslade i listan SAMLING. Programmet kontrollerar INTERVAL-värdet och om det inte faller inom intervallet 0…60 visas ett meddelande om att värdet inte motsvarar det tillåtna intervallet. En MAP-samling med ljus skapas på rad 88. En FOR-slinga pollar diagrammet till det erforderliga djupet med INTERVAL-steget från det nya till det gamla ljuset. På rad 90, efter att cykeln har deklarerats, går roboten tillbaka ett intervall. När du får ett ljus med GET_CANDLE, placera den i BARLIST-samlingen med funktionen INSERT_COLLECTION_TEAM. Som ett resultat av operationen av kommandot OHLC() fylls BARLIST på med de sista ljusen från instrumentdiagrammet i mängden NUMBER. Antalet element i samlingen begärs av kommandot GET_COLLECTION_COUNT() och rapporteras av variabeln BARCOUNT. Serverdatum, tid, värden för INSTRUMENT- och BARCOUNT-variabler rapporteras av SET_VALUE()-funktionen i OUTPUT. Denna array skapas av kommandot CREATE_MAP(). Uppgifterna faller in i den anpassade tabellen, som kan ses på bilden nedan. Värdena för variablerna INSTRUMENT och BARCOUNT rapporteras av funktionen SET_VALUE() i OUTPUT. Denna array skapas av kommandot CREATE_MAP(). Uppgifterna faller in i den anpassade tabellen, som kan ses på bilden nedan. Värdena för variablerna INSTRUMENT och BARCOUNT rapporteras av funktionen SET_VALUE() i OUTPUT. Denna array skapas av kommandot CREATE_MAP(). Uppgifterna faller in i den anpassade tabellen, som kan ses på bilden nedan.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK

Handel med robotar på QPILE – färdiga lösningar

Rörlig genomsnittlig robot

Demorobot är inte lämplig för riktig handel.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIKRoboten innehåller 5 parametrar. DATUM, TID, PRIS identifierare värden är inställda på nivå 30. RÖRANDE och TP identifierare är inställda på noll precision. Robotkod på glidande medelvärde skrivet under QPILE:

N. Moroshkin positionsräknare

Ett program för att beräkna nivåerna för den maximalt tillåtna uttag och målet för långa och korta positioner vid aktuella köp- och köpkurser. Nivåerna beräknas för 2 värden av positionsingångsvolymen. Roboten hittar den tillåtna positionsvolymen när den tilldelar en stopporder i ett steg från öppningspriset med beräkningen av att öppna en position i ribbans riktning uppåt. De hittade nivåerna läggs in i terminalfönstret, vilket sedan återspeglas i prisdiagrammet. Transaktioner är fixerade för ett givet instrument. Om en position öppnas börjar roboten beräkna dess parametrar. Beroende på positionsändringen justeras de tilldelade orderna.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK

Volymfilter

En robotportfölj för att beräkna det aritmetiska medelvärdet av volymen för ljus och jämföra den med medelprodukten med koefficienten X. Fungerar korrekt med plottade diagram under en vald tidsperiod.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK

Alternativ grekerna

Portfölj för att beräkna och visa ”greker” av alternativ. Det skiljer sig från Black-Showers-metoden.
Algoritmiskt språk QPILE för programmering av handelsrobotar för QUIK

TRIX handelsrobot för QUIK

Programmet är baserat på TRIX-indikatorn. När indikatorn stänger över nolllinjen, den angivna nivån, tar roboten Lång position. Positionen stängs av Take Profit, Stop Loss eller efterstopp.

M4 förprocessor

Program för att arbeta med QPILE och Lua. Inkluderar arkiv med körbara filer, dokumentation och DLL-filer med parsning av reguljära uttryck. För att använda programmet måste du packa upp de körbara filerna och placera regexp2 i C:\Windows-sökvägen. Lektioner om QPILE för QUIK: https://youtu.be/vMTXwDUujpI Installera ett skript på QPILE i Quik-terminalen: https://youtu.be/0B7qL8Svh7I Ett avsnitt på github som beskriver användningen av QPILE-algoritmspråket inbyggt i QUIK-systemarbetsstationen finns på länken – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE är ett föråldrat språk, men ganska enkelt och tillgängligt även för nybörjare. Handel med robotar och program som har bevisat sig själva under lång tid fortsätter att arbeta med det. Men för mer komplexa uppgifter är det bättre att använda LUA.

info
Rate author
Add a comment

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

    Svara