Algorithmic language QPILE para sa programming trading robots para sa QUIK

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

Algorithmic language QPILE para sa programming trading robots para sa QUIK.
Ang mga Trading robot ay maaaring isulat sa isang partikular na wika, katulad ng program code. Ang QPILE ay isa sa mga ito, isasaalang-alang ng artikulo ang wikang ito, ihambing ang mga wikang QPILE at
LUA , at magbibigay din ng mga halimbawa ng mga robot sa wikang ito.

Pangkalahatang impormasyon tungkol sa QPILE

Ang QPILE ay isang abbreviation na nangangahulugang QUIK Programmable Interface at Logic Environment.

Ito ay isang serye ng mga utos na binibigyang kahulugan ng QUIK workstation. Ito ay pangunahing ginagamit upang kalkulahin ang presyo ng mga portfolio ng mga mahalagang papel. Ginagamit din ang wika para sa:

  • dynamic na muling pagkalkula ng presyo ng mga asset ng mga kliyente sa desktop ng broker at sa kanilang mga portfolio. Sa huling kaso, ang kanilang kabuuang presyo ay muling kinalkula;
  • paghahanap ng mga nawawalang indicator gamit ang kanilang sariling mga algorithm at data para sa margin lending;
  • pagbuo ng tamang diskarte sa pangangalakal.

Inilalarawan ng wika ang istraktura ng talahanayan: ang appointment ng mga haligi at hilera, mga formula. Sa huli, ang mga pagpapatakbo ng matematika, mga variable, data mula sa iba pang mga talahanayan ay maaaring gamitin para sa pagkalkula. Ang code ng programa na na-load mula sa QUIK server o mula sa disk ng gumagamit ay pinoproseso ng interpreter ng wika, na kinakalkula ang mga halaga sa mga formula. Ang mga talahanayan ng isang programa ay may isang mapagkukunan ng data, ngunit ang mga kalkulasyon ay hindi nadoble at hindi nakakaapekto sa kahusayan ng system. Kapag nagtatrabaho sa mga QUIK na talahanayan, ang mga talahanayan sa QPILE ay may mga karaniwang function. Ang QUIK sa lugar ng trabaho ay nilagyan ng QPILE code debugger. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Binibigyang-daan ka ng wika na ilarawan ang mga bagong talahanayan na may partikular na istraktura, i-highlight ang mga cell na may ilang partikular na halaga, kalkulahin ang mga field batay sa matematikal at lohikal na mga expression. Makakatanggap ang user ng mga notification sa anyo ng sound signal o text message. Ang mga talahanayan sa QPILE ay maaaring i-edit, i-print, kopyahin, i-export sa pamamagitan ng ODBC at DDE server. Ang paunang data ay mula sa mga talahanayan ng QUIK:

  • mga transaksyon, kabilang ang para sa pagpapatupad at impersonal;
  • mga order, kabilang ang mga stop order, para sa mga over-the-counter na trade at order – mga ulat para sa mga trade sa mga deal sa pag-aayos;
  • “portfolio ng kliyente”, “bumili/magbenta”
  • data mula sa mga posisyon ng kalahok sa pamamagitan ng pera, mga trading account, instrumento.

Ang mga talahanayan batay sa QPILE ay hindi maaaring kopyahin sa isang text file sa pamamagitan ng menu ng konteksto at i-export sa mga sistema ng teknikal na pagsusuri, at ang mga chart ay hindi maaaring bumuo batay sa mga ito. Ang mga talahanayan na nakabatay sa QPILE ay hindi maaaring i-filter o ayusin.

Paggawa gamit ang isang mesa

Upang mai-load ang code ng programa, kailangan mong piliin ang menu ng mga serbisyo, pagkatapos ay ang mga script ng QPILE. Maaari mo ring gamitin ang kumbinasyong Ctrl+F11. Pagkatapos mong i-click ang “Idagdag” at piliin ang nais na file. Mayroon itong extension na .qpl at lalabas ang pangalan nito sa listahan ng Mga Available na Script.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Kung mayroong isang error sa programa, ang system ay gagawa ng isang abiso sa “Mensahe Window”, na naglalaman ng pangalan ng may sira na file at ang numero ng linya na may error. Kung walang nakitang mga pagkabigo sa file, ang sumusunod na data ay ipahiwatig sa mga patlang:

  • pangalan ng talahanayan;
  • bilang ng mga haligi at kliyente;
  • listahan ng mga identifier at kliyente;
  • ang listahan ng mga parameter at ang source code ng file.

