Algoritmiese taal QPILE vir programmering handel robots vir QUIK

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

Algoritmiese taal QPILE vir programmering handel robots vir QUIK.
Handelsrobotte kan in ‘n spesifieke taal geskryf word, soortgelyk aan programkode. QPILE is een van hulle, die artikel sal hierdie taal oorweeg, die QPILE- en
LUA-tale vergelyk , en ook voorbeelde van robotte in hierdie taal verskaf.

Algemene inligting oor QPILE

QPILE is ‘n afkorting wat staan ​​vir QUIK Programmable Interface and Logic Environment.

Dit is ‘n reeks opdragte wat deur die QUIK-werkstasie geïnterpreteer word. Dit word hoofsaaklik gebruik om die prys van portefeuljes van sekuriteite te bereken. Die taal word ook gebruik vir:

  • dinamiese herberekening van die prys van kliënte se bates op die makelaar se lessenaar en in hul portefeuljes. In laasgenoemde geval word hul totale prys ook herbereken;
  • ontbrekende aanwysers te vind deur hul eie algoritmes en data vir margeleen te gebruik;
  • die ontwikkeling van die regte handelstrategie.

Die taal beskryf die struktuur van die tabel: die aanstelling van kolomme en rye, formules. In laasgenoemde kan wiskundige bewerkings, veranderlikes, data van ander tabelle vir berekening gebruik word. Die programkode wat vanaf die QUIK-bediener of vanaf die gebruiker se skyf gelaai word, word deur die taaltolk verwerk, wat die waardes in die formules bereken. Die tabelle van een program het een databron, maar die berekeninge word nie gedupliseer nie en beïnvloed nie die doeltreffendheid van die stelsel nie. Wanneer daar met QUIK-tabelle gewerk word, het tabelle op QPILE standaardfunksies. QUIK in die werkplek is toegerus met ‘n QPILE kode ontfouter. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Die taal laat jou toe om nuwe tabelle met ‘n gegewe struktuur te beskryf, selle met sekere waardes uit te lig, velde te bereken gebaseer op wiskundige en logiese uitdrukkings. Die gebruiker sal kennisgewings in die vorm van ‘n klanksein of ‘n teksboodskap ontvang. Tabelle op QPILE kan geredigeer, gedruk, gekopieer, uitgevoer word via ODBC en DDE bediener. Die aanvanklike data is van die QUIK-tabelle:

  • transaksies, insluitend vir uitvoering en onpersoonlik;
  • bestellings, insluitend aftrekorders, vir oor-die-toonbank-transaksies en bestellings – verslae vir ambagte in skikkingstransaksies;
  • “kliënt portefeulje”, “koop/verkoop”
  • data van die deelnemer se posisies deur geld, handelsrekeninge, instrument.

Tabelle gebaseer op QPILE kan nie na ‘n tekslêer gekopieer word via die kontekskieslys en na tegniese ontledingstelsels uitgevoer word nie, en kaarte kan nie op grond daarvan ontwikkel word nie. QPILE-gebaseerde tabelle kan nie gefiltreer of gesorteer word nie.

Werk met ‘n tafel

Om die programkode te laai, moet jy die dienste-kieslys kies, dan QPILE-skrifte. Jy kan ook die kombinasie Ctrl+F11 gebruik. Nadat u op “Voeg” moet klik en die verlangde lêer kies. Dit het ‘n .qpl-uitbreiding en sy naam sal in die Beskikbare Skripte-lys verskyn.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK As daar ‘n fout in die program is, sal die stelsel ‘n kennisgewing in die “Boodskapvenster” maak, wat die naam van die defekte lêer en die lynnommer met die fout sal bevat. Indien geen foute in die lêer gevind is nie, sal die volgende data in die velde aangedui word:

  • tabel naam;
  • aantal kolomme en kliënte;
  • lys van identifiseerders en kliënte;
  • die lys van parameters en die bronkode van die lêer.

Algoritmiese taal QPILE vir programmering handel robots vir QUIK Die “Laai plaaslik af”-knoppie sal jou toelaat om die tabel uit ‘n lêer te kry, en “Laai op na bediener” sal die program na die bediener stuur sodat alle gebruikers toegang daartoe kan kry. Om ‘n tabel te skep, klik Skep tabel. Kies in die “Beskikbare skrifte” die program wat u moet uitvoer, stel die aantal reëls in deur die “Filter van kliënte”, bepaal die vereiste kolomme en hul volgorde.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Onderbreek en hervat die berekening, begin die berekening weer en in ontfoutmodus, stoor die beskrywing in ‘n lêer, demonstreer die formule, en skripparameters is beskikbaar in die kontekskieslys.

QPILE-konstrukte

