Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK

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

Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK.
Roboti za trgovanje mogu biti napisani na određenom jeziku, sličnom programskom kodu. QPILE je jedan od njih, članak će razmotriti ovaj jezik, usporediti QPILE i
LUA jezike , a također će dati primjere robota na ovom jeziku.

Opće informacije o QPILE-u

QPILE je kratica koja označava QUIK programabilno sučelje i logičko okruženje.

Ovo je niz naredbi koje tumači radna stanica QUIK. Uglavnom se koristi za izračun cijene portfelja vrijednosnih papira. Jezik se također koristi za:

  • dinamičko preračunavanje cijene imovine klijenata na radnoj površini brokera iu njihovim portfeljima. U potonjem slučaju ponovno se izračunava i njihova ukupna cijena;
  • pronalaženje pokazatelja koji nedostaju korištenjem vlastitih algoritama i podataka za margin lending;
  • razvoj prave strategije trgovanja.

Jezik opisuje strukturu tablice: imenovanje stupaca i redaka, formule. U potonjem se za izračun mogu koristiti matematičke operacije, varijable, podaci iz drugih tablica. Programski kod učitan s QUIK poslužitelja ili s diska korisnika obrađuje jezični interpreter koji izračunava vrijednosti u formulama. Tablice jednog programa imaju jedan izvor podataka, ali se izračuni ne dupliciraju i ne utječu na učinkovitost sustava. Kada radite s QUIK tablicama, tablice na QPILE-u imaju standardne funkcije. QUIK na radnom mjestu opremljen je QPILE debuggerom koda. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Jezik vam omogućuje da opišete nove tablice sa zadanom strukturom, označite ćelije s određenim vrijednostima, izračunate polja na temelju matematičkih i logičkih izraza. Korisnik će primati obavijesti u obliku zvučnog signala ili SMS poruke. Tablice na QPILE-u se mogu uređivati, ispisivati, kopirati, izvoziti putem ODBC i DDE poslužitelja. Početni podaci su iz QUIK tablica:

  • transakcije, uključujući ovršne i neosobne;
  • nalozi, uključujući stop naloge, za izvanberzansko trgovanje i nalozi – izvješća za trgovanje u poslovima namire;
  • “portfelj klijenata”, “kupi/prodaj”
  • podaci o pozicijama sudionika prema novcu, trgovačkim računima, instrumentima.

Tablice temeljene na QPILE-u nije moguće kopirati u tekstualnu datoteku putem kontekstnog izbornika i izvesti u sustave tehničke analize, a na temelju njih se ne mogu razvijati grafikoni. Tablice temeljene na QPILE-u ne mogu se filtrirati ili sortirati.

Rad sa stolom

Za učitavanje programskog koda potrebno je odabrati servisni izbornik, zatim QPILE skripte. Također možete koristiti kombinaciju Ctrl+F11. Nakon što trebate kliknuti “Dodaj” i odabrati željenu datoteku. Ima ekstenziju .qpl i njen će se naziv pojaviti na popisu dostupnih skripti.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Ako postoji greška u programu, sustav će napraviti obavijest u “Prozoru s porukama”, koji će sadržavati naziv neispravne datoteke i broj retka s greškom. Ako u datoteci nisu pronađene greške, u poljima će biti naznačeni sljedeći podaci:

  • naziv tablice;
  • broj stupaca i klijenata;
  • popis identifikatora i klijenata;
  • popis parametara i izvorni kod datoteke.

Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Gumb “Download locally” omogućit će vam preuzimanje tablice iz datoteke, a “Upload to server” će poslati program na poslužitelj tako da mu svi korisnici mogu pristupiti. Da biste izradili tablicu, kliknite Stvori tablicu. U “Dostupnim skriptama” odaberite program koji trebate izvršiti, postavite broj redaka kroz “Filter klijenata”, odredite potrebne stupce i njihov redoslijed.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Pauziranje i nastavak izračuna, ponovno pokretanje izračuna iu načinu otklanjanja pogrešaka, spremanje opisa u datoteku, demonstracija formule i parametri skripte dostupni su u kontekstnom izborniku.

QPILE konstrukcije

Vrste podataka

  • Žica – struna.
  • Double je broj s pomičnim zarezom.
  • Zbirka – zbirka.
  • Karta – asocijativni niz – niz parova koji vam omogućuje da dobijete informacije po ključu.

Izrazi