Algorithmic language QPILE para sa programming trading robots para sa QUIK Ang “I-download nang lokal” na buton ay magbibigay-daan sa iyo na makuha ang talahanayan mula sa isang file, at ang “I-upload sa server” ay magpapadala ng programa sa server upang ma-access ito ng lahat ng mga user. Para gumawa ng table, i-click ang Create Table. Sa “Available script” piliin ang program na kailangan mong isagawa, itakda ang bilang ng mga linya sa pamamagitan ng “Filter ng mga kliyente”, tukuyin ang mga kinakailangang column at ang kanilang pagkakasunud-sunod.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Ang pag-pause at pagpapatuloy ng pagkalkula, pagsisimula muli sa pagkalkula at sa debug mode, pag-save ng paglalarawan sa isang file, pagpapakita ng formula, at ang mga parameter ng script ay available sa menu ng konteksto.

Mga konstruksyon ng QPILE

Uri ng data

  • String – string.
  • Ang double ay isang floating point number.
  • Koleksyon – isang koleksyon.
  • Mapa – isang associative array – isang sequence ng mga pares na nagbibigay-daan sa iyong makakuha ng impormasyon sa pamamagitan ng key.

Mga expression

Ang mga pagpapatakbo ng aritmetika ng karagdagan, pagbabawas, pagpaparami, paghahati ay inilalapat. Ginagamit din ang mga lohikal na expression na “at”, “o”, katumbas ng, higit pa, mas kaunti, hindi pagkakapantay-pantay, kondisyong konstruksyon “kung … pagkatapos …”.

Mga pag-andar

Ang mga function ay matatagpuan saanman sa programa at may iba’t ibang pangalan. Sa kabuuan, 18 mga pangkat ng mga pag-andar at pag-andar ng matematika ang magagamit upang makuha ang mga halaga ng mga talahanayan at parameter, magkakaugnay na mga array, isang listahan ng mga talahanayan, at iba pang mga gawain. Unang baitang:

  1. Mga pag-andar ng matematika na nagbibigay-daan sa iyo upang ibalik ang halaga ng sine, cosine, tangent, cotangent ng argumento, kalkulahin ang exponent ng argumento, bumuo ng random na numero, atbp.
  2. Mga pangkalahatang utos : NEW_GLOBAL upang simulan ang isang pandaigdigang variable at MESSAGE upang magbukas ng mga mensahe.

Mga function upang gumana sa:

  • Mga koleksyon ng mga bagay (Collection) . Pinapayagan ka nitong lumikha ng isang bagong koleksyon, ibalik ang kinakailangang bilang ng mga elemento, palitan o ipasok ang mga nais na halaga.
  • Mga Associative Array (MAP) . Tumulong sa paglikha at pamamahala ng array.
  • Mga file – nagtatrabaho sa mga text file, pinapanatili ang isang log-log ng programa. Ang pangalan ng file ay maaaring naglalaman ng landas patungo dito.
  • Mga string .
  • Mga graph . Gumagana ang GET_CANDLE upang ma-access ang data ng kandila at GET_CANDLE EX upang magbalik ng isang nag-uugnay na array.
  • Mga aplikasyon . Paglikha ng mga order at pagpapadala sa kanila sa sistema ng pangangalakal.
  • Mga tag . Ang kanilang pagtatayo at pag-install sa tsart. Pagdaragdag, pagtanggal ng isa o lahat ng mga label, pagkuha at pagtatakda ng mga parameter para sa isang partikular na label.

Mayroon ding mga function para sa:

  1. Para sa pag-access ng mga hilera ng mga arbitrary na QUIK na talahanayan at mga listahan ng magagamit na mga parameter . Access sa data ng talahanayan sa lugar ng trabaho. Kabilang dito ang GET_ITEM upang ibalik ang MAP at GET_NUMBER_OF upang ibalik ang bilang ng mga entry.
  2. Upang gumana sa isang programmable table . Gumagana ang mga utos na ito sa SARILING talahanayan. Nababasa ito ng mga karaniwang function mula sa nakaraang talata at ng mga function na ito. Kasama sa pangkat na ito ang mga utos para sa pagdaragdag, pagbabago at pagtanggal ng row na may index, at ganap na pag-clear sa OWN table.

Upang makakuha ng mga halaga gamitin:

  1. Mga talahanayan ng kasalukuyang kalakalan . Pagkuha ng mga parameter ng impormasyon ng palitan gamit ang mga command na GET_PARAM (_EX).
  2. Quote windows . Pagkuha ng mga halaga ng mga quote ng instrumento.
  3. Mga talahanayan ng mga posisyon sa pamamagitan ng mga instrumento at pera . Pagkuha ng data sa isang kliyente, kompanya, instrumento, depo account sa pamamagitan ng code.

