Algoritminė kalba QPILE skirta programuoti prekybos robotus QUIK.
Prekybos robotai gali būti parašyti tam tikra kalba, panašiai kaip programos kodas. QPILE yra vienas iš jų, straipsnyje bus nagrinėjama ši kalba, palyginamos QPILE ir
LUA kalbos , taip pat pateikiami robotų pavyzdžiai šia kalba.
- Bendra informacija apie QPILE
- Darbas su stalu
- QPILE konstrukcijos
- Duomenų tipai
- Išraiškos
- Funkcijos
- Derinimo programos
- QPILE ar LUA?
- Kaip sukurti prekybos robotą QPILE?
- Prekybos robotai QPILE – paruošti sprendimai
- Judantis vidutinis robotas
- N. Moroškino padėties skaičiuoklė
- Tūrio filtras
- Pasirinkimai graikai
- TRIX prekybos robotas QUIK
- M4 pirminis procesorius
Bendra informacija apie QPILE
QPILE yra santrumpa, reiškianti QUIK programuojamą sąsają ir loginę aplinką.
Tai yra QUIK darbo vietos interpretuojamų komandų serija. Jis daugiausia naudojamas skaičiuojant vertybinių popierių portfelių kainą. Kalba taip pat naudojama:
- dinamiškas klientų turto kainos perskaičiavimas brokerio darbalaukyje ir jų portfeliuose. Pastaruoju atveju perskaičiuojama ir jų bendra kaina;
- trūkstamų rodiklių radimas naudojant savo algoritmus ir maržos skolinimo duomenis;
- sukurti tinkamą prekybos strategiją.
Kalba aprašo lentelės struktūrą: stulpelių ir eilučių paskyrimą, formules. Pastarojoje skaičiavimui gali būti naudojami matematiniai veiksmai, kintamieji, kitų lentelių duomenys. Programos kodas, įkeltas iš QUIK serverio arba iš vartotojo disko, yra apdorojamas kalbos vertėjo, kuris apskaičiuoja reikšmes formulėse. Vienos programos lentelės turi vieną duomenų šaltinį, tačiau skaičiavimai nesidubliuoja ir neturi įtakos sistemos efektyvumui. Dirbant su QUIK lentelėmis, QPILE lentelės turi standartines funkcijas. QUIK darbo vietoje aprūpintas QPILE kodo derintuvu. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Kalba leidžia apibūdinti naujas lenteles su nurodyta struktūra, paryškinti langelius su tam tikromis reikšmėmis, apskaičiuoti laukus pagal matematines ir logines išraiškas. Vartotojas gaus pranešimus garso signalu arba tekstiniu pranešimu. QPILE lenteles galima redaguoti, spausdinti, kopijuoti, eksportuoti per ODBC ir DDE serverį. Pradiniai duomenys yra iš QUIK lentelių:
- sandoriai, įskaitant vykdymo ir neasmeninius;
- pavedimai, įskaitant sustabdymo pavedimus, nebiržiniams sandoriams ir pavedimams – atsiskaitymo sandorių sandorių ataskaitos;
- „klientų portfelis“, „pirkti/parduoti“
- duomenys iš dalyvio pozicijų pagal pinigus, prekybos sąskaitas, priemones.
Lentelių, pagrįstų QPILE, negalima nukopijuoti į tekstinį failą per kontekstinį meniu ir eksportuoti į techninės analizės sistemas, o pagal jas negalima kurti diagramų. QPILE pagrįstų lentelių negalima filtruoti ar rūšiuoti.
Darbas su stalu
Norėdami įkelti programos kodą, turite pasirinkti paslaugų meniu, tada QPILE scenarijus. Taip pat galite naudoti kombinaciją Ctrl + F11. Po to turėsite spustelėti „Pridėti“ ir pasirinkti norimą failą. Jis turi .qpl plėtinį ir jo pavadinimas bus rodomas sąraše Galimi scenarijai.
Jei programoje yra klaida, sistema „Pranešimų lange“ pateiks pranešimą, kuriame bus nurodytas sugedusio failo pavadinimas ir eilutės su klaida numeris. Jei faile gedimų nerasta, laukeliuose bus nurodyti šie duomenys:
- lentelės pavadinimas;
- stulpelių ir klientų skaičius;
- identifikatorių ir klientų sąrašas;
- parametrų sąrašas ir failo šaltinio kodas.
Mygtukas „Atsisiųsti lokaliai“ leis jums gauti lentelę iš failo, o „Įkelti į serverį“ atsiųs programą į serverį, kad visi vartotojai galėtų ją pasiekti. Norėdami sukurti lentelę, spustelėkite Kurti lentelę. Skiltyje „Galimi scenarijai“ pasirinkite programą, kurią norite vykdyti, per „Klientų filtrą“ nustatykite eilučių skaičių, nustatykite reikiamus stulpelius ir jų seką.
Skaičiavimo pristabdymas ir atnaujinimas, skaičiavimo paleidimas iš naujo ir derinimo režimu, aprašymo įrašymas į failą, formulės demonstravimas ir scenarijaus parametrai pasiekiami kontekstiniame meniu.
QPILE konstrukcijos
Duomenų tipai
- Styga – styga.
- Dvigubas yra slankaus kablelio skaičius.
- Kolekcija – kolekcija.
- Žemėlapis – asociatyvinis masyvas – porų seka, leidžianti gauti informaciją pagal raktą.
Išraiškos
Taikomos sudėjimo, atimties, daugybos, dalybos aritmetinės operacijos. Taip pat vartojami loginiai posakiai „ir“, „arba“, lygu, daugiau, mažiau, nelygybės, sąlyginė konstrukcija „jei … tada …“.
Funkcijos
Funkcijos gali būti bet kurioje programos vietoje ir turėti skirtingus pavadinimus. Iš viso yra 18 matematinių funkcijų ir funkcijų grupių, leidžiančių gauti lentelių ir parametrų reikšmes, asociatyvinius masyvus, lentelių sąrašą ir kitas užduotis. Pirma klasė:
- Matematinės funkcijos , leidžiančios grąžinti argumento sinuso, kosinuso, liestinės, kotangento reikšmę, apskaičiuoti argumento eksponentą, generuoti atsitiktinį skaičių ir pan.
- Bendrosios komandos : NEW_GLOBAL, kad inicijuotų visuotinį kintamąjį, ir MESSAGE, kad atidarytumėte pranešimus.
Funkcijos, su kuriomis reikia dirbti:
- Daiktų kolekcijos (Kolekcija) . Jie leidžia sukurti naują kolekciją, grąžinti reikiamą elementų skaičių, pakeisti arba įterpti norimas reikšmes.
- Asociatyviniai masyvai (MAP) . Padėkite kurti ir tvarkyti masyvą.
- Failai – darbas su tekstiniais failais, programos žurnalo tvarkymas. Failo pavadinime gali būti nurodytas kelias į jį.
- Stygos .
- Grafikai . Funkcijos GET_CANDLE, kad pasiektų žvakių duomenis, ir GET_CANDLE EX, kad grąžintų asociatyvų masyvą.
- Programos . Pavedimų sudarymas ir siuntimas į prekybos sistemą.
- Žymos . Jų konstrukcija ir montavimas diagramoje. Vienos ar visų etikečių pridėjimas, trynimas, konkrečios etiketės parametrų gavimas ir nustatymas.
Taip pat yra funkcijų, skirtų:
- Norėdami pasiekti savavališkų QUIK lentelių eilutes ir galimų parametrų sąrašus . Prieiga prie darbo vietos lentelės duomenų. Tai apima GET_ITEM, kad grąžintumėte MAP, ir GET_NUMBER_OF, kad būtų grąžintas įrašų skaičius.
- Darbas su programuojamu stalu . Šios komandos veikia SAVO lentelėje. Jį perskaito standartinės ankstesnės pastraipos funkcijos ir šios funkcijos. Ši grupė apima komandas, skirtas pridėti, keisti ir ištrinti eilutę su indeksu bei visiškai išvalyti SAVĘ lentelę.
Norėdami gauti vertes, naudokite:
- Dabartinių sandorių lentelės . Keitimosi informacijos parametrų gavimas naudojant GET_PARAM (_EX) komandas.
- Cituoti langus . Instrumentų kabučių verčių gavimas.
- Pozicijos pagal priemones ir pinigus lentelės . Duomenų apie klientą, firmą, priemonę, depo sąskaitą gavimas pagal kodą.
Aptarnavimo funkcijos – einamosios prekybos sesijos datos grąžinimas, asociacinės serijos, einamoji data ir laikas, ryšio būsenos nustatymas, skaičiavimo režimo nutraukimas.
Derinimo programos
Žingsnis po žingsnio programos veikimo valdymas atliekamas lange „Debug“. Jis atidaromas iš kontekstinio meniu „Pradėti skaičiavimą derinimo režimu“. Ją taip pat galima atidaryti naudojant breakpoint() komandą, o programos eilutė bus paryškinta raudonai. Lange yra laukai su programos kodu ir kintamųjų reikšmėmis. Lango apačioje yra mygtukai „Kitas žingsnis“, „Tęsti vykdymą“, „Sustabdyti skaičiavimą“. Paspaudus F5 bus tęsiamas programos vykdymas, derinys Shift + F5 nustos derinti, klavišas F10 nukreips į kitą eilutę.
QPILE ar LUA?
LUA yra nauja programavimo kalba, skirta kurti prekybos robotus. Kaip ir QPILE, ji įdiegta QUIK terminale. https://articles.opexflow.com/programming/lua.htm Svetainė, skirta prekybai skirtų prekybos robotų kūrimui, parodo LUA kalbos pranašumus prieš QPILE. Taigi, jis gali veikti kaip nesudarytas scenarijus ir baitinis kodas, aprūpintas kūrėjo įrankiais ir į objektą orientuotais programavimo mechanizmais. Objektai, parašyti kitomis programavimo kalbomis, gali būti prijungti prie LŽŪA programų. LUA pateikia 8 duomenų tipus, įskaitant meta lenteles. LUA kalba yra kelių gijų, greita, o operacijos ir terminalo įvykiai yra asinchroniniai. LUA yra labiau paplitęs nei QPILE, ir jai buvo parašyta daug plėtinių.
QPILE kalba dabar nebenaudojama. Forumų ekspertai rekomenduoja naudoti LUA. Nors naudingos ir veiksmingos programos vis dar naudojamos.
Tačiau QPILE kalba, palyginti su LUA, yra paprasta, todėl jei neturite programavimo patirties, geriau rinktis QPILE. Šia kalba galite parašyti paprastą robotą, jei jums nereikia atlikti sudėtingų skaičiavimų.
Kaip sukurti prekybos robotą QPILE?
Norėdami sukurti prekybos patarėją, jums reikės šių programų:
- ITS Quik.
- Notepad++ kodo redaktorius.
- QPILE vadovas.
- XML įskiepis, skirtas kodo aptikimui programoje Notepad++.
Atsisiųskite ir įdiekite šias programas. Įgalinkite kalbos sintaksę įkeldami userDefineLang.xml į kelią C:\Users\User\AppData\Roaming\Notepad++\
Pirmiausia sukurkime tokią prekybos strategiją. Scenarijus turėtų skaičiuoti Hi ir Low paskutinėms žvakėms kiekvieną minutę, patikrinti esamą instrumento kainą. Pozicija atidaroma reikiama kryptimi, jei priemonės kaina pasiekia maksimalią arba mažiausią laikotarpio vertę. Kai gaunamas trumpasis signalas, ilgoji padėtis automatiškai uždaroma. Robotas naudoja GAZP įrankį, nustatytas laiko intervalas 1 min. Hi-low matavimo gylis nustatytas iki 5 žvakių. Norint įvesti Ilgą, nustatoma taisyklė ir didžiausios laikotarpio vertės esamos kainos sankirta. Robotas įves „Short“, jei dabartinė kaina viršys minimalią šių 5 žvakių vertę. Parašykite kodo bloką „Notepad++“ naudodami pagrindinius nustatymus ir serverio datą bei laiką. Šis kodas parodytas paveikslėlyje žemiau.
Pirmosios 4 kodo eilutės sudaro programos antraštę. Tarp 6 ir 44 eilučių yra programos turinys, kuriame yra roboto turinys. 7–12 eilutėse pateikiami vartotojo nustatymai, įskaitant prietaiso, grupės ir kliento kodus, MICEX sąskaitos numerį. Šios reikšmės programos vykdymo metu nesikeičia. 13–16 eilutės yra pradinės kintamųjų reikšmės. Jie bus atstatyti į nulį kiekvieno kartojimo metu. 17–21 eilutėse nurodoma naudoti serverio datą ir laiką. Šie duomenys perduodami funkcijai DATETIME ir konvertuojami į teksto formatą. 22–29 eilutės siunčia gautus duomenis į lentelę. Kodas turi būti išsaugotas ir nurodytas qpl plėtinys.
Atidarykite programą QUIK paspausdami Ctrl+F10 ir pasirinkdami sugeneruotą qpl failą. Naudodami Ctrl+F11 kombinaciją atidarykite langą „Darbas su portfeliais“ ir nustatykite portfelio skaičiavimo laikotarpį į 5 minutes. Paspauskite Ctrl + F12, kad nustatytumėte stulpelius, kurie bus rodomi lentelėje. Nuotraukoje parodytas roboto darbo rezultatas.
Pridėkime prie savo programos dar keletą funkcijų ir sąlygų.
Blokas „Vartotojo nustatymai“ papildytas SKAIČIŲ ir INTERVALŲ kintamaisiais, kurie bus naudojami paskutinių N juostų gavimo funkcijai. Funkcija DATETIME nustato serverio datą ir laiką, o iš jos iškviečiamos esamos datos ir laiko funkcijos CURDATE ir CURTIME. Dabartinis laikas konvertuojamas į skaičių 24 eilutėje. 26 eilutėje nustatomas algoritmo veikimo laikas nuo 10:00:01 iki 18:40:00 UTC.
Dažniausiai rodikliai, osciliatoriai, statistiniai skaičiavimai skaičiuojami pagal paskutines N diagramos žvakes. QPILE neturi funkcijos, leidžiančios rinkti žvakių skaičių prieš N periodus, tačiau yra funkcija GET_CANDLE, kuri pasiekia diagramos žvakes pagal datą ir laiką teksto formatu. Mūsų kode yra funkcija, skirta gauti paskutines N juostas OHLC (). Jis sukuria kolekciją su paskutinių žvakių, esančių sąraše KOLEKTAVIMAS, parametrais. Programa patikrina INTERVAL reikšmę ir, jei ji nepatenka į intervalą 0…60, rodomas pranešimas, kad reikšmė neatitinka leistino diapazono. 88 eilutėje sukuriama ŽEMĖLAPIŲ kolekcija su žvakėmis. FOR kilpa, apklausianti diagramą iki reikiamo gylio su INTERVAL žingsniu nuo naujos iki senos žvakės. 90 eilutėje, paskelbus ciklą, robotas grįžta atgal. Kai gausite žvakę su GET_CANDLE, įdėkite jį į BARLIST kolekciją naudodami funkciją INSERT_COLLECTION_TEAM. Dėl komandos OHLC() veikimo, BARLIST papildomas paskutinėmis žvakėmis iš instrumentų diagramos SKAIČIŲ. Elementų skaičiaus rinkinyje prašo komanda GET_COLLECTION_COUNT() ir praneša kintamasis BARCOUNT. Serverio data, laikas, INSTRUMENT ir BARCOUNT kintamųjų reikšmės pateikiamos naudojant SET_VALUE() funkciją OUTPUT. Šis masyvas sukuriamas komanda CREATE_MAP(). Duomenys patenka į pasirinktinę lentelę, kurią galite pamatyti toliau esančioje nuotraukoje. INSTRUMENT ir BARCOUNT kintamųjų reikšmes praneša funkcija SET_VALUE() OUTPUT. Šis masyvas sukuriamas komanda CREATE_MAP(). Duomenys patenka į pasirinktinę lentelę, kurią galite pamatyti toliau esančioje nuotraukoje. INSTRUMENT ir BARCOUNT kintamųjų reikšmes praneša funkcija SET_VALUE() OUTPUT. Šis masyvas sukuriamas komanda CREATE_MAP(). Duomenys patenka į pasirinktinę lentelę, kurią galite pamatyti toliau esančioje nuotraukoje.
Prekybos robotai QPILE – paruošti sprendimai
Judantis vidutinis robotas
Demonstracinis robotas netinka realiai prekybai.
Robotas turi 5 parametrus. DATA, LAIKAS, KAINA identifikatorių reikšmės yra nustatytos į 30 lygį. MOVING ir TP identifikatoriai yra nulinio tikslumo. Roboto kodas slenkamuoju vidurkiu, parašytas QPILE:
N. Moroškino padėties skaičiuoklė
Programa, skirta apskaičiuoti maksimalaus leistino skolinimosi lygius ir ilgųjų bei trumpųjų pozicijų tikslą esamomis paklausimo ir siūlomomis kainomis. Lygiai apskaičiuojami 2 pozicijos įvedimo tūrio reikšmėms. Robotas suranda leistiną pozicijos apimtį priskirdamas stop orderį vienu žingsniu nuo atidarymo kainos, skaičiuodamas pozicijos atidarymą juostos augimo kryptimi. Rasti lygiai įvedami į terminalo langą, kurie vėliau atsispindi kainų diagramoje. Sandoriai yra fiksuoti tam tikrai priemonei. Jei pozicija atidaroma, robotas pradeda skaičiuoti savo parametrus. Priklausomai nuo pozicijos pasikeitimo koreguojami priskirti užsakymai.
Tūrio filtras
Portfelio robotas, skirtas žvakių tūrio aritmetiniam vidurkiui apskaičiuoti ir palyginti jį su vidutine sandauga pagal X koeficientą.Teisingai veikia su braižytomis diagramomis pasirinktu laikotarpiu.
Pasirinkimai graikai
Portfelis, skirtas „graikų“ opcionų skaičiavimui ir atvaizdavimui. Tai skiriasi nuo Black-Showers metodo.
TRIX prekybos robotas QUIK
Programa yra pagrįsta TRIX indikatoriumi. Kai indikatorius užsidaro virš nulinės linijos, nurodyto lygio, robotas užima Long poziciją. Pozicija uždaroma Take Profit, Stop Loss arba Trailing stop.
M4 pirminis procesorius
Programa, skirta darbui su QPILE ir Lua. Apima archyvus su vykdomaisiais failais, dokumentaciją ir DLL failus su reguliariųjų išraiškų analize. Norėdami naudoti programą, turite išpakuoti vykdomuosius failus ir į C:\Windows kelią įdėti regexp2. Pamokos apie QPILE, skirtą QUIK: https://youtu.be/vMTXwDUujpI Scenarijaus įdiegimas QPILE į Quik terminalą: https://youtu.be/0B7qL8Svh7I Github skyrius, kuriame aprašomas QPILE algoritminės kalbos, integruotos QUIK sistemos darbo vieta, esanti nuorodoje – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE yra pasenusi kalba, tačiau gana paprasta ir prieinama net pradedantiesiems prekybininkams. Prekybos robotai ir ilgą laiką pasiteisinusios programos ir toliau dirba su tuo. Tačiau sudėtingesnėms užduotims geriau naudoti LŽŪA.
0к