Algoritmisk språk QPILE for programmering av handelsroboter for QUIK.
Handelsroboter kan skrives på et spesifikt språk, som ligner på programkode. QPILE er en av dem, denne artikkelen vil vurdere dette språket, sammenligne QPILE- og
LUA-språkene , og også gi eksempler på roboter på dette språket.
- Generell informasjon om QPILE
- Arbeid med et bord
- QPILE konstruerer
- Datatyper
- Uttrykkene
- Funksjoner
- Feilsøkingsprogrammer
- QPILE eller LUA?
- Hvordan lage en handelsrobot på QPILE?
- Handelsroboter på QPILE – ferdige løsninger
- Bevegelig gjennomsnittlig robot
- N. Moroshkin posisjonskalkulator
- Volumfilter
- Alternativer grekere
- TRIX handelsrobot for QUIK
- M4 forprosessor
Generell informasjon om QPILE
QPILE er en forkortelse som står for QUIK Programmable Interface and Logic Environment.
Dette er en rekke kommandoer tolket av QUIK-arbeidsstasjonen. Den brukes hovedsakelig til å beregne prisen på porteføljer av verdipapirer. Språket brukes også til:
- dynamisk rekalkulering av prisen på kundenes eiendeler på meglerens skrivebord og i deres porteføljer. I sistnevnte tilfelle blir også totalprisen deres beregnet på nytt;
- finne manglende indikatorer ved å bruke sine egne algoritmer og data for marginutlån;
- utvikle den riktige handelsstrategien.
Språket beskriver strukturen til tabellen: utnevnelsen av kolonner og rader, formler. I sistnevnte kan matematiske operasjoner, variabler, data fra andre tabeller brukes til beregning. Programkoden lastet fra QUIK-serveren eller fra brukerens disk behandles av språktolken, som beregner verdiene i formlene. Tabellene til ett program har én datakilde, men beregningene er ikke duplisert og påvirker ikke effektiviteten til systemet. Når du arbeider med QUIK-tabeller, har tabeller på QPILE standardfunksjoner. QUIK på arbeidsplassen er utstyrt med en QPILE kode debugger. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Språket vil tillate deg å beskrive nye tabeller med en gitt struktur, markere celler med bestemte verdier, beregne felt basert på matematiske og logiske uttrykk. Brukeren vil motta varsler i form av et lydsignal eller en tekstmelding. Tabeller på QPILE kan redigeres, skrives ut, kopieres, eksporteres via ODBC- og DDE-server. De første dataene er fra QUIK-tabellene:
- transaksjoner, inkludert for utførelse og upersonlige;
- bestillinger, inkludert stoppordre, for over-the-counter handler og bestillinger – rapporter for handler i oppgjørsavtaler;
- «kundeportefølje», «kjøp/selg»
- data fra deltakerens posisjoner etter penger, handelskontoer, instrument.
Tabeller basert på QPILE kan ikke kopieres til en tekstfil via kontekstmenyen og eksporteres til tekniske analysesystemer, og diagrammer kan ikke utvikles basert på dem. QPILE-baserte tabeller kan ikke filtreres eller sorteres.
Arbeid med et bord
For å laste inn programkoden, må du velge tjenestemenyen og deretter QPILE-skript. Du kan også bruke kombinasjonen Ctrl+F11. Etter at du må klikke «Legg til» og velge ønsket fil. Den har en .qpl-utvidelse og navnet vil vises i listen over tilgjengelige skript.
Hvis det er en feil i programmet, vil systemet gi en melding i «Meldingsvinduet», som vil inneholde navnet på den defekte filen og linjenummeret med feilen. Hvis det ikke ble funnet feil i filen, vil følgende data bli angitt i feltene:
- tabellnavn;
- antall kolonner og klienter;
- liste over identifikatorer og klienter;
- listen over parametere og kildekoden til filen.
«Last ned lokalt»-knappen lar deg hente tabellen fra en fil, og «Last opp til server» vil sende programmet til serveren slik at alle brukere får tilgang til det. For å opprette en tabell, klikk på Opprett tabell. I «Tilgjengelige skript» velger du programmet du trenger å kjøre, angi antall linjer gjennom «Klientfilteret», definer de nødvendige kolonnene og deres rekkefølge.
Pause og gjenoppta beregningen, starte beregningen på nytt og i feilsøkingsmodus, lagre beskrivelsen i en fil, demonstrere formelen og skriptparametere er tilgjengelig i kontekstmenyen.
QPILE konstruerer
Datatyper
- String – streng.
- Dobbel er et flyttall.
- Samling – en samling.
- Kart – en assosiativ array – en sekvens av par som lar deg få informasjon med nøkkel.
Uttrykkene
De aritmetiske operasjonene addisjon, subtraksjon, multiplikasjon, divisjon brukes. De logiske uttrykkene «og», «eller», er lik, mer, mindre, ulikheter, betinget konstruksjon «hvis … da …» brukes også.
Funksjoner
Funksjoner kan plasseres hvor som helst i programmet og har forskjellige navn. Totalt er 18 grupper av matematiske funksjoner og funksjoner tilgjengelige for å hente verdiene til tabeller og parametere, assosiative matriser, en liste over tabeller og andre oppgaver. Første klasse:
- Matematiske funksjoner som lar deg returnere verdien av sinus, cosinus, tangens, cotangens til argumentet, beregne eksponenten til argumentet, generere et tilfeldig tall, etc.
- Generelle kommandoer : NEW_GLOBAL for å initialisere en global variabel og MESSAGE for å åpne meldinger.
Funksjoner å jobbe med:
- Gjenstandssamlinger (Samling) . De lar deg opprette en ny samling, returnere det nødvendige antallet elementer, erstatte eller sette inn ønskede verdier.
- Associative Arrays (MAP) . Hjelp til å opprette og administrere matrisen.
- Filer – arbeider med tekstfiler, opprettholder en logglogg over programmet. Filnavnet kan inneholde banen til den.
- Strenger .
- Grafer . Funksjoner GET_CANDLE for å få tilgang til lysdata og GET_CANDLE EX for å returnere en assosiativ matrise.
- Søknader . Opprette bestillinger og sende dem til handelssystemet.
- Tagger . Deres konstruksjon og installasjon på kartet. Legge til, slette en eller alle etiketter, hente og angi parametere for en spesifikk etikett.
Det finnes også funksjoner for:
- For tilgang til rader med vilkårlige QUIK-tabeller og lister over tilgjengelige parametere . Tilgang til arbeidsplasstabelldata. Disse inkluderer GET_ITEM for å returnere MAP og GET_NUMBER_OF for å returnere antall oppføringer.
- Å jobbe med et programmerbart bord . Disse kommandoene fungerer på OWN-tabellen. Den kan leses av standardfunksjonene fra forrige avsnitt og av disse funksjonene. Denne gruppen inkluderer kommandoer for å legge til, endre og slette en rad med en indeks, og fullstendig tømme den EGEN tabellen.
For å få verdier bruk:
- Tabeller over aktuelle handler . Få utvekslingsinformasjonsparametere ved å bruke GET_PARAM (_EX) kommandoer.
- Sitat windows . Innhenting av verdiene til instrumenttilbud.
- Tabeller over posisjoner etter instrumenter og penger . Innhenting av data om en klient, firma, instrument, depokonto etter kode.
Tjenestefunksjoner – returnere datoen for gjeldende handelsøkt, assosiative serier, gjeldende dato og klokkeslett, bestemme tilkoblingstilstanden, avbryte beregningsmodusen.
Feilsøkingsprogrammer
Trinn-for-trinn kontroll over driften av programmet utføres i «Debug»-vinduet. Den åpnes fra kontekstmenyen «Start beregning i feilsøkingsmodus». Den kan også åpnes med kommandoen breakpoint(), og programlinjen vil bli uthevet i rødt. Vinduet inneholder felt med programkode og variabelverdier. Nederst i vinduet er det knapper «Neste trinn», «Fortsett utførelse», «Stopp beregning». Hvis du trykker på F5, fortsetter kjøringen av programmet, kombinasjonen Shift + F5 vil slutte å feilsøke, F10-tasten vil lede til neste linje.
QPILE eller LUA?
LUA er et nytt programmeringsspråk for å lage handelsroboter. I likhet med QPILE er den implementert i QUIK-terminalen. https://articles.opexflow.com/programming/lua.htm Et nettsted dedikert til utvikling av handelsroboter for handel viser fordelene med LUA-språket fremfor QPILE. Så det kan fungere som et ukompilert skript og bytekode, utstyrt med utviklerverktøy og objektorienterte programmeringsmekanismer. Objekter skrevet på andre programmeringsspråk kan kobles til LUA-programmer. LUA gir 8 datatyper, inkludert metatables. LUA-språket er flertrådet, raskt, og transaksjoner og terminalhendelser er asynkrone. LUA er mer vanlig enn QPILE, og mange utvidelser er skrevet for det.
QPILE-språket er nå utdatert. Eksperter på forumet anbefaler å bruke LUA. Selv om nyttige og effektive programmer fortsatt brukes.
QPILE-språket er imidlertid enkelt sammenlignet med LUA, så hvis du ikke har noen erfaring med programmering, er det bedre å velge QPILE. På dette språket kan du skrive en enkel robot hvis du ikke trenger å utføre komplekse beregninger.
Hvordan lage en handelsrobot på QPILE?
For å opprette en handelsrådgiver trenger du følgende programmer:
- ITS Quik.
- Notisblokk++ koderedigerer.
- Guide til QPILE.
- XML-plugin for kodedeteksjon i Notepad++.
Last ned og installer disse programmene. Aktiver språksyntaksen ved å plassere userDefineLang.xml i banen C:\Users\User\AppData\Roaming\Notepad++\
Først, la oss lage følgende handelsstrategi. Skriptet skal beregne Hi og Low for de siste stearinlysene hvert minutt, sjekk gjeldende pris på instrumentet. En posisjon åpnes i ønsket retning hvis prisen på instrumentet når maksimums- eller minimumsverdien for perioden. Når et signal for kort mottas, lukkes den lange posisjonen automatisk. Roboten bruker GAZP-verktøyet, tidsrammen er satt til 1 min. Høy-lav måledybde er satt til 5 lys. For å angi Long, settes en regel og skjæringspunktet for gjeldende pris for maksimalverdien for perioden. Roboten vil gå inn i Short hvis gjeldende pris krysser minimumsverdien for disse 5 lysene. Skriv en kodeblokk i Notepad++ med grunnleggende innstillinger og serverdato og klokkeslett. Denne koden er vist på bildet nedenfor.
De første 4 kodelinjene danner programoverskriften. Mellom linje 6 og 44 er hoveddelen av programmet, som inneholder innholdet i roboten. Linje 7 – 12 inneholder brukerinnstillinger, som inkluderer kodene til instrumentet, gruppen og klienten, kontonummeret på MICEX. Disse verdiene endres ikke under programkjøring. Linje 13 – 16 er startverdiene til variablene. De vil bli tilbakestilt til null ved hver iterasjonspassering. Linje 17 – 21 inneholder en indikasjon om å bruke serverens dato og klokkeslett. Disse dataene sendes til DATETIME-funksjonen og konverteres til tekstformat. Linje 22 – 29 sender de mottatte dataene til tabellen. Koden må lagres og qpl-utvidelsen må spesifiseres.
Åpne programmet i QUIK ved å trykke Ctrl+F10 og velge den genererte qpl-filen. Bruk Ctrl+F11-kombinasjonen for å åpne «Arbeid med porteføljer»-vinduet og sett porteføljeberegningsperioden til 5 minutter. Trykk Ctrl+F12 for å angi at kolonnene skal vises i tabellen. Bildet viser resultatet av robotens arbeid.
La oss legge til noen flere funksjoner og betingelser til programmet vårt.
«Brukerinnstillinger»-blokken er supplert med ANTALL- og INTERVAL-variablene, som vil bli brukt i funksjonen for å få de siste N søylene. DATETIME-funksjonen setter serverens dato og klokkeslett, og gjeldende dato- og klokkeslettfunksjoner CURDATE og CURTIME kalles fra den. Gjeldende tid konverteres til et tall på linje 24. Linje 26 setter tiden for algoritmen til å gå fra 10:00:01 til 18:40:00 UTC.
Oftest beregnes indikatorer, oscillatorer, statistiske beregninger av de siste N lysene i diagrammet. QPILE har ikke en funksjon for å samle inn antall lys for N perioder siden som sådan, men det er en GET_CANDLE-funksjon som får tilgang til lys på diagrammet etter dato og klokkeslett i tekstformat. Koden vår inneholder funksjonen for å få de siste N strekene OHLC(). Den oppretter en samling med parameterne til de siste lysene som er nestet i SAMLING-listen. Programmet sjekker INTERVAL-verdien, og hvis den ikke faller innenfor området 0…60, vises en melding om at verdien ikke samsvarer med det tillatte området. En MAP-samling med stearinlys opprettes i linje 88. En FOR-sløyfe som poller kartet til ønsket dybde med INTERVAL-trinnet fra det nye til det gamle stearinlyset. I linje 90, etter at syklusen er deklarert, går roboten et intervall tilbake. Når du får et stearinlys med GET_CANDLE, plasser den i BARLIST-samlingen ved å bruke funksjonen INSERT_COLLECTION_TEAM. Som et resultat av operasjonen av OHLC()-kommandoen, fylles BARLIST på med de siste lysene fra instrumentdiagrammet i mengden NUMBER. Antall elementer i samlingen er forespurt av kommandoen GET_COLLECTION_COUNT() og rapportert av BARCOUNT-variabelen. Serverdato, klokkeslett, verdier av INSTRUMENT- og BARCOUNT-variabler rapporteres av SET_VALUE()-funksjonen i OUTPUT. Denne matrisen er opprettet av CREATE_MAP()-kommandoen. Dataene faller inn i den tilpassede tabellen, som kan sees på bildet nedenfor. verdiene til INSTRUMENT- og BARCOUNT-variablene rapporteres av funksjonen SET_VALUE() i OUTPUT. Denne matrisen er opprettet av CREATE_MAP()-kommandoen. Dataene faller inn i den tilpassede tabellen, som kan sees på bildet nedenfor. verdiene til INSTRUMENT- og BARCOUNT-variablene rapporteres av funksjonen SET_VALUE() i OUTPUT. Denne matrisen er opprettet av CREATE_MAP()-kommandoen. Dataene faller inn i den tilpassede tabellen, som kan sees på bildet nedenfor.
Handelsroboter på QPILE – ferdige løsninger
Bevegelig gjennomsnittlig robot
Demorobot er ikke egnet for ekte handel.
Roboten inkluderer 5 parametere. DATO, TID, PRIS identifikatorverdier er satt til nivå 30. MOVING og TP identifikatorer er satt til null presisjon. Robotkode på glidende gjennomsnitt skrevet under QPILE:
N. Moroshkin posisjonskalkulator
Et program for å beregne nivåene for maksimalt tillatt uttak og målet for lange og korte posisjoner til gjeldende salgs- og kjøpspriser. Nivåene beregnes for 2 verdier av posisjonsinngangsvolumet. Roboten finner det tillatte posisjonsvolumet når den tildeler en stoppordre i ett trinn fra åpningsprisen med beregningen av å åpne en posisjon i retning oppover av stangen. De funnet nivåene legges inn i terminalvinduet, som deretter reflekteres i prisdiagrammet. Transaksjoner er faste for et gitt instrument. Hvis en posisjon åpnes, begynner roboten å beregne sine parametere. Avhengig av endringen i posisjon, justeres de tildelte ordrene.
Volumfilter
En robotportefølje for å beregne det aritmetiske gjennomsnittet av volumet for stearinlys og sammenligne det med gjennomsnittsproduktet med X-koeffisienten. Fungerer riktig med plottede diagrammer i en valgt tidsperiode.
Alternativer grekere
Portefølje for å beregne og vise «grekere» av alternativer. Den skiller seg fra Black-Showers-metoden.
TRIX handelsrobot for QUIK
Programmet er basert på TRIX-indikatoren. Når indikatoren lukkes over nulllinjen, det spesifiserte nivået, inntar roboten den lange posisjonen. Posisjonen er stengt av Take Profit, Stop Loss eller etterfølgende stopp.
M4 forprosessor
Program for å jobbe med QPILE og Lua. Inkluderer arkiver med kjørbare filer, dokumentasjon og DLL-filer med parsing av regulære uttrykk. For å bruke programmet må du pakke ut de kjørbare filene og plassere regexp2 i C:\Windows-banen. Leksjoner på QPILE for QUIK: https://youtu.be/vMTXwDUujpI Installere et skript på QPILE i Quik-terminalen: https://youtu.be/0B7qL8Svh7I En seksjon på github som beskriver bruken av QPILE-algoritmespråket innebygd i QUIK-systemarbeidsstasjon som ligger på lenken – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE er et utdatert språk, men ganske enkelt og tilgjengelig selv for nybegynnere. Handelsroboter og programmer som har bevist seg i lang tid fortsetter å jobbe med det. For mer komplekse oppgaver er det imidlertid bedre å bruke LUA.
0к