Datatipes

  • Snaar – snaar.
  • Dubbel is ‘n swaaipuntgetal.
  • Versameling – ‘n versameling.
  • Kaart – ‘n assosiatiewe skikking – ‘n reeks pare wat jou toelaat om inligting per sleutel te kry.

Uitdrukkings

Die rekenkundige bewerkings van optel, aftrek, vermenigvuldiging, deling word toegepas. Die logiese uitdrukkings “en”, “of”, gelyk aan, meer, minder, ongelykhede, voorwaardelike konstruksie “as … dan …” word ook gebruik.

Funksies

Funksies kan oral in die program geleë wees en het verskillende name. In totaal is 18 groepe wiskundige funksies en funksies beskikbaar om die waardes van tabelle en parameters, assosiatiewe skikkings, ‘n lys tabelle en ander take te verkry. Graad een:

  1. Wiskundige funksies wat jou toelaat om die waarde van die sinus, cosinus, tangens, kotangens van die argument terug te gee, die eksponent van die argument te bereken, ‘n ewekansige getal te genereer, ens.
  2. Algemene opdragte : NEW_GLOBAL om ‘n globale veranderlike te inisialiseer en MESSAGE om boodskappe oop te maak.

Funksies om mee te werk:

  • Versamelings van voorwerpe (Versameling) . Hulle laat jou toe om ‘n nuwe versameling te skep, die vereiste aantal elemente terug te gee, die verlangde waardes te vervang of in te voeg.
  • Assosiatiewe Skikkings (MAP) . Help om die skikking te skep en te bestuur.
  • Lêers – werk met tekslêers, hou ‘n log-log van die program in stand. Die lêernaam kan die pad daarheen bevat.
  • Snare .
  • Grafieke . Funksies GET_CANDLE om toegang tot kersdata te verkry en GET_CANDLE EX om ‘n assosiatiewe skikking terug te gee.
  • Aansoeke . Skep bestellings en stuur dit na die handelstelsel.
  • Tags . Hul konstruksie en installasie op die grafiek. Byvoeging, verwydering van een of alle etikette, kry en stel parameters vir ‘n spesifieke etiket.

Daar is ook funksies vir:

  1. Vir toegang tot rye arbitrêre QUIK-tabelle en lyste van beskikbare parameters . Toegang tot werkplektabeldata. Dit sluit GET_ITEM in om die KAART terug te gee en GET_NUMBER_OF om die aantal inskrywings terug te gee.
  2. Om met ‘n programmeerbare tabel te werk . Hierdie opdragte werk op die EIE tabel. Dit is leesbaar deur die standaardfunksies van die vorige paragraaf en deur hierdie funksies. Hierdie groep bevat opdragte om ‘n ry met ‘n indeks by te voeg, te wysig en uit te vee, en die EIE tabel heeltemal skoon te maak.

Om waardes te kry, gebruik:

  1. Tabelle van huidige ambagte . Kry uitruilinligtingparameters deur GET_PARAM (_EX) opdragte te gebruik.
  2. Haal vensters aan . Verkryging van die waardes van instrumentaanhalings.
  3. Tabelle van posisies volgens instrumente en geld . Verkry data op ‘n kliënt, maatskappy, instrument, depo-rekening volgens kode.

Diensfunksies – die terugkeer van die datum van die huidige handelsessie, assosiatiewe reekse, huidige datum en tyd, bepaling van die verbindingstoestand, onderbreking van die berekeningsmodus.

Ontfoutingsprogramme

Stap-vir-stap beheer oor die werking van die program word uitgevoer in die “Debug” venster. Dit word oopgemaak vanaf die kontekskieslys “Begin berekening in ontfoutmodus”. Dit kan ook oopgemaak word met die breakpoint()-opdrag, en die programlyn sal in rooi uitgelig word. Die venster bevat velde met programkode en veranderlike waardes. Aan die onderkant van die venster is daar knoppies “Volgende stap”, “Gaan voort met uitvoering”, “Stop berekening”. Deur F5 te druk, sal die uitvoering van die program voortgaan, die kombinasie Shift + F5 sal ophou ontfout, die F10-sleutel sal na die volgende reël lei.

QPILE of LUA?

LUA is ‘n nuwe programmeertaal vir die skep van handelsrobotte. Soos QPILE, word dit in die QUIK-terminaal geïmplementeer. https://articles.opexflow.com/programming/lua.htm ‘n Webwerf wat toegewy is aan die ontwikkeling van handelsrobotte vir verhandeling toon die voordele van die LUA-taal bo QPILE. Dit kan dus funksioneer as ‘n nie-saamgestelde skrif en greepkode, toegerus met ontwikkelaarnutsgoed en objekgeoriënteerde programmeringsmeganismes. Voorwerpe wat in ander programmeertale geskryf is, kan aan LUA-programme gekoppel word. LUA bied 8 datatipes, insluitend metatables. Die LUA-taal is multi-draad, vinnig, en transaksies en terminale gebeure is asynchronies. LUA is meer algemeen as QPILE, en baie uitbreidings is daarvoor geskryf.

