Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK

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

Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK.
Handelsrobotter kan skrives på et bestemt sprog, der ligner programkode. QPILE er en af ​​dem, denne artikel vil overveje dette sprog, sammenligne QPILE- og
LUA-sprogene og også give eksempler på robotter på dette sprog.

Generel information om QPILE

QPILE er en forkortelse, der står for QUIK Programmable Interface and Logic Environment.

Dette er en række kommandoer, der fortolkes af QUIK-arbejdsstationen. Det bruges hovedsageligt til at beregne prisen på porteføljer af værdipapirer. Sproget bruges også til:

  • dynamisk genberegning af prisen på kunders aktiver på mæglerens skrivebord og i deres porteføljer. I sidstnævnte tilfælde genberegnes deres samlede pris også;
  • finde manglende indikatorer ved hjælp af deres egne algoritmer og data til marginudlån;
  • udvikle den rigtige handelsstrategi.

Sproget beskriver strukturen af ​​tabellen: udnævnelsen af ​​kolonner og rækker, formler. I sidstnævnte kan matematiske operationer, variabler, data fra andre tabeller bruges til beregning. Programkoden indlæst fra QUIK-serveren eller fra brugerens disk behandles af sprogfortolkeren, som beregner værdierne i formlerne. Tabellerne i et program har én datakilde, men beregningerne er ikke duplikeret og påvirker ikke systemets effektivitet. Når du arbejder med QUIK-tabeller, har tabeller på QPILE standardfunktioner. QUIK på arbejdspladsen er udstyret med en QPILE kode debugger. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Sproget giver dig mulighed for at beskrive nye tabeller med en given struktur, fremhæve celler med bestemte værdier, beregne felter baseret på matematiske og logiske udtryk. Brugeren vil modtage notifikationer i form af et lydsignal eller en sms. Tabeller på QPILE kan redigeres, udskrives, kopieres, eksporteres via ODBC og DDE server. De indledende data er fra QUIK-tabellerne:

  • transaktioner, herunder til udførelse og upersonlige;
  • ordrer, herunder stopordrer, for håndkøbshandler og ordrer – rapporter for handler i afviklingsaftaler;
  • “kundeportefølje”, “køb/sælg”
  • data fra deltagerens positioner efter penge, handelskonti, instrument.

Tabeller baseret på QPILE kan ikke kopieres til en tekstfil via kontekstmenuen og eksporteres til tekniske analysesystemer, og diagrammer kan ikke udvikles baseret på dem. QPILE-baserede tabeller kan ikke filtreres eller sorteres.

Arbejde med et bord

For at indlæse programkoden skal du vælge servicemenuen og derefter QPILE-scripts. Du kan også bruge kombinationen Ctrl+F11. Når du skal klikke på “Tilføj” og vælge den ønskede fil. Den har en .qpl-udvidelse, og dens navn vises på listen over tilgængelige scripts.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKHvis der er en fejl i programmet, vil systemet lave en notifikation i “Meddelelsesvinduet”, som vil indeholde navnet på den defekte fil og linjenummeret med fejlen. Hvis der ikke blev fundet fejl i filen, vil følgende data blive angivet i felterne:

  • tabel navn;
  • antal kolonner og klienter;
  • liste over identifikatorer og klienter;
  • listen over parametre og filens kildekode.

Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKKnappen “Download lokalt” giver dig mulighed for at hente tabellen fra en fil, og “Upload til server” vil sende programmet til serveren, så alle brugere kan få adgang til det. For at oprette en tabel skal du klikke på Opret tabel. I “Tilgængelige scripts” vælg det program, du skal udføre, indstil antallet af linjer gennem “Client Filter”, definer de nødvendige kolonner og deres rækkefølge.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKPause og genoptagelse af beregningen, start af beregningen igen og i fejlretningstilstand, lagring af beskrivelsen i en fil, demonstration af formlen og scriptparametre er tilgængelige i kontekstmenuen.

QPILE konstruerer

Datatyper

  • String – snor.
  • Dobbelt er et flydende kommatal.
  • Samling – en samling.
  • Kort – et associativt array – en sekvens af par, der giver dig mulighed for at få information via nøgle.

Udtryk

De aritmetiske operationer med addition, subtraktion, multiplikation, division anvendes. De logiske udtryk “og”, “eller”, er lig med, flere, mindre, uligheder, betinget konstruktion “hvis … så …” bruges også.

