QUIK uchun savdo robotlarini dasturlash uchun QPILE algoritmik tili.
Savdo robotlari dastur kodiga o’xshash ma’lum bir tilda yozilishi mumkin. QPILE ulardan biri bo’lib, maqolada ushbu til ko’rib chiqiladi, QPILE va
LUA tillari solishtiriladi, shuningdek, ushbu tildagi robotlarga misollar keltiriladi.
- QPILE haqida umumiy ma’lumot
- Jadval bilan ishlash
- QPILE konstruksiyalari
- Ma’lumotlar turlari
- Ifodalar
- Funksiyalar
- Nosozliklarni tuzatish dasturlari
- QPILE yoki LUA?
- QPILE da savdo robotini qanday yaratish mumkin?
- QPILE da savdo robotlari – tayyor echimlar
- Harakatlanuvchi o’rtacha robot
- N. Moroshkin pozitsiyasi kalkulyatori
- Ovoz filtri
- Variantlar yunonlar
- QUIK uchun TRIX savdo roboti
- M4 protsessor
QPILE haqida umumiy ma’lumot
QPILE qisqartmasi QUIK Programmable Interface and Logic Environment degan ma’noni anglatadi.
Bu QUIK ish stantsiyasi tomonidan talqin qilingan buyruqlar seriyasidir. U asosan qimmatli qog’ozlar portfelining narxini hisoblash uchun ishlatiladi. Til shuningdek quyidagilar uchun ishlatiladi:
- broker ish stolida va ularning portfelidagi mijozlar aktivlari narxini dinamik qayta hisoblash. Ikkinchi holda, ularning umumiy narxi ham qayta hisoblab chiqiladi;
- marjali kreditlash uchun o’z algoritmlari va ma’lumotlaridan foydalangan holda etishmayotgan ko’rsatkichlarni topish;
- to’g’ri savdo strategiyasini ishlab chiqish.
Til jadvalning tuzilishini tavsiflaydi: ustunlar va satrlarni, formulalarni belgilash. Ikkinchisida hisoblash uchun matematik amallar, o’zgaruvchilar, boshqa jadvallardagi ma’lumotlardan foydalanish mumkin. QUIK serveridan yoki foydalanuvchi diskidan yuklangan dastur kodi formulalardagi qiymatlarni hisoblaydigan til tarjimoni tomonidan qayta ishlanadi. Bitta dasturning jadvallari bitta ma’lumot manbasiga ega, ammo hisob-kitoblar takrorlanmaydi va tizimning samaradorligiga ta’sir qilmaydi. QUIK jadvallari bilan ishlashda QPILE jadvallari standart funksiyalarga ega. Ish joyidagi QUIK QPILE kodini tuzatuvchi bilan jihozlangan. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Til berilgan tuzilishga ega yangi jadvallarni tasvirlash, ma’lum qiymatlarga ega bo’lgan katakchalarni ajratib ko’rsatish, matematik va mantiqiy ifodalar asosida maydonlarni hisoblash imkonini beradi. Foydalanuvchi ovozli signal yoki matnli xabar shaklida bildirishnomalarni oladi. QPILE-dagi jadvallarni ODBC va DDE serveri orqali tahrirlash, chop etish, nusxalash, eksport qilish mumkin. Dastlabki ma’lumotlar QUIK jadvallaridan olingan:
- operatsiyalar, shu jumladan ijro va shaxssiz;
- birjadan tashqari savdolar bo’yicha buyurtmalar, shu jumladan to’xtash buyurtmalari va buyurtmalar – hisob-kitob bitimlari bo’yicha savdolar bo’yicha hisobotlar;
- “mijoz portfeli”, “sotib olish/sotish”
- pul, savdo hisoblari, asbob bo’yicha ishtirokchining pozitsiyalaridan ma’lumotlar.
QPILE asosidagi jadvallarni kontekst menyusi orqali matnli faylga ko‘chirib, texnik tahlil tizimlariga eksport qilib bo‘lmaydi, ular asosida diagrammalar ishlab chiqilmaydi. QPILE asosidagi jadvallarni filtrlab yoki saralab bo‘lmaydi.
Jadval bilan ishlash
Dastur kodini yuklash uchun xizmatlar menyusini, keyin QPILE skriptlarini tanlashingiz kerak. Ctrl+F11 kombinatsiyasidan ham foydalanishingiz mumkin. Shundan so’ng siz “Qo’shish” tugmasini bosishingiz va kerakli faylni tanlashingiz kerak. U .qpl kengaytmasiga ega va uning nomi Mavjud skriptlar ro’yxatida paydo bo’ladi.
Agar dasturda xatolik yuzaga kelsa, tizim “Xabarlar oynasi” da bildirishnoma yuboradi, unda nuqsonli fayl nomi va xato bilan qator raqami ko’rsatiladi. Agar faylda hech qanday xato topilmasa, quyidagi ma’lumotlar maydonlarda ko’rsatiladi:
- jadval nomi;
- ustunlar va mijozlar soni;
- identifikatorlar va mijozlar ro’yxati;
- parametrlar ro’yxati va faylning manba kodi.
“Lokal tarzda yuklab olish” tugmasi jadvalni fayldan olish imkonini beradi va “Serverga yuklash” dasturni serverga yuboradi, shunda barcha foydalanuvchilar unga kirishlari mumkin. Jadval yaratish uchun Jadval yaratish tugmasini bosing. “Mavjud skriptlar” da siz bajarishingiz kerak bo’lgan dasturni tanlang, “Mijozlar filtri” orqali qatorlar sonini o’rnating, kerakli ustunlarni va ularning ketma-ketligini aniqlang.
Hisoblashni to’xtatib turish va davom ettirish, hisobni qaytadan va disk raskadrovka rejimida boshlash, tavsifni faylga saqlash, formulani ko’rsatish va skript parametrlari kontekst menyusida mavjud.
QPILE konstruksiyalari
Ma’lumotlar turlari
- String – string.
- Double – suzuvchi nuqtali raqam.
- To’plam – to’plam.
- Xarita – assotsiativ massiv – kalit bo’yicha ma’lumot olish imkonini beruvchi juftliklar ketma-ketligi.
Ifodalar
Qo’shish, ayirish, ko’paytirish, bo’lish kabi arifmetik amallar qo’llaniladi. “Va”, “yoki”, teng, ko’proq, kamroq, tengsizliklar, shartli konstruktsiya “agar … keyin …” mantiqiy iboralari ham qo’llaniladi.
Funksiyalar
Funktsiyalar dasturning istalgan joyida joylashgan bo’lishi va turli nomlarga ega bo’lishi mumkin. Jadvallar va parametrlar, assotsiativ massivlar, jadvallar ro’yxati va boshqa vazifalar qiymatlarini olish uchun jami 18 ta matematik funktsiyalar va funktsiyalar guruhi mavjud. Birinchi sinf:
- Argumentning sinus, kosinus, tangens, kotangens qiymatini qaytarish, argumentning ko’rsatkichini hisoblash, tasodifiy sonni yaratish va h.k. imkonini beruvchi matematik funktsiyalar .
- Umumiy buyruqlar : global o’zgaruvchini ishga tushirish uchun NEW_GLOBAL va xabarlarni ochish uchun MESSAGE.
Ishlash uchun funktsiyalar:
- Ob’ektlar to’plami (To’plam) . Ular sizga yangi kolleksiya yaratish, kerakli miqdordagi elementlarni qaytarish, kerakli qiymatlarni almashtirish yoki kiritish imkonini beradi.
- Assotsiativ massivlar (MAP) . Massivni yaratish va boshqarishga yordam bering.
- Fayllar – matnli fayllar bilan ishlash, dastur jurnalini yuritish. Fayl nomi unga yo’lni o’z ichiga olishi mumkin.
- Strings .
- Grafiklar . Sham ma’lumotlariga kirish uchun GET_CANDLE va assotsiativ massivni qaytarish uchun GET_CANDLE EX funksiyalari.
- Ilovalar . Buyurtmalarni yaratish va ularni savdo tizimiga yuborish.
- Teglar . Ularning qurilishi va o’rnatilishi diagrammada. Bir yoki barcha teglarni qo’shish, o’chirish, ma’lum bir yorliq uchun parametrlarni olish va sozlash.
Shuningdek, quyidagi funktsiyalar mavjud:
- O’zboshimchalik bilan QUIK jadvallari qatorlariga va mavjud parametrlar ro’yxatiga kirish uchun . Ish joyidagi jadval ma’lumotlariga kirish. Bularga MAPni qaytarish uchun GET_ITEM va yozuvlar sonini qaytarish uchun GET_NUMBER_OF kiradi.
- Dasturlashtiriladigan jadval bilan ishlash uchun . Bu buyruqlar OWN jadvalida ishlaydi. Oldingi paragrafdagi standart funktsiyalar va ushbu funktsiyalar orqali o’qilishi mumkin. Bu guruh indeksli satrni qoʻshish, oʻzgartirish va oʻchirish hamda OWN jadvalini toʻliq tozalash buyruqlarini oʻz ichiga oladi.
Qiymatlarni olish uchun foydalaning:
- Joriy savdolar jadvallari . GET_PARAM (_EX) buyruqlari yordamida ma’lumotlar almashinuvi parametrlarini olish.
- Iqtibos oynalari . Asbob kotirovkalari qiymatlarini olish.
- Asboblar va pullar bo’yicha pozitsiyalar jadvallari . Kod bo’yicha mijoz, kompaniya, asbob, depo hisobvarag’i to’g’risidagi ma’lumotlarni olish.
Xizmat funktsiyalari – joriy savdo sessiyasi sanasini, assotsiativ seriyani, joriy sana va vaqtni qaytarish, ulanish holatini aniqlash, hisoblash rejimini to’xtatish.
Nosozliklarni tuzatish dasturlari
Dasturning ishlashini bosqichma-bosqich nazorat qilish “Debug” oynasida amalga oshiriladi. U kontekst menyusidan ochiladi “Nosozliklarni tuzatish rejimida hisoblashni boshlash”. U breakpoint() buyrug’i bilan ham ochilishi mumkin va dastur qatori qizil rang bilan ajratib ko’rsatiladi. Oynada dastur kodi va o’zgaruvchan qiymatlari bo’lgan maydonlar mavjud. Oynaning pastki qismida “Keyingi qadam”, “Bajarishni davom ettirish”, “Hisoblashni to’xtatish” tugmalari mavjud. F5 tugmachasini bosish dasturning bajarilishini davom ettiradi, Shift + F5 kombinatsiyasi disk raskadrovkani to’xtatadi, F10 tugmasi keyingi qatorga yo’naltiriladi.
QPILE yoki LUA?
LUA – bu savdo robotlarini yaratish uchun yangi dasturlash tili. QPILE singari, u QUIK terminalida amalga oshiriladi. https://articles.opexflow.com/programming/lua.htm Savdo uchun savdo robotlarini ishlab chiqishga bag’ishlangan sayt LUA tilining QPILEga nisbatan afzalliklarini ko’rsatadi. Shunday qilib, u kompilyatsiya qilinmagan skript va baytekod sifatida ishlay oladi, ishlab chiquvchi vositalari va ob’ektga yo’naltirilgan dasturlash mexanizmlari bilan jihozlangan. Boshqa dasturlash tillarida yozilgan ob’ektlar LUA dasturlariga ulanishi mumkin. LUA 8 ta ma’lumotlar turini, shu jumladan meta-jadvallarni taqdim etadi. LUA tili ko’p tarmoqli, tezkor, tranzaksiyalar va terminal hodisalari asinxrondir. LUA QPILE ga qaraganda keng tarqalgan va u uchun ko’plab kengaytmalar yozilgan.
QPILE tili endi eskirgan. Forumlardagi mutaxassislar LUA dan foydalanishni tavsiya qiladilar. Foydali va samarali dasturlar hali ham qo’llanilsa-da.
Biroq, QPILE tili LUA bilan solishtirganda sodda, shuning uchun dasturlash bo’yicha tajribangiz bo’lmasa, QPILEni tanlagan ma’qul. Ushbu tilda siz murakkab hisob-kitoblarni bajarishingiz shart bo’lmasa, oddiy robot yozishingiz mumkin.
QPILE da savdo robotini qanday yaratish mumkin?
Savdo maslahatchisini yaratish uchun sizga quyidagi dasturlar kerak bo’ladi:
- ITS Quik.
- Notepad++ kod muharriri.
- QPILE bo’yicha qo’llanma.
- Notepad++ da kodni aniqlash uchun XML plagini.
Ushbu dasturlarni yuklab oling va o’rnating. userDefineLang.xml ni C:\Users\User\ AppData\Roaming\Notepad++\ yo’liga joylashtirish orqali til sintaksisini yoqing.
Birinchidan, keling, quyidagi savdo strategiyasini yarataylik. Skript har daqiqada oxirgi bir necha shamlar uchun Hi va Low ni hisoblashi kerak, asbobning joriy narxini tekshiring. Agar asbobning narxi davr uchun maksimal yoki minimal qiymatga yetsa, kerakli yo’nalishda pozitsiya ochiladi. Qisqa vaqt uchun signal qabul qilinganda, uzun pozitsiya avtomatik ravishda yopiladi. Robot GAZP vositasidan foydalanadi, vaqt oralig’i 1 minutga o’rnatiladi. Yuqori past o’lchov chuqurligi 5 shamga o’rnatiladi. Longni kiritish uchun qoida o’rnatiladi va davr uchun maksimal qiymatning joriy narxining kesishishi. Agar joriy narx ushbu 5 ta sham uchun minimal qiymatdan o’tib ketsa, robot Short-ga kiradi. Notepad++ da asosiy sozlamalar va server sanasi va vaqti bilan kod blokini yozing. Ushbu kod quyidagi rasmda ko’rsatilgan.
Kodning dastlabki 4 qatori dastur sarlavhasini tashkil qiladi. 6 va 44 qatorlar orasida robotning mazmunini o’z ichiga olgan dasturning tanasi joylashgan. 7 – 12 qatorlar foydalanuvchi sozlamalarini o’z ichiga oladi, ularda asbob, guruh va mijoz kodlari, MICX bo’yicha hisob raqami mavjud. Ushbu qiymatlar dasturni bajarish jarayonida o’zgarmaydi. 13 – 16 qatorlar o’zgaruvchilarning boshlang’ich qiymatlari. Har bir iteratsiya o’tishida ular nolga qaytariladi. 17-21-qatorlarda server sanasi va vaqtidan foydalanish ko’rsatmasi mavjud. Ushbu ma’lumotlar DATETIME funksiyasiga uzatiladi va matn formatiga aylantiriladi. 22 – 29 qatorlar olingan ma’lumotlarni jadvalga yuboradi. Kod saqlanishi va qpl kengaytmasi ko’rsatilishi kerak.
Ctrl+F10 tugmalarini bosib, yaratilgan qpl faylini tanlash orqali dasturni QUIK-da oching. Ctrl+F11 kombinatsiyasidan foydalanib, “Portfoliolar bilan ishlash” oynasini oching va portfelni hisoblash davrini 5 daqiqaga belgilang. Jadvalda ko’rsatiladigan ustunlarni o’rnatish uchun Ctrl+F12 tugmalarini bosing. Rasmda robot ishining natijasi ko’rsatilgan.
Keling, dasturimizga yana bir nechta funksiya va shartlarni qo’shamiz.
“Foydalanuvchi sozlamalari” bloki NUMBER va INTERVAL o’zgaruvchilari bilan to’ldiriladi, ular oxirgi N barni olish funktsiyasida qo’llaniladi. DATETIME funksiyasi server sanasi va vaqtini belgilaydi va joriy sana va vaqt funksiyalari CURDATE va CURTIME undan chaqiriladi. Joriy vaqt 24-qatordagi raqamga aylantiriladi. 26-qator algoritmning 10:00:01 dan 18:40:00 UTC gacha ishlash vaqtini belgilaydi.
Ko’pincha indikatorlar, osilatorlar, statistik hisob-kitoblar jadvalning oxirgi N shamlari bilan hisoblanadi. QPILE N davr oldingi shamlar sonini yig’ish funksiyasiga ega emas, lekin GET_CANDLE funksiyasi mavjud bo’lib, u diagrammadagi shamlarga sana va vaqt bo’yicha matn formatida kirish imkonini beradi. Bizning kodimiz OHLC() oxirgi N barni olish funksiyasini o’z ichiga oladi. U COLLECTION ro’yxatiga joylashtirilgan oxirgi shamlarning parametrlari bilan to’plamni yaratadi. Dastur INTERVAL qiymatini tekshiradi va agar u 0…60 oralig’iga tushmasa, qiymat ruxsat etilgan diapazonga mos kelmasligi haqida xabar paydo bo’ladi. Shamlar bilan MAP to’plami 88-qatorda yaratilgan. FOR tsikli diagrammani yangidan eski shamgacha bo’lgan INTERVAL qadam bilan kerakli chuqurlikka so’rov qiladi. 90-qatorda, tsikl e’lon qilingandan so’ng, robot intervalgacha orqaga qaytadi. GET_CANDLE bilan sham olganingizda, INSERT_COLLECTION_TEAM funksiyasidan foydalanib, uni BARLIST to‘plamiga joylashtiring. OHLC() buyrug’ining ishlashi natijasida BARLIST asboblar jadvalidagi so’nggi shamlar bilan NUMBER miqdorida to’ldiriladi. To’plamdagi elementlar soni GET_COLLECTION_COUNT() buyrug’i tomonidan so’raladi va BARCOUNT o’zgaruvchisi tomonidan xabar qilinadi. Server sanasi, vaqti, INSTRUMENT va BARCOUNT oʻzgaruvchilari qiymatlari OUTPUT da SET_VALUE() funksiyasi tomonidan xabar qilinadi. Bu massiv CREATE_MAP() buyrug’i bilan yaratilgan. Ma’lumotlar maxsus jadvalga tushadi, uni quyidagi fotosuratda ko’rish mumkin. INSTRUMENT va BARCOUNT o’zgaruvchilarning qiymatlari OUTPUT da SET_VALUE() funksiyasi tomonidan xabar qilinadi. Bu massiv CREATE_MAP() buyrug’i bilan yaratilgan. Ma’lumotlar maxsus jadvalga tushadi, uni quyidagi fotosuratda ko’rish mumkin. INSTRUMENT va BARCOUNT o’zgaruvchilarning qiymatlari OUTPUT da SET_VALUE() funksiyasi tomonidan xabar qilinadi. Bu massiv CREATE_MAP() buyrug’i bilan yaratilgan. Ma’lumotlar maxsus jadvalga tushadi, uni quyidagi fotosuratda ko’rish mumkin.
QPILE da savdo robotlari – tayyor echimlar
Harakatlanuvchi o’rtacha robot
Demo robot haqiqiy savdo uchun mos emas.
Robot 5 ta parametrni o’z ichiga oladi. DATE, TIME, PRICE identifikatorlari qiymatlari 30-darajaga o’rnatiladi. MOVING va TP identifikatorlari nol aniqlikka o’rnatiladi. QPILE ostida yozilgan harakatlanuvchi o’rtacha robot kodi: [galereya ustunlari=”5″ ids=”14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]
N. Moroshkin pozitsiyasi kalkulyatori
Joriy so’rov va taklif narxlarida uzoq va qisqa pozitsiyalar uchun ruxsat etilgan maksimal tushirish darajasini va maqsadni hisoblash dasturi. Darajalar pozitsiyaga kirish hajmining 2 qiymati uchun hisoblanadi. Barning o’sishi yo’nalishi bo’yicha pozitsiyani ochish hisobi bilan ochilish narxidan bir qadamda to’xtash tartibini belgilashda robot ruxsat etilgan pozitsiya hajmini topadi. Topilgan darajalar terminal oynasiga kiritiladi, ular keyinchalik narxlar jadvalida aks ettiriladi. Bitimlar ma’lum bir vosita uchun belgilanadi. Agar pozitsiya ochilsa, robot o’z parametrlarini hisoblashni boshlaydi. Lavozimning o’zgarishiga qarab, tayinlangan buyurtmalar o’rnatiladi.
Ovoz filtri
Shamlar uchun hajmning o’rtacha arifmetik qiymatini hisoblash va uni X koeffitsienti bo’yicha o’rtacha mahsulot bilan taqqoslash uchun portfel roboti Tanlangan vaqt oralig’ida chizilgan diagrammalar bilan to’g’ri ishlaydi.
Variantlar yunonlar
Variantlarning “yunonchalarini” hisoblash va ko’rsatish uchun portfel. U Black-Showers usulidan farq qiladi.
QUIK uchun TRIX savdo roboti
Dastur TRIX indikatoriga asoslangan. Ko’rsatkich nol chizig’idan, belgilangan darajadan yuqori yopilganda, robot Uzoq pozitsiyani egallaydi. Pozitsiya Take Profit, Stop Loss yoki treiling stop bilan yopiladi.
M4 protsessor
QPILE va Lua bilan ishlash dasturi. Muntazam ifodalarni tahlil qilish bilan bajariladigan fayllar, hujjatlar va DLL fayllari bo’lgan arxivlarni o’z ichiga oladi. Dasturdan foydalanish uchun siz bajariladigan fayllarni ochishingiz va regexp2 ni C:\Windows yo’liga joylashtirishingiz kerak. QUIK uchun QPILE bo’yicha darslar: https://youtu.be/vMTXwDUujpI Quik terminalida QPILE-ga skriptni o’rnatish: https://youtu.be/0B7qL8Svh7I Github-da QPILE algoritmik tilidan foydalanishni tavsiflovchi bo’lim. QUIK tizimi ish stantsiyasi havolada joylashgan – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE – bu eskirgan til, lekin juda sodda va hatto boshlang’ich treyderlar uchun ham ochiq. Savdo robotlari va o’zini uzoq vaqt davomida isbotlagan dasturlar bu borada ishlashda davom etmoqda. Biroq, murakkabroq vazifalar uchun LUA dan foydalanish yaxshiroqdir.
0к