Die QPILE-taal is nou opgeskort. Kenners op die forums beveel aan om LUA te gebruik. Alhoewel nuttige en effektiewe programme steeds gebruik word.

Die QPILE-taal is egter eenvoudig in vergelyking met LUA, so as jy geen ervaring in programmering het nie, is dit beter om QPILE te kies. In hierdie taal kan jy ‘n eenvoudige robot skryf as jy nie komplekse berekeninge hoef uit te voer nie.

Hoe om ‘n handelsrobot op QPILE te skep?

Om ‘n handelsadviseur te skep, benodig u die volgende programme:

  1. DIT Quik.
  2. Notepad++ kode-redigeerder.
  3. Gids vir QPILE.
  4. XML-inprop vir kode-opsporing in Notepad++.

Laai hierdie programme af en installeer dit. Aktiveer die taalsintaksis deur userDefineLang.xml in die pad C:\Users\User\ AppData\Roaming\Notepad++\ te plaas
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Kom ons skep eers die volgende handelstrategie. Die skrif moet Hi en Low vir die laaste paar kerse elke minuut bereken, kyk na die huidige prys van die instrument. ‘n Posisie word in die vereiste rigting geopen as die prys van die instrument die maksimum of minimum waarde vir die tydperk bereik. Wanneer ‘n sein vir kort ontvang word, word die lang posisie outomaties gesluit. Die robot gebruik die GAZP-instrument, die tydraamwerk is gestel op 1 min. Die hi-lae meetdiepte is op 5 kerse gestel. Om Long in te voer, word ‘n reël gestel en die snypunt van die huidige prys van die maksimum waarde vir die tydperk. Die robot sal Kort betree as die huidige prys die minimum waarde vir hierdie 5 kerse oorskry. Skryf ‘n blok kode in Notepad++ met basiese instellings en bedienerdatum en -tyd. Hierdie kode word in die prentjie hieronder getoon.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Die eerste 4 reëls kode vorm die programopskrif. Tussen reël 6 en 44 is die liggaam van die program, wat die inhoud van die robot bevat. Reëls 7 – 12 bevat gebruikersinstellings, wat die kodes van die instrument, groep en kliënt, die rekeningnommer op die MICEX insluit. Hierdie waardes verander nie tydens programuitvoering nie. Reëls 13 – 16 is die beginwaardes van die veranderlikes. Hulle sal teruggestel word na nul op elke iterasie verby. Reëls 17 – 21 bevat ‘n aanduiding om die bediener se datum en tyd te gebruik. Hierdie data word na die DATETIME-funksie oorgedra en na teksformaat omgeskakel. Reëls 22 – 29 stuur die ontvangde data na die tabel. Die kode moet gestoor word en die qpl-uitbreiding moet gespesifiseer word.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Maak die program in QUIK oop deur Ctrl+F10 te druk en die gegenereerde qpl-lêer te kies. Gebruik die Ctrl+F11-kombinasie om die “Werk met portefeuljes”-venster oop te maak en stel die portefeuljeberekeningsperiode op 5 minute. Druk Ctrl+F12 om die kolomme te stel om in die tabel te vertoon. Die prent toon die resultaat van die werk van die robot.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Kom ons voeg nog ‘n paar funksies en voorwaardes by ons program.
Die “Gebruikersinstellings”-blok word aangevul met die AANTAL- en INTERVAL-veranderlikes, wat gebruik sal word in die funksie om die laaste N stawe te verkry. Die DATETIME-funksie stel die bedienerdatum en -tyd, en die huidige datum- en tydfunksies CURDATE en CURTIME word daaruit geroep. Die huidige tyd word omgeskakel na ‘n nommer op reël 24. Reël 26 stel die tyd vir die algoritme om van 10:00:01 tot 18:40:00 UTC te loop.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK
Algoritmiese taal QPILE vir programmering handel robots vir QUIK
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Algoritmiese taal QPILE vir programmering handel robots vir QUIK Meestal word aanwysers, ossillators, statistiese berekeninge bereken deur die laaste N kerse van die grafiek. QPILE het nie ‘n funksie om die aantal kerse N periodes gelede as sodanig in te samel nie, maar daar is ‘n GET_CANDLE-funksie wat toegang tot die kerse op die grafiek verkry volgens datum en tyd in teksformaat. Ons kode bevat die funksie om die laaste N bars OHLC() te kry. Dit skep ‘n versameling met die parameters van die laaste kerse geneste in die VERSAMELING lys. Die program kontroleer die INTERVAL-waarde, en as dit nie binne die reeks 0…60 val nie, word ‘n boodskap vertoon dat die waarde nie ooreenstem met die toegelate reeks nie. ‘n MAP-versameling met kerse word in reël 88 geskep. ‘n VIR-lus wat die grafiek na die vereiste diepte poll met die INTERVAL-stap van die nuwe na die ou kers. In reël 90, nadat die siklus verklaar is, gaan die robot ‘n interval terug. Wanneer jy ‘n kers met GET_CANDLE kry, plaas dit in die BARLIST-versameling deur die INSERT_COLLECTION_TEAM-funksie te gebruik. As gevolg van die werking van die OHLC()-opdrag, word BARLIST aangevul met die laaste kerse van die instrumentkaart in die bedrag van NUMBER. Die aantal elemente in die versameling word versoek deur die GET_COLLECTION_COUNT() opdrag en gerapporteer deur die BARCOUNT veranderlike. Bediener datum, tyd, waardes van INSTRUMENT en BARCOUNT veranderlikes word gerapporteer deur SET_VALUE() funksie in OUTPUT. Hierdie skikking word geskep deur die CREATE_MAP() opdrag. Die data val in die pasgemaakte tabel, wat in die foto hieronder gesien kan word. die waardes van die INSTRUMENT- en BARCOUNT-veranderlikes word gerapporteer deur die SET_VALUE()-funksie in OUTPUT. Hierdie skikking word geskep deur die CREATE_MAP() opdrag. Die data val in die pasgemaakte tabel, wat in die foto hieronder gesien kan word. die waardes van die INSTRUMENT- en BARCOUNT-veranderlikes word gerapporteer deur die SET_VALUE()-funksie in OUTPUT. Hierdie skikking word geskep deur die CREATE_MAP() opdrag. Die data val in die pasgemaakte tabel, wat in die foto hieronder gesien kan word.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK

