Bahasa algoritmik QPILE untuk memprogram robot perdagangan untuk QUIK.
Robot perdagangan dapat ditulis dalam bahasa tertentu, mirip dengan kode program. QPILE adalah salah satunya, artikel ini akan mempertimbangkan bahasa ini, membandingkan bahasa QPILE dan
LUA , dan juga memberikan contoh robot dalam bahasa ini.
- Informasi umum tentang QPILE
- Bekerja dengan meja
- konstruksi QPILE
- Tipe data
- Ekspresi
- Fungsi
- Program debug
- QPILE atau LUA?
- Bagaimana cara membuat robot trading di QPILE?
- Trading robot di QPILE – solusi siap pakai
- Robot rata-rata bergerak
- Kalkulator posisi N. Moroshkin
- Filter volume
- Pilihan Yunani
- Robot perdagangan TRIX untuk QUIK
- praprosesor M4
Informasi umum tentang QPILE
QPILE adalah singkatan dari QUIK Programmable Interface and Logic Environment.
Ini adalah serangkaian perintah yang ditafsirkan oleh workstation QUIK. Ini terutama digunakan untuk menghitung harga portofolio sekuritas. Bahasa ini juga digunakan untuk:
- perhitungan ulang dinamis dari harga aset klien di desktop broker dan di portofolio mereka. Dalam kasus terakhir, harga totalnya juga dihitung ulang;
- menemukan indikator yang hilang menggunakan algoritma dan data mereka sendiri untuk pinjaman margin;
- mengembangkan strategi perdagangan yang tepat.
Bahasa menggambarkan struktur tabel: penunjukan kolom dan baris, rumus. Dalam yang terakhir, operasi matematika, variabel, data dari tabel lain dapat digunakan untuk perhitungan. Kode program yang dimuat dari server QUIK atau dari disk pengguna diproses oleh penerjemah bahasa, yang menghitung nilai dalam rumus. Tabel satu program memiliki satu sumber data, tetapi perhitungannya tidak digandakan dan tidak mempengaruhi efisiensi sistem. Saat bekerja dengan tabel QUIK, tabel pada QPILE memiliki fungsi standar. QUIK di tempat kerja dilengkapi dengan debugger kode QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Bahasa ini memungkinkan Anda untuk mendeskripsikan tabel baru dengan struktur tertentu, menyorot sel dengan nilai tertentu, menghitung bidang berdasarkan ekspresi matematika dan logika. Pengguna akan menerima notifikasi berupa sinyal suara atau pesan teks. Tabel di QPILE dapat diedit, dicetak, disalin, diekspor melalui server ODBC dan DDE. Data awal berasal dari tabel QUIK:
- transaksi, termasuk untuk eksekusi dan impersonal;
- pesanan, termasuk stop order, untuk perdagangan over-the-counter dan pesanan – laporan untuk perdagangan dalam kesepakatan penyelesaian;
- “portofolio klien”, “beli/jual”
- data dari posisi peserta dengan uang, akun perdagangan, instrumen.
Tabel berdasarkan QPILE tidak dapat disalin ke file teks melalui menu konteks dan diekspor ke sistem analisis teknis, dan bagan tidak dapat dikembangkan berdasarkan tabel tersebut. Tabel berbasis QPILE tidak dapat difilter atau diurutkan.
Bekerja dengan meja
Untuk memuat kode program, Anda harus memilih menu layanan, lalu skrip QPILE. Anda juga dapat menggunakan kombinasi Ctrl+F11. Setelah Anda perlu mengklik “Tambah” dan pilih file yang diinginkan. Ini memiliki ekstensi .qpl dan namanya akan muncul di daftar Skrip yang Tersedia.
Jika ada kesalahan dalam program, sistem akan membuat pemberitahuan di “Jendela Pesan”, yang akan berisi nama file yang rusak dan nomor baris dengan kesalahan. Jika tidak ada kegagalan yang ditemukan dalam file, data berikut akan ditunjukkan di bidang:
- nama tabel;
- jumlah kolom dan klien;
- daftar pengidentifikasi dan klien;
- daftar parameter dan kode sumber file.
Tombol “Unduh secara lokal” akan memungkinkan Anda untuk mendapatkan tabel dari file, dan “Unggah ke server” akan mengirim program ke server sehingga semua pengguna dapat mengaksesnya. Untuk membuat tabel, klik Buat Tabel. Di “Skrip yang tersedia” pilih program yang perlu Anda jalankan, atur jumlah baris melalui “Filter klien”, tentukan kolom yang diperlukan dan urutannya.
Menjeda dan melanjutkan penghitungan, memulai penghitungan lagi dan dalam mode debug, menyimpan deskripsi ke file, mendemonstrasikan rumus, dan parameter skrip tersedia di menu konteks.
konstruksi QPILE
Tipe data
- Tali – tali.
- Ganda adalah angka floating point.
- Koleksi – koleksi.
- Peta – array asosiatif – urutan pasangan yang memungkinkan Anda mendapatkan informasi dengan kunci.
Ekspresi
Operasi aritmatika penambahan, pengurangan, perkalian, pembagian diterapkan. Ekspresi logis “dan”, “atau”, sama dengan, lebih banyak, lebih sedikit, ketidaksetaraan, konstruksi bersyarat “jika … maka …” juga digunakan.
Fungsi
Fungsi dapat ditempatkan di mana saja dalam program dan memiliki nama yang berbeda. Secara total, 18 kelompok fungsi dan fungsi matematika tersedia untuk mendapatkan nilai tabel dan parameter, array asosiatif, daftar tabel, dan tugas lainnya. Kelas satu:
- Fungsi matematika yang memungkinkan Anda mengembalikan nilai sinus, kosinus, tangen, kotangen argumen, menghitung eksponen argumen, menghasilkan angka acak, dll.
- Perintah umum : NEW_GLOBAL untuk menginisialisasi variabel global dan MESSAGE untuk membuka pesan.
Fungsi untuk bekerja dengan:
- Koleksi benda (Collection) . Mereka memungkinkan Anda untuk membuat koleksi baru, mengembalikan jumlah elemen yang diperlukan, mengganti atau memasukkan nilai yang diinginkan.
- Array Asosiatif (MAP) . Bantuan untuk membuat dan mengelola array.
- File – bekerja dengan file teks, memelihara log-log program. Nama file mungkin berisi jalur ke sana.
- String .
- Grafik . Fungsi GET_CANDLE untuk mengakses data candle dan GET_CANDLE EX untuk mengembalikan array asosiatif.
- Aplikasi . Membuat pesanan dan mengirimkannya ke sistem perdagangan.
- Tag . Konstruksi dan pemasangannya pada grafik. Menambah, menghapus satu atau semua label, mendapatkan dan mengatur parameter untuk label tertentu.
Ada juga fungsi untuk:
- Untuk mengakses baris tabel QUIK arbitrer dan daftar parameter yang tersedia . Akses ke data tabel tempat kerja. Ini termasuk GET_ITEM untuk mengembalikan MAP dan GET_NUMBER_OF untuk mengembalikan jumlah entri.
- Untuk bekerja dengan tabel yang dapat diprogram . Perintah-perintah ini beroperasi pada tabel SENDIRI. Itu dapat dibaca oleh fungsi standar dari paragraf sebelumnya dan oleh fungsi-fungsi ini. Grup ini mencakup perintah untuk menambah, mengubah, dan menghapus baris dengan indeks, dan menghapus tabel SENDIRI sepenuhnya.
Untuk mendapatkan nilai gunakan:
- Tabel perdagangan saat ini . Mendapatkan parameter pertukaran informasi menggunakan perintah GET_PARAM (_EX).
- Jendela kutipan . Memperoleh nilai kutipan instrumen.
- Tabel posisi berdasarkan instrumen dan uang . Memperoleh data tentang klien, firma, instrumen, akun depo dengan kode.
Fungsi layanan – mengembalikan tanggal sesi perdagangan saat ini, seri asosiatif, tanggal dan waktu saat ini, menentukan status koneksi, mengganggu mode perhitungan.
Program debug
Kontrol langkah demi langkah atas pengoperasian program dilakukan di jendela “Debug”. Itu dibuka dari menu konteks “Mulai perhitungan dalam mode debug”. Itu juga dapat dibuka dengan perintah breakpoint(), dan baris program akan disorot dengan warna merah. Jendela berisi bidang dengan kode program dan nilai variabel. Di bagian bawah jendela ada tombol “Langkah berikutnya”, “Lanjutkan eksekusi”, “Hentikan perhitungan”. Menekan F5 akan melanjutkan eksekusi program, kombinasi Shift + F5 akan menghentikan debugging, tombol F10 akan mengarahkan ke baris berikutnya.
QPILE atau LUA?
LUA adalah bahasa pemrograman baru untuk membuat robot perdagangan. Seperti QPILE, ini diimplementasikan di terminal QUIK. https://articles.opexflow.com/programming/lua.htm Situs yang didedikasikan untuk pengembangan robot perdagangan untuk perdagangan menunjukkan keunggulan bahasa LUA dibandingkan QPILE. Jadi, dapat berfungsi sebagai skrip dan bytecode yang tidak dikompilasi, dilengkapi dengan alat pengembang dan mekanisme pemrograman berorientasi objek. Objek yang ditulis dalam bahasa pemrograman lain dapat dihubungkan ke program LUA. LUA menyediakan 8 tipe data, termasuk metatables. Bahasa LUA multi-threaded, cepat, dan transaksi serta kejadian terminal tidak sinkron. LUA lebih umum daripada QPILE, dan banyak ekstensi telah ditulis untuk itu.
Bahasa QPILE sekarang tidak digunakan lagi. Para ahli di forum merekomendasikan penggunaan LUA. Meskipun program yang bermanfaat dan efektif masih digunakan.
Namun, bahasa QPILE lebih sederhana dibandingkan dengan LUA, jadi jika Anda tidak memiliki pengalaman dalam pemrograman, lebih baik memilih QPILE. Dalam bahasa ini, Anda dapat menulis robot sederhana jika Anda tidak perlu melakukan perhitungan yang rumit.
Bagaimana cara membuat robot trading di QPILE?
Untuk membuat penasihat perdagangan, Anda memerlukan program berikut:
- ITS.
- Editor kode Notepad++.
- Panduan untuk QPILE.
- Plugin XML untuk deteksi kode di Notepad++.
Unduh dan instal program-program ini. Aktifkan sintaks bahasa dengan menempatkan userDefineLang.xml di jalur C:\Users\User\ AppData\Roaming\Notepad++\
Pertama, mari kita buat strategi trading berikut. Script harus menghitung Hi dan Low untuk beberapa lilin terakhir setiap menit, periksa harga instrumen saat ini. Sebuah posisi dibuka ke arah yang diperlukan jika harga instrumen mencapai nilai maksimum atau minimum untuk periode tersebut. Ketika sinyal short diterima, posisi long secara otomatis ditutup. Robot menggunakan alat GAZP, kerangka waktu diatur ke 1 menit. Kedalaman pengukuran hi-rendah diatur ke 5 lilin. Untuk memasukkan Long, aturan ditetapkan dan persimpangan harga saat ini dari nilai maksimum untuk periode tersebut. Robot akan masuk Short jika harga saat ini melewati nilai minimum untuk 5 candle ini. Tulis blok kode di Notepad++ dengan pengaturan dasar dan tanggal dan waktu server. Kode ini ditunjukkan pada gambar di bawah ini.
4 baris kode pertama membentuk header program. Antara baris 6 dan 44 adalah isi program, yang berisi konten robot. Baris 7 – 12 berisi pengaturan pengguna, yang mencakup kode instrumen, grup dan klien, nomor akun di MICEX. Nilai-nilai ini tidak berubah selama eksekusi program. Baris 13 – 16 adalah nilai awal variabel. Mereka akan diatur ulang ke nol pada setiap lintasan iterasi. Baris 17 – 21 berisi indikasi untuk menggunakan tanggal dan waktu server. Data ini diteruskan ke fungsi DATETIME dan dikonversi ke format teks. Baris 22 – 29 mengirim data yang diterima ke tabel. Kode harus disimpan dan ekstensi qpl harus ditentukan.
Buka program di QUIK dengan menekan Ctrl+F10 dan memilih file qpl yang dihasilkan. Gunakan kombinasi Ctrl+F11 untuk membuka jendela “Bekerja dengan Portofolio” dan atur periode penghitungan portofolio menjadi 5 menit. Tekan Ctrl+F12 untuk mengatur kolom yang akan ditampilkan dalam tabel. Gambar tersebut menunjukkan hasil kerja robot tersebut.
Mari tambahkan beberapa fungsi dan kondisi lagi ke program kita.
Blok “Pengaturan pengguna” dilengkapi dengan variabel NOMOR dan INTERVAL, yang akan digunakan dalam fungsi memperoleh N batang terakhir. Fungsi DATETIME menetapkan tanggal dan waktu server, dan fungsi tanggal dan waktu saat ini CURDATE dan CURTIME dipanggil darinya. Waktu saat ini diubah menjadi angka pada baris 24. Baris 26 mengatur waktu untuk algoritme berjalan dari 10:00:01 hingga 18:40:00 UTC.
Paling sering, indikator, osilator, perhitungan statistik dihitung oleh N candle terakhir dari grafik. QPILE tidak memiliki fungsi untuk mengumpulkan jumlah lilin N periode yang lalu, tetapi ada fungsi GET_CANDLE yang mengakses lilin pada grafik berdasarkan tanggal dan waktu dalam format teks. Kode kami berisi fungsi untuk mendapatkan N bar terakhir OHLC(). Ini membuat koleksi dengan parameter lilin terakhir yang bersarang di daftar KOLEKSI. Program memeriksa nilai INTERVAL, dan jika tidak termasuk dalam rentang 0…60, sebuah pesan ditampilkan bahwa nilai tersebut tidak sesuai dengan rentang yang diizinkan. Kumpulan MAP dengan candle dibuat pada baris 88. A FOR loop polling grafik ke kedalaman yang diperlukan dengan langkah INTERVAL dari candle baru ke candle lama. Pada baris 90, setelah siklus dideklarasikan, robot mundur satu interval. Saat Anda mendapatkan lilin dengan GET_CANDLE, letakkan di koleksi BARLIST menggunakan fungsi INSERT_COLLECTION_TEAM. Sebagai hasil dari pengoperasian perintah OHLC(), BARLIST diisi ulang dengan lilin terakhir dari grafik instrumen dalam jumlah NUMBER. Jumlah elemen dalam koleksi diminta oleh perintah GET_COLLECTION_COUNT() dan dilaporkan oleh variabel BARCOUNT. Tanggal server, waktu, nilai variabel INSTRUMENT dan BARCOUNT dilaporkan oleh fungsi SET_VALUE() di OUTPUT. Array ini dibuat oleh perintah CREATE_MAP(). Data jatuh ke tabel kustom, yang dapat dilihat pada foto di bawah ini. nilai variabel INSTRUMENT dan BARCOUNT dilaporkan oleh fungsi SET_VALUE() di OUTPUT. Array ini dibuat oleh perintah CREATE_MAP(). Data jatuh ke tabel kustom, yang dapat dilihat pada foto di bawah ini. nilai variabel INSTRUMENT dan BARCOUNT dilaporkan oleh fungsi SET_VALUE() di OUTPUT. Array ini dibuat oleh perintah CREATE_MAP(). Data jatuh ke tabel kustom, yang dapat dilihat pada foto di bawah ini.
Trading robot di QPILE – solusi siap pakai
Robot rata-rata bergerak
Robot demo tidak cocok untuk perdagangan nyata.
Robot mencakup 5 parameter. Nilai pengenal DATE, TIME, PRICE diatur ke level 30. Pengenal MOVING dan TP disetel ke presisi nol. Kode robot pada rata-rata bergerak yang ditulis di bawah QPILE: [kolom galeri=”5″ ids=”14896.14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907″]
Kalkulator posisi N. Moroshkin
Program untuk menghitung tingkat penarikan maksimum yang diizinkan dan target untuk posisi long dan short pada harga ask dan bid saat ini. Level dihitung untuk 2 nilai volume entri posisi. Robot menemukan volume posisi yang diizinkan saat menetapkan stop order dalam satu langkah dari harga pembukaan dengan perhitungan pembukaan posisi ke arah pertumbuhan batang. Level yang ditemukan dimasukkan ke jendela terminal, yang kemudian tercermin dalam grafik harga. Transaksi ditetapkan untuk instrumen tertentu. Jika posisi dibuka, robot mulai menghitung parameternya. Bergantung pada perubahan posisi, pesanan yang ditetapkan akan disesuaikan.
Filter volume
Robot portofolio untuk menghitung rata-rata aritmatika volume lilin dan membandingkannya dengan produk rata-rata dengan koefisien X. Bekerja dengan benar dengan grafik yang diplot dalam periode waktu yang dipilih.
Pilihan Yunani
Portofolio untuk menghitung dan menampilkan opsi “Yunani”. Ini berbeda dari metode Black-Showers.
Robot perdagangan TRIX untuk QUIK
Program ini didasarkan pada Indikator TRIX. Ketika indikator menutup di atas garis nol, level yang ditentukan, robot mengambil posisi Long. Posisi ditutup dengan Take Profit, Stop Loss atau trailing stop.
praprosesor M4
Program untuk bekerja dengan QPILE dan Lua. Termasuk arsip dengan file yang dapat dieksekusi, dokumentasi, dan file DLL dengan penguraian ekspresi reguler. Untuk menggunakan program ini, Anda perlu membongkar file yang dapat dieksekusi dan menempatkan regexp2 di jalur C:\Windows. Pelajaran tentang QPILE untuk QUIK: https://youtu.be/vMTXwDUujpI Memasang skrip pada QPILE di terminal Quik: https://youtu.be/0B7qL8Svh7I Bagian di github yang menjelaskan penggunaan bahasa algoritme QPILE yang ada di dalam Stasiun kerja sistem QUIK terletak di tautan – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE adalah bahasa yang ketinggalan zaman, tetapi cukup sederhana dan dapat diakses bahkan oleh pedagang pemula. Robot perdagangan dan program yang telah terbukti sejak lama terus bekerja di dalamnya. Namun, untuk tugas yang lebih kompleks lebih baik menggunakan LUA.
0к