Lang algoritmik QPILE pou pwogramasyon robo komès pou QUIK.
Komès robo yo ka ekri nan yon lang espesifik, menm jan ak kòd pwogram. QPILE se youn nan yo, atik la pral konsidere lang sa a, konpare lang QPILE ak
LUA , epi tou bay egzanp robo nan lang sa a.
- Enfòmasyon jeneral sou QPILE
- Travay ak yon tab
- QPILE konstwi
- Kalite done yo
- Ekspresyon
- Fonksyon
- Pwogram debogaj
- QPILE oswa LUA?
- Ki jan yo kreye yon robo komès sou QPILE?
- Komès robo sou QPILE – solisyon pare yo
- K ap deplase robo mwayèn
- N. Moroshkin kalkilatris pozisyon
- Volim filtre
- Opsyon moun Lagrès
- TRIX komès robo pou QUIK
- M4 Preprocessor
Enfòmasyon jeneral sou QPILE
QPILE se yon abrevyasyon ki vle di QUIK Programmable Interface ak anviwònman lojik.
Sa a se yon seri kòmandman entèprete pa estasyon travay QUIK la. Li se sitou itilize yo kalkile pri a nan pòtfolyo nan sekirite. Yo itilize lang nan tou pou:
- rekalkil dinamik nan pri a nan byen kliyan yo sou Desktop koutye a ak nan pòtfolyo yo. Nan dènye ka a, pri total yo tou rekalkile;
- jwenn endikatè ki manke yo lè l sèvi avèk pwòp algoritm ak done yo pou prete Marge;
- devlope estrateji komès dwat la.
Langaj la dekri estrikti tab la: randevou kolòn ak ranje, fòmil. Nan lèt la, operasyon matematik, varyab, done ki soti nan lòt tab yo ka itilize pou kalkil. Kòd pwogram ki chaje nan sèvè QUIK la oswa nan disk itilizatè a trete pa entèprèt lang, ki kalkile valè yo nan fòmil yo. Tablo yo nan yon pwogram gen yon sèl sous done, men kalkil yo pa kopi epi yo pa afekte efikasite nan sistèm nan. Lè w ap travay ak tab QUIK, tab sou QPILE gen fonksyon estanda. QUIK nan espas travay la ekipe ak yon debogaj kòd QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Langaj la pèmèt ou dekri nouvo tab ak yon estrikti bay, mete aksan sou selil ki gen sèten valè, kalkile jaden ki baze sou ekspresyon matematik ak lojik. Itilizatè a pral resevwa notifikasyon sou fòm yon siyal son oswa yon mesaj tèks. Tablo sou QPILE ka modifye, enprime, kopye, ekspòte atravè sèvè ODBC ak DDE. Done inisyal yo soti nan tablo QUIK yo:
- tranzaksyon, ki gen ladan pou ekzekisyon ak enpèsonèl;
- lòd, ki gen ladan lòd sispann, pou komès san preskripsyon ak lòd – rapò pou echanj nan kontra règleman;
- “portfolio kliyan”, “achte/vann”
- done ki soti nan pozisyon patisipan an pa lajan, kont komès, enstriman.
Tablo ki baze sou QPILE pa ka kopye nan yon dosye tèks atravè meni kontèks la epi ekspòte nan sistèm analiz teknik, epi yo pa ka devlope tablo ki baze sou yo. Tablo ki baze sou QPILE pa ka filtre oswa klase.
Travay ak yon tab
Pou chaje kòd pwogram lan, ou bezwen chwazi meni sèvis yo, apresa scripts QPILE. Ou kapab tou itilize konbinezon an Ctrl + F11. Apre ou bezwen klike sou “Ajoute” epi chwazi dosye a vle. Li gen yon ekstansyon .qpl epi non li ap parèt nan lis Scripts ki disponib yo.
Si gen yon erè nan pwogram nan, sistèm lan pral fè yon notifikasyon nan “Fenèt mesaj la”, ki pral genyen non fichye ki defektye a ak nimewo liy ki gen erè a. Si yo pa jwenn okenn echèk nan dosye a, done sa yo pral endike nan jaden yo:
- non tab la;
- kantite kolòn ak kliyan;
- lis idantifyan ak kliyan;
- lis paramèt ak kòd sous dosye a.
Bouton “Telechaje lokalman” la pral pèmèt ou jwenn tab la nan yon fichye, epi “Telechaje sou sèvè” pral voye pwogram nan sou sèvè a pou tout itilizatè yo ka jwenn aksè nan li. Pou kreye yon tab, klike sou Kreye tab. Nan “Scripts ki disponib yo” chwazi pwogram ou bezwen pou egzekite, mete kantite liy nan “Filtè kliyan yo”, detèmine kolòn ki nesesè yo ak sekans yo.
Poz ak rekòmanse kalkil la, kòmanse kalkil la ankò ak nan mòd debug, sove deskripsyon an nan yon dosye, demontre fòmil la, ak paramèt script yo disponib nan meni an kontèks.
QPILE konstwi
Kalite done yo
- Fisèl – fisèl.
- Double se yon nimewo k ap flote.
- Koleksyon – yon koleksyon.
- Map – yon etalaj asosyasyon – yon sekans pè ki pèmèt ou jwenn enfòmasyon pa kle.
Ekspresyon
Yo aplike operasyon aritmetik adisyon, soustraksyon, miltiplikasyon, divizyon. Ekspresyon lojik “ak”, “oswa”, egal, plis, mwens, inegalite, konstriksyon kondisyonèl “si … Lè sa a …” yo itilize tou.
Fonksyon
Fonksyon yo ka lokalize nenpòt kote nan pwogram nan epi yo gen non diferan. An total, 18 gwoup fonksyon matematik ak fonksyon ki disponib pou jwenn valè tab ak paramèt, etalaj asosyasyon, yon lis tab, ak lòt travay. Premye klas:
- Fonksyon matematik ki pèmèt ou retounen valè sinis, kosinis, tanjant, kotanjant agiman an, kalkile ekspozan agiman an, jenere yon nimewo o aza, elatriye.
- Kòmandman jeneral : NEW_GLOBAL pou inisyalize yon varyab mondyal ak MESAJ pou louvri mesaj yo.
Fonksyon pou travay avèk yo:
- Koleksyon objè (Koleksyon) . Yo pèmèt ou kreye yon nouvo koleksyon, retounen kantite eleman ki nesesè yo, ranplase oswa mete valè yo vle.
- Asosyasyon etalaj (MAP) . Ede yo kreye ak jere etalaj la.
- Fichye – travay ak dosye tèks, kenbe yon boutèy demi lit nan pwogram nan. Non fichye a ka genyen chemen pou li.
- Fisèl .
- Grafik . Fonksyon GET_CANDLE pou jwenn aksè nan done chandèl ak GET_CANDLE EX pou retounen yon etalaj asosyasyon.
- Aplikasyon . Kreye lòd epi voye yo nan sistèm komès la.
- Tags . Konstriksyon yo ak enstalasyon yo sou tablo a. Ajoute, efase youn oswa tout etikèt, jwenn ak mete paramèt pou yon etikèt espesifik.
Genyen tou fonksyon pou:
- Pou jwenn aksè nan ranje tab QUIK abitrè ak lis paramèt ki disponib . Aksè nan done tab nan espas travay. Men sa yo enkli GET_ITEM pou retounen MAP la ak GET_NUMBER_OF pou retounen kantite antre yo.
- Pou travay avèk yon tab pwogramasyon . Kòmandman sa yo opere sou PWÒP tab la. Li se lizib pa fonksyon estanda ki soti nan paragraf anvan an ak pa fonksyon sa yo. Gwoup sa a gen ladan kòmandman pou ajoute, modifye ak efase yon ranje ak yon endèks, ak konplètman netwaye tab la PWOP.
Pou jwenn valè itilize:
- Tablo echanj aktyèl yo . Jwenn paramèt enfòmasyon echanj lè l sèvi avèk kòmandman GET_PARAM (_EX).
- Quote fenèt yo . Jwenn valè enstriman quotes.
- Tablo pozisyon pa enstriman ak lajan . Jwenn done sou yon kliyan, konpayi, enstriman, kont depo pa kòd.
Fonksyon sèvis – retounen dat sesyon komès aktyèl la, seri asosyasyon, dat ak lè aktyèl la, detèmine eta koneksyon an, entèwonp mòd kalkil la.
Pwogram debogaj
Etap-pa-etap kontwòl sou operasyon an nan pwogram nan te pote soti nan fenèt la “Debug”. Li louvri nan meni kontèks “Kòmanse kalkil nan mòd debug”. Li kapab tou louvri ak kòmandman breakpoint(), epi liy pwogram lan pral make an wouj. Fenèt la gen jaden ki gen kòd pwogram ak valè varyab. Nan pati anba a nan fenèt la gen bouton “Pwochen etap”, “Kontinye ekzekisyon”, “Sispann kalkil”. Peze F5 ap kontinye ekzekisyon pwogram nan, konbinezon Shift + F5 ap sispann debogaj, kle F10 la ap dirije nan pwochen liy lan.
QPILE oswa LUA?
LUA se yon nouvo langaj pwogramasyon pou kreye robo komès. Menm jan ak QPILE, li aplike nan tèminal QUIK la. https://articles.opexflow.com/programming/lua.htm Yon sit ki dedye a devlopman robo komès pou komès montre avantaj ki genyen nan lang LUA sou QPILE. Se konsa, li ka fonksyone kòm yon script ki pa konpile ak bytecode, ekipe ak zouti pwomotè ak mekanis pwogram oryante objè. Objè ki ekri nan lòt langaj pwogramasyon ka konekte ak pwogram LUA. LUA bay 8 kalite done, ki gen ladan metatab. Lang LUA a se plizyè fil, vit, epi tranzaksyon ak evènman tèminal yo asenkron. LUA pi komen pase QPILE, e anpil ekstansyon yo te ekri pou li.
Kounye a lang QPILE demode. Ekspè nan fowòm yo rekòmande pou itilize LUA. Malgre ke pwogram itil ak efikas yo toujou ap itilize.
Sepandan, lang QPILE a senp konpare ak LUA, kidonk si w pa gen eksperyans nan pwogramasyon, li pi bon pou w chwazi QPILE. Nan lang sa a, ou ka ekri yon robo senp si ou pa bezwen fè kalkil konplèks.
Ki jan yo kreye yon robo komès sou QPILE?
Pou kreye yon konseye komès, w ap bezwen pwogram sa yo:
- ITS Quik.
- Notepad++ kòd editè.
- Gid pou QPILE.
- Plugin XML pou deteksyon kòd nan Notepad ++.
Telechaje epi enstale pwogram sa yo. Pèmèt sentaks lang lan lè w mete userDefineLang.xml nan chemen C:\Users\User\AppData\Roaming\Notepad++\
Premyèman, an n kreye estrateji komès sa a. Script la ta dwe kalkile Hi ak Low pou dènye kèk bouji chak minit, tcheke pri aktyèl la nan enstriman an. Yon pozisyon louvri nan direksyon ki nesesè si pri enstriman an rive nan valè maksimòm oswa minimòm pou peryòd la. Lè yo resevwa yon siyal pou kout, pozisyon long la otomatikman fèmen. Robo a sèvi ak zouti GAZP, tan an fikse sou 1 min. Pwofondè mezi hi-low la mete sou 5 bouji. Pou antre nan Long, yo mete yon règ ak entèseksyon pri aktyèl la nan valè maksimòm pou peryòd la. Robo a pral antre nan Kout si pri aktyèl la kwaze valè minimòm pou 5 bouji sa yo. Ekri yon blòk kòd nan Notepad ++ ak paramèt debaz yo ak dat ak lè sèvè. Kòd sa a montre nan foto ki anba a.
Premye 4 liy kòd yo fòme tèt pwogram nan. Ant liy 6 ak 44 se kò a nan pwogram nan, ki gen sa ki nan robo a. Liy 7 – 12 genyen paramèt itilizatè yo, ki gen ladan kòd enstriman an, gwoup ak kliyan, nimewo kont sou MICEX la. Valè sa yo pa chanje pandan ekzekisyon pwogram lan. Liy 13 – 16 yo se valè inisyal varyab yo. Yo pral reset a zewo sou chak pas iterasyon. Liy 17 – 21 gen yon endikasyon pou itilize dat ak lè sèvè a. Done sa yo pase nan fonksyon DATETIME ak konvèti nan fòma tèks. Liy 22 – 29 voye done yo resevwa sou tab la. Kòd la dwe sove epi ekstansyon qpl dwe espesifye.
Louvri pwogram nan nan QUIK lè w peze Ctrl + F10 epi chwazi dosye qpl ki te pwodwi a. Sèvi ak konbinezon Ctrl+F11 pou ouvri fenèt “Travay ak pòtfolyo” epi mete peryòd kalkil pòtfolyo a sou 5 minit. Peze Ctrl + F12 pou mete kolòn yo montre nan tablo a. Foto a montre rezilta travay robo a.
Ann ajoute kèk plis fonksyon ak kondisyon nan pwogram nou an.
Blòk “Anviwònman Itilizatè” yo konplete ak varyab NIMEWO ak ENTÈVAL, ki pral itilize nan fonksyon pou jwenn dènye N ba yo. Fonksyon DATETIME la fikse dat ak lè sèvè a, epi fonksyon dat ak lè aktyèl yo rele CURDATE ak CURTIME. Lè aktyèl la konvèti nan yon nimewo sou liy 24. Liy 26 fikse tan pou algorithm la kouri soti 10:00:01 rive 18:40:00 UTC.
Pi souvan, endikatè, osilateur, kalkil estatistik yo kalkile pa dènye N bouji yo nan tablo a. QPILE pa gen yon fonksyon pou kolekte kantite bouji N peryòd de sa kòm sa yo, men gen yon fonksyon GET_CANDLE ki gen aksè a bouji yo sou tablo a pa dat ak lè nan fòma tèks. Kòd nou an gen fonksyon pou jwenn dènye N ba OHLC(). Li kreye yon koleksyon ak paramèt dènye bouji yo enbrike nan lis KOLEKSYON an. Pwogram nan tcheke valè ENTERVAL la, epi si li pa tonbe nan ranje 0…60, yon mesaj parèt ke valè a pa koresponn ak ranje yo pèmèt. Yo kreye yon koleksyon MAP ak bouji sou liy 88. YON bouk FOR sondaj tablo a nan pwofondè ki nesesè a ak etap ENTERVAL soti nan nouvo a nan ansyen chandèl la. Nan liy 90, apre yo fin deklare sik la, robo a tounen yon entèval. Lè w jwenn yon chandèl ak GET_CANDLE, mete l nan koleksyon BARLIST lè l sèvi avèk fonksyon INSERT_COLLECTION_TEAM. Kòm rezilta operasyon OHLC() kòmandman an, BARLIST ranpli ak dènye bouji ki soti nan tablo enstriman an nan kantite NIMEWO. Kòmand GET_COLLECTION_COUNT() mande kantite eleman nan koleksyon an epi varyab BARCOUNT la rapòte. Dat sèvè, lè, valè INSTRUMENT ak BARCOUNT varyab yo rapòte pa fonksyon SET_VALUE() nan OUTPUT. Etalaj sa a kreye pa kòmand CREATE_MAP() la. Done yo tonbe nan tablo a koutim, ki ka wè nan foto ki anba a. Fonksyon SET_VALUE() nan OUTPUT rapòte valè varyab INSTRUMENT ak BARCOUNT. Etalaj sa a kreye pa kòmand CREATE_MAP() la. Done yo tonbe nan tablo a koutim, ki ka wè nan foto ki anba a. Fonksyon SET_VALUE() nan OUTPUT rapòte valè varyab INSTRUMENT ak BARCOUNT. Etalaj sa a kreye pa kòmand CREATE_MAP() la. Done yo tonbe nan tablo a koutim, ki ka wè nan foto ki anba a.
Komès robo sou QPILE – solisyon pare yo
K ap deplase robo mwayèn
Demo robo pa apwopriye pou komès reyèl.
Robo a gen ladan 5 paramèt. DAT, TAN, valè idantifyan PRICE yo mete nan nivo 30. Idantifyan MOVING ak TP yo mete nan zewo presizyon. Kòd robo sou mwayèn k ap deplase ekri anba QPILE:
N. Moroshkin kalkilatris pozisyon
Yon pwogram pou kalkile nivo maksimòm drawdown akseptab ak sib pou pozisyon long ak kout nan pri demann ak òf aktyèl yo. Nivo yo kalkile pou 2 valè volim antre pozisyon an. Robo a jwenn volim nan pozisyon akseptab lè yo bay yon lòd sispann nan yon etap soti nan pri a ouvèti ak kalkil la nan ouvèti yon pozisyon nan yon direksyon ki nan kwasans lan ba. Nivo yo jwenn yo antre nan fenèt tèminal la, ki imedyatman reflete nan tablo pri a. Tranzaksyon yo fiks pou yon enstriman bay yo. Si yon pozisyon louvri, robo a kòmanse kalkile paramèt li yo. Tou depan de chanjman nan pozisyon, lòd yo asiyen yo ajiste.
Volim filtre
Robo pòtfolyo pou kalkile mwayèn aritmetik volim pou bouji ak konpare li ak pwodwi mwayèn pa koyefisyan X. Travay kòrèkteman ak tablo trase nan peryòd tan chwazi a.
Opsyon moun Lagrès
Portfolio pou kalkile ak montre “grèk” nan opsyon. Li diferan de metòd Black-Showers.
TRIX komès robo pou QUIK
Pwogram nan baze sou Endikatè TRIX la. Lè endikatè a fèmen pi wo pase liy zewo a, nivo espesifye a, robo a pran pozisyon Long. Pozisyon an fèmen pa Take Profit, Stop Loss oswa trailing stop.
M4 Preprocessor
Pwogram pou travay ak QPILE ak Lua. Gen ladan achiv ak dosye ègzèkutabl, dokimantasyon ak dosye DLL ak analiz ekspresyon regilye. Pou itilize pwogram nan, ou bezwen depake dosye ègzèkutabl yo epi mete regexp2 nan chemen C:\Windows. Leson sou QPILE pou QUIK: https://youtu.be/vMTXwDUujpI Enstale yon script sou QPILE nan tèminal Quik la: https://youtu.be/0B7qL8Svh7I Yon seksyon sou github ki dekri itilizasyon langaj algoritmik QPILE ki entegre nan Estasyon travay sistèm QUIK ki sitiye nan lyen an – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE se yon lang ki demode, men byen senp epi aksesib menm pou komèsan inisyasyon yo. Komès robo ak pwogram ki te pwouve tèt yo pou yon tan long kontinye travay sou li. Sepandan, pou travay ki pi konplèks li pi bon pou itilize LUA.
0к