Primjenjuju se računske operacije zbrajanja, oduzimanja, množenja, dijeljenja. Također se koriste logički izrazi “i”, “ili”, jednako, više, manje, nejednakosti, uvjetna konstrukcija “ako … onda …”.

Funkcije

Funkcije se mogu nalaziti bilo gdje u programu i imati različite nazive. Ukupno je dostupno 18 grupa matematičkih funkcija i funkcija za dobivanje vrijednosti tablica i parametara, asocijativnih nizova, popisa tablica i drugih zadataka. Prvi razred:

  1. Matematičke funkcije koje vam omogućuju da vratite vrijednost sinusa, kosinusa, tangensa, kotangensa argumenta, izračunate eksponent argumenta, generirate slučajni broj itd.
  2. Opće naredbe : NEW_GLOBAL za inicijalizaciju globalne varijable i MESSAGE za otvaranje poruka.

Funkcije za rad:

  • Zbirke predmeta (Zbirka) . Omogućuju vam stvaranje nove kolekcije, vraćanje potrebnog broja elemenata, zamjenu ili umetanje željenih vrijednosti.
  • Asocijativni nizovi (MAP) . Pomoć pri stvaranju i upravljanju nizom.
  • Datoteke – rad s tekstualnim datotekama, održavanje dnevnika programa. Naziv datoteke može sadržavati put do nje.
  • Žice .
  • Grafikoni . Funkcije GET_CANDLE za pristup podacima svijeće i GET_CANDLE EX za vraćanje asocijativnog niza.
  • Prijave . Kreiranje naloga i njihovo slanje u trgovinski sustav.
  • oznake . Njihova konstrukcija i ugradnja na karti. Dodavanje, brisanje jedne ili svih oznaka, dobivanje i postavljanje parametara za određenu oznaku.

Također postoje funkcije za:

  1. Za pristup redovima proizvoljnih QUIK tablica i listama dostupnih parametara . Pristup podacima tablice radnog mjesta. To uključuje GET_ITEM za vraćanje MAP-a i GET_NUMBER_OF za vraćanje broja unosa.
  2. Za rad s programabilnim stolom . Ove naredbe rade na VLASTITOJ tablici. Čitljiv je standardnim funkcijama iz prethodnog paragrafa i ovim funkcijama. Ova grupa uključuje naredbe za dodavanje, modificiranje i brisanje retka s indeksom te potpuno brisanje VLASTITE tablice.

Za dobivanje vrijednosti koristite:

  1. Tablice tekućih obrta . Dohvaćanje parametara informacija o razmjeni pomoću naredbi GET_PARAM (_EX).
  2. Prozori citata . Dobivanje vrijednosti kotacija instrumenta.
  3. Tablice pozicija po instrumentima i novcu . Dobivanje podataka o klijentu, firmi, instrumentu, depo računu po šifri.

Servisne funkcije – vraćanje datuma trenutne sesije trgovanja, asocijativnog niza, trenutnog datuma i vremena, određivanje stanja veze, prekid načina izračuna.

Programi za otklanjanje pogrešaka

Korak po korak kontrola nad radom programa provodi se u prozoru “Debug”. Otvara se iz kontekstnog izbornika “Pokreni izračun u načinu otklanjanja pogrešaka”. Može se otvoriti i naredbom breakpoint(), a linija programa bit će označena crvenom bojom. Prozor sadrži polja s programskim kodom i vrijednostima varijabli. Na dnu prozora nalaze se gumbi “Sljedeći korak”, “Nastavi izvršenje”, “Zaustavi izračun”. Pritiskom na F5 nastavit ćete s izvođenjem programa, kombinacijom Shift + F5 zaustavit ćete otklanjanje pogrešaka, tipkom F10 preusmjerit ćete na sljedeći redak.

QPILE ili LUA?

LUA je novi programski jezik za stvaranje robota za trgovanje. Kao i QPILE, implementiran je u QUIK terminalu. https://articles.opexflow.com/programming/lua.htm Stranica posvećena razvoju trgovačkih robota za trgovanje pokazuje prednosti LUA jezika u odnosu na QPILE. Dakle, može funkcionirati kao neprevedena skripta i bajt kod, opremljen alatima za razvojne programere i objektno orijentiranim programskim mehanizmima. Objekti napisani u drugim programskim jezicima mogu se povezati s LUA programima. LUA nudi 8 vrsta podataka, uključujući metatablice. LUA jezik je multi-threaded, brz, a transakcije i terminalski događaji su asinkroni. LUA je češći od QPILE-a i za njega su napisana mnoga proširenja.