Mga function ng serbisyo – ibinabalik ang petsa ng kasalukuyang sesyon ng kalakalan, magkakaugnay na serye, kasalukuyang petsa at oras, pagtukoy sa estado ng koneksyon, pag-abala sa mode ng pagkalkula.

Mga programa sa pag-debug

Ang hakbang-hakbang na kontrol sa pagpapatakbo ng programa ay isinasagawa sa window ng “Debug”. Ito ay binuksan mula sa menu ng konteksto na “Simulan ang pagkalkula sa mode ng pag-debug”. Maaari din itong buksan gamit ang breakpoint() na utos, at ang linya ng programa ay iha-highlight sa pula. Ang window ay naglalaman ng mga patlang na may program code at mga variable na halaga. Sa ibaba ng window mayroong mga pindutan “Susunod na hakbang”, “Magpatuloy sa pagpapatupad”, “Ihinto ang pagkalkula”. Ang pagpindot sa F5 ay magpapatuloy sa pagpapatupad ng programa, ang kumbinasyon ng Shift + F5 ay titigil sa pag-debug, ang F10 key ay magdidirekta sa susunod na linya.

QPILE o LUA?

Ang LUA ay isang bagong programming language para sa paglikha ng mga trading robot. Tulad ng QPILE, ito ay ipinatupad sa QUIK terminal. https://articles.opexflow.com/programming/lua.htm Ang isang site na nakatuon sa pagbuo ng mga robot sa pangangalakal para sa pangangalakal ay nagpapakita ng mga pakinabang ng wikang LUA kaysa sa QPILE. Kaya, maaari itong gumana bilang isang hindi pinagsama-samang script at bytecode, na nilagyan ng mga tool ng developer at object-oriented na mga mekanismo ng programming. Ang mga bagay na nakasulat sa iba pang mga programming language ay maaaring konektado sa mga programa ng LUA. Nagbibigay ang LUA ng 8 uri ng data, kabilang ang mga metatable. Ang wika ng LUA ay multi-threaded, mabilis, at ang mga transaksyon at mga kaganapan sa terminal ay asynchronous. Ang LUA ay mas karaniwan kaysa sa QPILE, at maraming extension ang isinulat para dito.

Ang wikang QPILE ay hindi na ginagamit. Inirerekomenda ng mga eksperto sa mga forum ang paggamit ng LUA. Bagama’t ginagamit pa rin ang mga kapaki-pakinabang at epektibong programa.

Gayunpaman, ang wika ng QPILE ay simple kumpara sa LUA, kaya kung wala kang karanasan sa programming, mas mahusay na pumili ng QPILE. Sa wikang ito, maaari kang magsulat ng isang simpleng robot kung hindi mo kailangang magsagawa ng mga kumplikadong kalkulasyon.

Paano lumikha ng isang trading robot sa QPILE?

Upang lumikha ng isang trading advisor, kakailanganin mo ang mga sumusunod na programa:

  1. ITS Quik.
  2. Notepad++ code editor.
  3. Gabay sa QPILE.
  4. XML plugin para sa pagtukoy ng code sa Notepad++.