Funktioner

Funktioner kan være placeret hvor som helst i programmet og have forskellige navne. I alt er 18 grupper af matematiske funktioner og funktioner tilgængelige for at opnå værdierne af tabeller og parametre, associative arrays, en liste over tabeller og andre opgaver. Første klasse:

  1. Matematiske funktioner , der giver dig mulighed for at returnere værdien af ​​argumentets sinus, cosinus, tangent, cotangens, beregne eksponenten for argumentet, generere et tilfældigt tal osv.
  2. Generelle kommandoer : NEW_GLOBAL for at initialisere en global variabel og MESSAGE for at åbne beskeder.

Funktioner at arbejde med:

  • Samlinger af genstande (Samling) . De giver dig mulighed for at oprette en ny samling, returnere det nødvendige antal elementer, erstatte eller indsætte de ønskede værdier.
  • Associative Arrays (MAP) . Hjælp til at oprette og administrere arrayet.
  • Filer – arbejde med tekstfiler, vedligeholde en log-log over programmet. Filnavnet kan indeholde stien til den.
  • Strenge .
  • Grafer . Funktioner GET_CANDLE for at få adgang til candle-data og GET_CANDLE EX for at returnere et associativt array.
  • Ansøgninger . Oprettelse af ordrer og afsendelse til handelssystemet.
  • Tags . Deres konstruktion og installation på diagrammet. Tilføjelse, sletning af en eller alle etiketter, hentning og indstilling af parametre for en specifik etiket.

Der er også funktioner til:

  1. Til adgang til rækker af vilkårlige QUIK-tabeller og lister over tilgængelige parametre . Adgang til tabeldata på arbejdspladsen. Disse inkluderer GET_ITEM for at returnere MAP og GET_NUMBER_OF for at returnere antallet af poster.
  2. At arbejde med en programmerbar tabel . Disse kommandoer fungerer på OWN table. Den kan læses af standardfunktionerne fra det foregående afsnit og af disse funktioner. Denne gruppe inkluderer kommandoer til at tilføje, ændre og slette en række med et indeks og fuldstændig rydde den EGEN tabel.

For at få værdier brug:

  1. Tabeller over aktuelle handler . Få udvekslingsinformationsparametre ved hjælp af GET_PARAM (_EX) kommandoer.
  2. Citat windows . Indhentning af værdierne af instrumentkurser.
  3. Tabeller over positioner efter instrumenter og penge . Indhentning af data om en kunde, firma, instrument, depokonto efter kode.

Servicefunktioner – returnering af datoen for den aktuelle handelssession, associative serier, aktuel dato og klokkeslæt, bestemmelse af forbindelsestilstanden, afbrydelse af beregningstilstanden.

Debugging programmer

Trin-for-trin kontrol over programmets drift udføres i vinduet “Debug”. Den åbnes fra kontekstmenuen “Start beregning i fejlretningstilstand”. Den kan også åbnes med kommandoen breakpoint(), og programlinjen vil blive fremhævet med rødt. Vinduet indeholder felter med programkode og variabelværdier. I bunden af ​​vinduet er der knapper “Næste trin”, “Fortsæt udførelse”, “Stop beregning”. Hvis du trykker på F5, fortsætter udførelsen af ​​programmet, kombinationen Shift + F5 stopper fejlretningen, F10-tasten vil lede til næste linje.

QPILE eller LUA?

LUA er et nyt programmeringssprog til at skabe handelsrobotter. Ligesom QPILE er den implementeret i QUIK-terminalen. https://articles.opexflow.com/programming/lua.htm Et websted dedikeret til udvikling af handelsrobotter til handel viser fordelene ved LUA-sproget frem for QPILE. Så det kan fungere som et ukompileret script og bytekode, udstyret med udviklerværktøjer og objektorienterede programmeringsmekanismer. Objekter skrevet på andre programmeringssprog kan tilsluttes LUA-programmer. LUA leverer 8 datatyper, inklusive metatables. LUA-sproget er multi-threaded, hurtigt, og transaktioner og terminalhændelser er asynkrone. LUA er mere almindelig end QPILE, og der er skrevet mange udvidelser til det.

QPILE-sproget er nu forældet. Eksperter på foraene anbefaler at bruge LUA. Selvom nyttige og effektive programmer stadig bliver brugt.