Trading robots op QPILE – klaargemaakte oplossings

Bewegende gemiddelde robot

Demo-robot nie geskik vir regte handel nie.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK Die robot bevat 5 parameters. DATUM, TYD, PRYS identifiseerderwaardes is op vlak 30 gestel. MOVING en TP identifiseerders is op nul akkuraatheid gestel. Robotkode op bewegende gemiddelde geskryf onder QPILE: [galerykolomme=”5″ ids=”14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]

N. Moroshkin posisie sakrekenaar

‘n Program vir die berekening van die vlakke van die maksimum toelaatbare onttrekking en die teiken vir lang en kort posisies teen huidige vraag- en bodpryse. Die vlakke word bereken vir 2 waardes van die posisie-invoervolume. Die robot vind die toelaatbare posisievolume wanneer ‘n aftrekorder in een stap vanaf die openingsprys toegewys word met die berekening van die opening van ‘n posisie in die rigting van die kroeggroei. Die gevind vlakke word in die terminale venster ingevoer, wat vervolgens in die pryskaart weerspieël word. Transaksies is vasgestel vir ‘n gegewe instrument. As ‘n posisie oopgemaak word, begin die robot sy parameters bereken. Afhangende van die verandering in posisie, word die toegekende bestellings aangepas.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK
Algoritmiese taal QPILE vir programmering handel robots vir QUIK

Volume filter

Portefeulje-robot vir die berekening van die rekenkundige gemiddelde van die volume vir kerse en vergelyk dit met die gemiddelde produk deur die X-koëffisiënt. Werk korrek met geplotte grafieke in die geselekteerde tydperk.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK

Opsies Grieke

Portefeulje vir die berekening en vertoon van “Grieke” van opsies. Dit verskil van die Black-Showers-metode.
Algoritmiese taal QPILE vir programmering handel robots vir QUIK

TRIX handel robot vir QUIK

Die program is gebaseer op die TRIX-aanwyser. Wanneer die aanwyser bo die nullyn sluit, die gespesifiseerde vlak, neem die robot die Lang posisie. Die posisie word gesluit deur Take Profit, Stop Loss of sleep stop.

M4 voorverwerker

Program om met QPILE en Lua te werk. Sluit argiewe met uitvoerbare lêers, dokumentasie en DLL-lêers met gereelde uitdrukking-ontleding in. Om die program te gebruik, moet jy die uitvoerbare lêers uitpak en regexp2 in die C:\Windows-pad plaas. Lesse oor QPILE vir QUIK: https://youtu.be/vMTXwDUujpI Installering van ‘n skrip op QPILE in die Quik-terminaal: https://youtu.be/0B7qL8Svh7I ‘n Afdeling op github wat die gebruik van die QPILE algoritmiese taal beskryf wat in die QUIK stelsel werkstasie geleë by die skakel – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE is ‘n verouderde taal, maar redelik eenvoudig en toeganklik selfs vir beginner handelaars. Handelsrobotte en programme wat hulself al lank bewys het, gaan voort om daaraan te werk. Vir meer komplekse take is dit egter beter om LUA te gebruik.

info
Rate author
Add a comment

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

    Reply