I-download at i-install ang mga program na ito. Paganahin ang syntax ng wika sa pamamagitan ng paglalagay ng userDefineLang.xml sa path na C:\Users\User\ AppData\Roaming\Notepad++\
Algorithmic language QPILE para sa programming trading robots para sa QUIK Una, gawin natin ang sumusunod na diskarte sa pangangalakal. Dapat kalkulahin ng script ang Hi at Low para sa huling ilang kandila bawat minuto, tingnan ang kasalukuyang presyo ng instrumento. Binubuksan ang isang posisyon sa kinakailangang direksyon kung ang presyo ng instrumento ay umabot sa maximum o minimum na halaga para sa panahon. Kapag ang isang senyales para sa maikling ay natanggap, ang mahabang posisyon ay awtomatikong sarado. Ginagamit ng robot ang tool na GAZP, nakatakda ang time frame sa 1 min. Ang hi-low measurement depth ay nakatakda sa 5 kandila. Upang ipasok ang Long, isang panuntunan ang itatakda at ang intersection ng kasalukuyang presyo ng maximum na halaga para sa panahon. Papasok ang robot sa Short kung ang kasalukuyang presyo ay lumampas sa pinakamababang halaga para sa 5 kandilang ito. Sumulat ng isang bloke ng code sa Notepad++ na may mga pangunahing setting at petsa at oras ng server. Ang code na ito ay ipinapakita sa larawan sa ibaba.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Ang unang 4 na linya ng code ay bumubuo sa header ng programa. Sa pagitan ng mga linya 6 at 44 ay ang katawan ng programa, na naglalaman ng mga nilalaman ng robot. Ang mga linya 7 – 12 ay naglalaman ng mga setting ng user, na kinabibilangan ng mga code ng instrumento, grupo at kliyente, ang account number sa MICEX. Ang mga halagang ito ay hindi nagbabago sa panahon ng pagpapatupad ng programa. Ang mga linya 13 – 16 ay ang mga paunang halaga ng mga variable. Ire-reset ang mga ito sa zero sa bawat iteration pass. Ang mga linya 17 – 21 ay naglalaman ng indikasyon na gamitin ang petsa at oras ng server. Ang data na ito ay ipinapasa sa function na DATETIME at na-convert sa format ng teksto. Ang mga linya 22 – 29 ay nagpapadala ng natanggap na data sa talahanayan. Dapat i-save ang code at dapat tukuyin ang extension ng qpl.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Buksan ang programa sa QUIK sa pamamagitan ng pagpindot sa Ctrl+F10 at pagpili sa nabuong qpl file. Gamitin ang kumbinasyon ng Ctrl+F11 upang buksan ang window na “Work with Portfolios” at itakda ang panahon ng pagkalkula ng portfolio sa 5 minuto. Pindutin ang Ctrl+F12 upang itakda ang mga column na ipapakita sa talahanayan. Ipinapakita ng larawan ang resulta ng gawain ng robot.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Magdagdag tayo ng ilan pang mga function at kundisyon sa aming programa.
Ang bloke ng “Mga setting ng user” ay dinagdagan ng mga variable na NUMBER at INTERVAL, na gagamitin sa paggana ng pagkuha ng mga huling N bar. Ang function na DATETIME ay nagtatakda ng petsa at oras ng server, at ang kasalukuyang mga function ng petsa at oras ay CURDATE at CURTIME ay tinatawag mula dito. Ang kasalukuyang oras ay na-convert sa isang numero sa linya 24. Ang Linya 26 ay nagtatakda ng oras para tumakbo ang algorithm mula 10:00:01 hanggang 18:40:00 UTC.
Algorithmic language QPILE para sa programming trading robots para sa QUIK
Algorithmic language QPILE para sa programming trading robots para sa QUIK
Algorithmic language QPILE para sa programming trading robots para sa QUIK Algorithmic language QPILE para sa programming trading robots para sa QUIK Kadalasan, ang mga tagapagpahiwatig, mga oscillator, mga kalkulasyon ng istatistika ay kinakalkula ng huling N kandila ng tsart. Ang QPILE ay walang function para sa pagkolekta ng bilang ng mga kandila N ang nakalipas na panahon, ngunit mayroong isang GET_CANDLE function na nag-a-access sa mga kandila sa chart ayon sa petsa at oras sa format ng teksto. Ang aming code ay naglalaman ng function upang makuha ang huling N bar na OHLC(). Lumilikha ito ng isang koleksyon na may mga parameter ng mga huling kandila na naka-nest sa listahan ng COLLECTION. Sinusuri ng program ang halaga ng INTERVAL, at kung hindi ito nasa loob ng hanay na 0…60, isang mensahe ay ipinapakita na ang halaga ay hindi tumutugma sa pinapayagang hanay. Isang koleksyon ng MAP na may mga kandila ay ginawa sa linya 88. A FOR loop polling ang chart sa kinakailangang lalim na may INTERVAL na hakbang mula sa bago hanggang sa lumang kandila. Sa linya 90, pagkatapos ideklara ang cycle, bumalik ang robot sa isang pagitan. Kapag nakakuha ka ng kandila na may GET_CANDLE, ilagay ito sa koleksyon ng BARLIST gamit ang function na INSERT_COLLECTION_TEAM. Bilang resulta ng pagpapatakbo ng OHLC() na utos, ang BARLIST ay pinupunan ng mga huling kandila mula sa chart ng instrumento sa halagang NUMBER. Ang bilang ng mga elemento sa koleksyon ay hinihiling ng GET_COLLECTION_COUNT() command at iniulat ng BARCOUNT variable. Ang petsa ng server, oras, mga halaga ng INSTRUMENT at BARCOUNT na mga variable ay iniuulat ng SET_VALUE() function sa OUTPUT. Ang array na ito ay nilikha ng CREATE_MAP() command. Nahuhulog ang data sa custom na talahanayan, na makikita sa larawan sa ibaba. ang mga halaga ng INSTRUMENT at BARCOUNT na mga variable ay iniuulat ng SET_VALUE() function sa OUTPUT. Ang array na ito ay nilikha ng CREATE_MAP() command. Nahuhulog ang data sa custom na talahanayan, na makikita sa larawan sa ibaba. ang mga halaga ng INSTRUMENT at BARCOUNT na mga variable ay iniuulat ng SET_VALUE() function sa OUTPUT. Ang array na ito ay nilikha ng CREATE_MAP() command. Nahuhulog ang data sa custom na talahanayan, na makikita sa larawan sa ibaba.
Algorithmic language QPILE para sa programming trading robots para sa QUIK