QPILE-sproget er dog simpelt i forhold til LUA, så hvis du ikke har nogen erfaring med programmering, er det bedre at vælge QPILE. På dette sprog kan du skrive en simpel robot, hvis du ikke skal udføre komplekse beregninger.

Hvordan opretter man en handelsrobot på QPILE?

For at oprette en handelsrådgiver skal du bruge følgende programmer:

  1. ITS Quik.
  2. Notesblok++ kode editor.
  3. Guide til QPILE.
  4. XML-plugin til kodegenkendelse i Notepad++.

Download og installer disse programmer. Aktiver sprogsyntaksen ved at placere userDefineLang.xml i stien C:\Users\User\AppData\Roaming\Notepad++\
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKLad os først oprette følgende handelsstrategi. Scriptet skal beregne Hi og Low for de sidste par stearinlys hvert minut, tjek den aktuelle pris på instrumentet. En position åbnes i den krævede retning, hvis prisen på instrumentet når maksimum- eller minimumværdien for perioden. Når et signal for kort modtages, lukkes den lange position automatisk. Robotten bruger GAZP-værktøjet, tidsrammen er sat til 1 min. Den hi-low måledybde er indstillet til 5 stearinlys. For at indtaste Long, sættes en regel og skæringspunktet for den aktuelle pris for den maksimale værdi for perioden. Robotten vil indtaste Short, hvis den aktuelle pris krydser minimumsværdien for disse 5 stearinlys. Skriv en kodeblok i Notepad++ med grundlæggende indstillinger og serverdato og tid. Denne kode er vist på billedet nedenfor.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKDe første 4 linjer kode danner programoverskriften. Mellem linje 6 og 44 er programmets krop, som indeholder robottens indhold. Linje 7 – 12 indeholder brugerindstillinger, som inkluderer koderne for instrumentet, gruppen og klienten, kontonummeret på MICEX. Disse værdier ændres ikke under programafvikling. Linje 13 – 16 er startværdierne for variablerne. De vil blive nulstillet ved hver gentagelsesgennemgang. Linje 17 – 21 indeholder en indikation om at bruge serverens dato og klokkeslæt. Disse data overføres til DATETIME-funktionen og konverteres til tekstformat. Linje 22 – 29 sender de modtagne data til tabellen. Koden skal gemmes, og qpl-udvidelsen skal angives.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKÅbn programmet i QUIK ved at trykke på Ctrl+F10 og vælge den genererede qpl-fil. Brug Ctrl+F11-kombinationen til at åbne vinduet “Arbejd med porteføljer” og indstil porteføljeberegningsperioden til 5 minutter. Tryk på Ctrl+F12 for at indstille kolonnerne til at blive vist i tabellen. Billedet viser resultatet af robottens arbejde.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKLad os tilføje et par flere funktioner og betingelser til vores program.
Blokken “Brugerindstillinger” er suppleret med ANTAL- og INTERVAL-variablerne, som vil blive brugt i funktionen til at få de sidste N streger. DATETIME-funktionen indstiller serverens dato og klokkeslæt, og de aktuelle dato- og tidsfunktioner CURDATE og CURTIME kaldes fra den. Det aktuelle klokkeslæt konverteres til et tal på linje 24. Linje 26 indstiller tiden for algoritmen til at køre fra 10:00:01 til 18:40:00 UTC.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKAlgoritmisk sprog QPILE til programmering af handelsrobotter til QUIKOftest beregnes indikatorer, oscillatorer, statistiske beregninger af de sidste N stearinlys i diagrammet. QPILE har ikke en funktion til at indsamle antallet af stearinlys for N perioder siden som sådan, men der er en GET_CANDLE funktion, der tilgår stearinlys på diagrammet efter dato og klokkeslæt i tekstformat. Vores kode indeholder funktionen til at få de sidste N barer OHLC(). Det opretter en samling med parametrene for de sidste stearinlys indlejret i SAMLING-listen. Programmet kontrollerer INTERVAL-værdien, og hvis den ikke falder inden for området 0…60, vises en meddelelse om, at værdien ikke svarer til det tilladte område. En MAP-samling med stearinlys oprettes i linje 88. En FOR-løkke, der poller diagrammet til den nødvendige dybde med INTERVAL-trinnet fra det nye til det gamle stearinlys. I linje 90, efter at cyklussen er erklæret, går robotten et interval tilbage. Når du får et stearinlys med GET_CANDLE, placer den i BARLIST-samlingen ved hjælp af INSERT_COLLECTION_TEAM-funktionen. Som et resultat af betjeningen af ​​OHLC()-kommandoen genopfyldes BARLIST med de sidste stearinlys fra instrumentdiagrammet i mængden NUMBER. Antallet af elementer i samlingen anmodes om af kommandoen GET_COLLECTION_COUNT() og rapporteres af variablen BARCOUNT. Serverdato, -klokkeslæt, værdier af INSTRUMENT- og BARCOUNT-variabler rapporteres af SET_VALUE()-funktionen i OUTPUT. Dette array er oprettet af CREATE_MAP() kommandoen. Dataene falder ind i den brugerdefinerede tabel, som kan ses på billedet nedenfor. Værdierne af INSTRUMENT- og BARCOUNT-variablerne rapporteres af funktionen SET_VALUE() i OUTPUT. Dette array er oprettet af CREATE_MAP() kommandoen. Dataene falder ind i den brugerdefinerede tabel, som kan ses på billedet nedenfor. Værdierne af INSTRUMENT- og BARCOUNT-variablerne rapporteres af funktionen SET_VALUE() i OUTPUT. Dette array er oprettet af CREATE_MAP() kommandoen. Dataene falder ind i den brugerdefinerede tabel, som kan ses på billedet nedenfor.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK

Handelsrobotter på QPILE – færdige løsninger

Bevægende gennemsnitlig robot

Demo-robot er ikke egnet til ægte handel.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIKRobotten indeholder 5 parametre. DATO, TID, PRIS identifikator værdier er indstillet til niveau 30. MOVING og TP identifikatorer er indstillet til nul præcision. Robotkode på glidende gennemsnit skrevet under QPILE:

N. Moroshkin positionsberegner

Et program til beregning af niveauerne for den maksimalt tilladte udtrækning og målet for lange og korte positioner til aktuelle udbuds- og budpriser. Niveauerne beregnes for 2 værdier af positionsindtastningsvolumenet. Robotten finder det tilladte positionsvolumen, når der tildeles en stopordre i ét trin fra åbningsprisen med beregningen af ​​at åbne en position i stangens opadgående retning. De fundne niveauer indtastes i terminalvinduet, som efterfølgende afspejles i prisdiagrammet. Transaktioner er faste for et givet instrument. Hvis en position åbnes, begynder robotten at beregne sine parametre. Afhængig af ændringen i position justeres de tildelte ordrer.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK

Volumen filter

En robot-portefølje til at beregne det aritmetiske middelværdi af volumen for stearinlys og sammenligne det med gennemsnitsproduktet med X-koefficienten. Fungerer korrekt med plottede diagrammer i en valgt tidsperiode.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK

Indstillinger grækere

Portefølje til beregning og visning af “grækere” af muligheder. Det adskiller sig fra Black-Showers-metoden.
Algoritmisk sprog QPILE til programmering af handelsrobotter til QUIK

TRIX handelsrobot til QUIK

Programmet er baseret på TRIX-indikatoren. Når indikatoren lukker over nullinjen, det angivne niveau, indtager robotten den lange position. Positionen lukkes af Take Profit, Stop Loss eller efterstop.

M4 forprocessor

Program til at arbejde med QPILE og Lua. Indeholder arkiver med eksekverbare filer, dokumentation og DLL-filer med parsing af regulære udtryk. For at bruge programmet skal du pakke de eksekverbare filer ud og placere regexp2 i C:\Windows-stien. Lektioner om QPILE til QUIK: https://youtu.be/vMTXwDUujpI Installation af et script på QPILE i Quik-terminalen: https://youtu.be/0B7qL8Svh7I Et afsnit på github, der beskriver brugen af ​​QPILE algoritmiske sprog indbygget i QUIK-systemarbejdsstation placeret på linket – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE er et forældet sprog, men ganske enkelt og tilgængeligt selv for nybegyndere. Handel med robotter og programmer, der har bevist sig selv i lang tid, fortsætter med at arbejde på det. Til mere komplekse opgaver er det dog bedre at bruge LUA.

info
Rate author
Add a comment

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

    Svar