Jezik QPILE sada je zastario. Stručnjaci na forumima preporučuju korištenje LUA. Iako se korisni i učinkoviti programi još uvijek koriste.

Međutim, QPILE jezik je jednostavan u usporedbi s LUA, pa ako nemate iskustva u programiranju, bolje je odabrati QPILE. Na ovom jeziku možete napisati jednostavnog robota ako ne morate izvoditi složene izračune.

Kako napraviti robota za trgovanje na QPILE-u?

Za izradu savjetnika za trgovanje trebat će vam sljedeći programi:

  1. SVOJ Quik.
  2. Notepad++ uređivač koda.
  3. Vodič za QPILE.
  4. XML dodatak za detekciju koda u Notepad++.

Preuzmite i instalirajte ove programe. Omogućite sintaksu jezika postavljanjem userDefineLang.xml na stazu C:\Users\User\ AppData\Roaming\Notepad++\
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Prvo, kreirajmo sljedeću strategiju trgovanja. Skripta bi trebala izračunati Hi i Low za zadnjih nekoliko svijeća svake minute, provjerite trenutnu cijenu instrumenta. Pozicija se otvara u traženom smjeru ako cijena instrumenta dosegne maksimalnu ili minimalnu vrijednost za razdoblje. Kada se primi signal za kratku poziciju, duga pozicija se automatski zatvara. Robot koristi alat GAZP, vremenski okvir je postavljen na 1 min. Hi-low dubina mjerenja postavljena je na 5 svijeća. Za ulazak u Long, postavlja se pravilo i sjecište trenutne cijene maksimalne vrijednosti za razdoblje. Robot će ući u Short ako trenutna cijena prijeđe minimalnu vrijednost za ovih 5 svijeća. Napišite blok koda u Notepad++ s osnovnim postavkama te datumom i vremenom poslužitelja. Ovaj kod je prikazan na slici ispod.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Prva 4 retka koda čine zaglavlje programa. Između redaka 6 i 44 nalazi se tijelo programa koje sadrži sadržaj robota. Redovi 7 – 12 sadrže korisničke postavke, koje uključuju kodove instrumenta, grupe i klijenta, broj računa na MICEX. Ove se vrijednosti ne mijenjaju tijekom izvođenja programa. Linije 13 – 16 su početne vrijednosti varijabli. Oni će se vratiti na nulu pri svakom prolazu iteracije. Redovi 17 – 21 sadrže naznaku korištenja datuma i vremena poslužitelja. Ovi se podaci prosljeđuju funkciji DATETIME i pretvaraju u tekstualni format. Linije 22 – 29 šalju primljene podatke u tablicu. Kod mora biti spremljen i qpl ekstenzija mora biti navedena.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Otvorite program u QUIK-u pritiskom na Ctrl+F10 i odabirom generirane qpl datoteke. Kombinacijom Ctrl+F11 otvorite prozor “Rad s portfeljima” i postavite razdoblje izračuna portfelja na 5 minuta. Pritisnite Ctrl+F12 da postavite stupce za prikaz u tablici. Slika prikazuje rezultat rada robota.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Dodajmo još nekoliko funkcija i uvjeta našem programu.
Blok “Korisničke postavke” dopunjen je varijablama BROJ i INTERVAL, koje će se koristiti u funkciji dobivanja zadnjih N barova. Funkcija DATETIME postavlja datum i vrijeme poslužitelja, a iz nje se pozivaju funkcije trenutnog datuma i vremena CURDATE i CURTIME. Trenutno vrijeme se pretvara u broj u liniji 24. Linija 26 postavlja vrijeme za pokretanje algoritma od 10:00:01 do 18:40:00 UTC.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Najčešće se indikatori, oscilatori, statistički izračuni izračunavaju pomoću zadnjih N svijeća grafikona. QPILE nema funkciju za prikupljanje broja svijeća prije N razdoblja kao takvu, ali postoji funkcija GET_CANDLE koja pristupa svijećama na grafikonu prema datumu i vremenu u tekstualnom formatu. Naš kod sadrži funkciju za dobivanje zadnjih N crtica OHLC(). Stvara zbirku s parametrima zadnjih svijeća ugniježđenih na popisu COLLECTION. Program provjerava vrijednost INTERVAL-a i ako ona nije unutar raspona 0…60, prikazuje se poruka da vrijednost ne odgovara dopuštenom rasponu. Zbirka MAP sa svijećama kreirana je u retku 88. FOR petlja koja ispituje grafikon do potrebne dubine s INTERVAL korakom od nove do stare svijeće. U retku 90, nakon što je ciklus deklariran, robot se vraća interval unazad. Kada dobijete svijeću s GET_CANDLE, smjestite ga u kolekciju BARLIST pomoću funkcije INSERT_COLLECTION_TEAM. Kao rezultat rada naredbe OHLC(), BARLIST se nadopunjuje posljednjim svijećama s grafikona instrumenata u iznosu od BROJ. Broj elemenata u kolekciji zahtijeva naredba GET_COLLECTION_COUNT(), a prijavljuje varijabla BARCOUNT. Datum poslužitelja, vrijeme, vrijednosti varijabli INSTRUMENT i BARCOUNT prijavljuju funkcija SET_VALUE() u OUTPUT. Ovaj niz je kreiran naredbom CREATE_MAP(). Podaci padaju u prilagođenu tablicu, što se može vidjeti na slici ispod. vrijednosti varijabli INSTRUMENT i BARCOUNT prijavljene su pomoću funkcije SET_VALUE() u OUTPUT. Ovaj niz je kreiran naredbom CREATE_MAP(). Podaci padaju u prilagođenu tablicu, što se može vidjeti na slici ispod. vrijednosti varijabli INSTRUMENT i BARCOUNT prijavljene su pomoću funkcije SET_VALUE() u OUTPUT. Ovaj niz je kreiran naredbom CREATE_MAP(). Podaci padaju u prilagođenu tablicu, što se može vidjeti na slici ispod.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK

Roboti za trgovanje na QPILE-u – gotova rješenja

Robot pokretnog prosjeka

Demo robot nije prikladan za stvarno trgovanje.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK Robot uključuje 5 parametara. Vrijednosti identifikatora DATE, TIME, PRICE postavljene su na razinu 30. Identifikatori MOVING i TP postavljeni su na nultu preciznost. Kod robota na pokretnom prosjeku napisan pod QPILE:

Kalkulator položaja N. Moroshkin

Program za izračun razina maksimalno dopuštenog povlačenja i cilja za duge i kratke pozicije po trenutnim cijenama traženja i ponude. Razine se izračunavaju za 2 vrijednosti volumena unosa pozicije. Robot pronalazi dopušteni volumen pozicije prilikom dodjele stop naloga u jednom koraku od cijene otvaranja uz izračun otvaranja pozicije u smjeru rasta trake. Pronađene razine unose se u prozor terminala, što se naknadno odražava na grafikonu cijena. Transakcije su fiksne za određeni instrument. Ako je pozicija otvorena, robot počinje izračunavati njene parametre. Ovisno o promjeni pozicije, dodijeljeni nalozi se prilagođavaju.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK

Filter za volumen

Portfolio robot za izračun aritmetičke sredine volumena za svijeće i usporedbu s prosječnim proizvodom koeficijentom X. Radi ispravno s iscrtanim grafikonima u odabranom vremenskom razdoblju.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK

Opcije Grci

Portfolio za izračun i prikaz “grčkih” opcija. Razlikuje se od metode Black-Showers.
Algoritamski jezik QPILE za programiranje trgovačkih robota za QUIK

TRIX trgovački robot za QUIK

Program se temelji na TRIX indikatoru. Kada se indikator zatvori iznad nulte linije, navedene razine, robot zauzima Dugu poziciju. Pozicija se zatvara Take Profitom, Stop Lossom ili trailing stopom.

M4 pretprocesor

Program za rad s QPILE i Lua. Uključuje arhive s izvršnim datotekama, dokumentaciju i DLL datoteke s raščlanjivanjem regularnih izraza. Da biste koristili program, trebate raspakirati izvršne datoteke i smjestiti regexp2 u C:\Windows putanju. Lekcije o QPILE za QUIK: https://youtu.be/vMTXwDUujpI Instaliranje skripte na QPILE u Quik terminalu: https://youtu.be/0B7qL8Svh7I Odjeljak na githubu koji opisuje upotrebu QPILE algoritamskog jezika ugrađenog u Radna stanica sustava QUIK nalazi se na poveznici – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE je zastarjeli jezik, ali prilično jednostavan i dostupan čak i trgovcima početnicima. Trgovački roboti i programi koji su se već dugo dokazali nastavljaju raditi na tome. Međutim, za složenije zadatke bolje je koristiti LUA.

info
Rate author
Add a comment

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

    Reply