Mga robot sa pangangalakal sa QPILE – mga handa na solusyon

Gumagalaw na average na robot

Demo robot ay hindi angkop para sa tunay na kalakalan.
Algorithmic language QPILE para sa programming trading robots para sa QUIK Ang robot ay may kasamang 5 mga parameter. DATE, TIME, PRICE identifier values ​​​​ay nakatakda sa level 30. MOVING at TP identifiers ay nakatakda sa zero precision. Robot code sa moving average na nakasulat sa ilalim ng QPILE:

N. Moroshkin posisyon calculator

Isang programa para sa pagkalkula ng mga antas ng maximum na pinapayagang drawdown at ang target para sa mahaba at maikling mga posisyon sa kasalukuyang mga presyo ng ask at bid. Ang mga antas ay kinakalkula para sa 2 mga halaga ng dami ng pagpasok ng posisyon. Hinahanap ng robot ang pinahihintulutang dami ng posisyon kapag nagtatalaga ng stop order sa isang hakbang mula sa pagbubukas ng presyo kasama ang pagkalkula ng pagbubukas ng isang posisyon sa direksyon ng paglago ng bar. Ang mga nahanap na antas ay ipinasok sa terminal window, na kasunod na makikita sa tsart ng presyo. Ang mga transaksyon ay naayos para sa isang ibinigay na instrumento. Kung bubuksan ang isang posisyon, magsisimulang kalkulahin ng robot ang mga parameter nito. Depende sa pagbabago sa posisyon, ang mga nakatalagang order ay inaayos.
Algorithmic language QPILE para sa programming trading robots para sa QUIK
Algorithmic language QPILE para sa programming trading robots para sa QUIK

Filter ng volume

Portfolio robot para sa pagkalkula ng arithmetic mean ng volume para sa mga kandila at paghahambing nito sa average na produkto sa pamamagitan ng X coefficient. Gumagana nang tama sa mga naka-plot na chart sa napiling yugto ng panahon.
Algorithmic language QPILE para sa programming trading robots para sa QUIK

Mga pagpipilian sa Greek

Portfolio para sa pagkalkula at pagpapakita ng “Mga Griyego” ng mga opsyon. Ito ay naiiba sa paraang Black-Showers.
Algorithmic language QPILE para sa programming trading robots para sa QUIK

TRIX trading robot para sa QUIK

Ang programa ay batay sa TRIX Indicator. Kapag ang tagapagpahiwatig ay nagsasara sa itaas ng zero na linya, ang tinukoy na antas, ang robot ay tumatagal ng Mahabang posisyon. Ang posisyon ay isinara ng Take Profit, Stop Loss o trailing stop.

M4 Preprocessor

Programa para sa pagtatrabaho sa QPILE at Lua. May kasamang mga archive na may mga executable na file, dokumentasyon at DLL file na may regular na pagpa-parse ng expression. Upang magamit ang program, kailangan mong i-unpack ang mga executable na file at ilagay ang regexp2 sa C:\Windows path. Mga aralin sa QPILE para sa QUIK: https://youtu.be/vMTXwDUujpI Pag-install ng script sa QPILE sa Quik terminal: https://youtu.be/0B7qL8Svh7I Isang seksyon sa github na naglalarawan sa paggamit ng QPILE algorithmic na wika na binuo sa QUIK system workstation na matatagpuan sa link – https://euvgub.github.io/quik_user_manual/ch8.html. Ang QPILE ay isang hindi napapanahong wika, ngunit medyo simple at naa-access kahit sa mga baguhan na mangangalakal. Ang mga robot at programa sa pangangalakal na napatunayan ang kanilang mga sarili sa mahabang panahon ay patuloy na nagtatrabaho dito. Gayunpaman, para sa mas kumplikadong mga gawain, mas mahusay na gumamit ng LUA.

info
Rate author

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

    Sagutin