Dalam artikel sebelumnya, kita telah belajar bahwa yang disebut programmatic dan kuantitative trading adalah program skrip berdasarkan data yang diperoleh dari bursa melalui serangkaian perhitungan, penilaian, dan pemicu untuk melakukan beberapa operasi, dan mengoperasikan akun bursa untuk berdagang. Tindakan ini memperoleh data dan operasi akun semua dilakukan melalui antarmuka API bursa. Sederhananya, program skrip berinteraksi dengan bursa. Karena ini adalah interaksi, harus ada interaksi normal dan interaksi abnormal. Ketika interaksi abnormal terjadi, antarmuka mengembalikan pesan pengecualian.
Tentu saja, ada semua jenis perintah kesalahan dan pesan kesalahan dalam sistem perdagangan programmatic dan kuantitatif di pasar, atau dalam program yang dikembangkan oleh diri kita sendiri. Pesan kesalahan ini tidak terbatas pada pesan kesalahan yang dilaporkan oleh antarmuka API pertukaran. Ada juga kesalahan pengecualian program runtime, kesalahan konfigurasi, kesalahan tata bahasa program dan sebagainya.
Pesan kesalahan di Platform Perdagangan Kuantitatif FMZ juga terbagi dalam beberapa kategori:
Kesalahan tata bahasa strategi Jenis kesalahan ini adalah yang paling umum, karena pemula tidak terbiasa dengan pemrograman, dan ada kesalahan tata bahasa dalam menulis kode selama tahap pembelajaran dan pengujian.
Kode ini telah melewatkan karakter seperti tanda kurung. Kesalahan tersebut biasanya dapat dilihat pada halaman pengeditan strategi, dan strategi tidak dapat dijalankan (kesalahan akan dilaporkan langsung pada saat runtime, seperti yang ditunjukkan pada gambar di bawah ini).
Jadi setelah menulis strategi, lihatlah halaman pengeditan strategi platform untuk melihat apakah ada XX merah, jika demikian, pasti ada kesalahan yang jelas.
Pengecualian program runtime yang disebabkan oleh program strategi BUG Ada bug dalam program. Saat program berjalan, memicu pengecualian akan menyebabkan program berhenti secara abnormal dan menampilkan pesan kesalahan tersebut.
Kesalahan seperti itu akan menyebabkan program menjadi abnormal dan program akan berhenti berjalan.
Kesalahan yang disebabkan oleh konfigurasi dan pengaturan yang tidak benar
Di platform FMZ, pasangan perdagangan didefinisikan secara seragam dalam formatX_Y
, di mana X mewakili nama mata uang perdagangan, dan Y mewakili nama mata uang denominasi (mata uang denominasi pasangan perdagangan kontrak berjangka berbasis mata uang biasanya dinyatakan dalam USD, seperti yang dijelaskan dalam artikel sebelumnya), sepertiBTC_USDT
, jika saya menulis pasangan perdagangan secara acak, menulisnya sebagaiBTC-USDT
.
Sebuah kesalahan dilaporkan pada sistem backtesting platform FMZ:
Selain itu, kesalahan yang sering dialami pemula:
Jenis kesalahan ini disebabkan oleh modifikasi kata sandi di akun platform FMZ, yang mengakibatkan pembatalanAPI KEY
dalam objek pertukaran yang dikonfigurasi (API KEY pengguna dikonfigurasi di platform FMZ setelah dienkripsi di browser), dan strategi tidak dapat dimulai, sehingga kesalahan dilaporkan.
Kesalahan dilaporkan dalam panggilan antarmuka
Kesalahan panggilan antarmuka sering terjadi saat menjalankan strategi.antarmuka yang menghasilkan permintaan jaringandanantarmuka yang tidak menghasilkan permintaan jaringan. Kesalahan antarmuka tidak akan menyebabkan program strategi berhenti, biasanya karena pengecualian panggilan antarmuka dan data yang salah dikembalikan, strategi tidak membuat toleransi kesalahan, dan kesalahan pengecualian program yang disebabkan oleh data yang salah menyebabkan program berhenti (konsep toleransi kesalahan yang disebutkan dalam artikel sebelumnya).
Berikut adalah beberapa pesan kesalahan antarmuka yang menghasilkan permintaan jaringan:
Jangka waktu jaringan
Salah satu pesan kesalahan yang sering ditemui oleh pemula adalah penggunaan peralatan jaringan domestik (komputer mereka sendiri atau server domestik).
Kesalahan http 429
Salah satu pesan kesalahan klasik adalah bahwa antarmuka pertukaran dipanggil terlalu sering, melebihi batas frekuensi pertukaran (dicatat dalam artikel sebelumnya).
Beberapa pemula mungkin mengatakan bahwa saya ingin mengajukan permohonan untukAPI KEY
kita perlu tahu bahwa frekuensi batas akses antarmuka oleh pertukaran biasanya didasarkan pada alamat IP. dengan kata sederhana, selama semua permintaan yang dikirim ke alamat IP dihitung pada alamat IP ini, server pertukaran akan menolak akses jika permintaan melebihi batas.
Pelaporan kesalahan pada bisnis antarmuka pertukaran
Timeout dan 429 yang disebutkan di atas adalah kesalahan jaringan. Jika ada masalah pada bisnis antarmuka pertukaran, kesalahan juga akan dilaporkan. Misalnya, jika saya ingin mendapatkan harga pasar spot, tetapi saya mengatur pasangan perdagangan yang tidak ada. Saya mengujinya di alat debugging platform FMZ, alat debugging adalah alat pengujian yang sangat nyaman, yang sangat cocok untuk pengujian bot nyata panggilan fungsi dan akuisisi data.
Hasil eksekusi alat debugging, tidak ada perbedaan antara eksekusi alat debugging dan eksekusi bot nyata.
Huobi error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
Pesan kesalahan di sini berarti bahwa pasangan perdagangan tidak valid (seperti yang terlihat di sini)"err-msg":"invalid symbol"
)).
Misalnya, ada banyak kesalahan terkait bisnis, seperti pengaturan leverage ketika beberapa bursa tidak mendukung nilai leverage dengan bagian desimal, pada saat ini, jika nilai leverage memiliki bagian desimal, itu juga akan menyebabkan kesalahan dalam panggilan antarmuka.
Daftar panggilan antarmuka yang tidak menghasilkan permintaan jaringan
Kode kontrak berjangka Beberapa antarmuka hanya mengatur beberapa variabel global dalam sistem dan tidak menghasilkan permintaan jaringan, misalnya:
Namun, jika parameter dilewatkan dengan salah atau digarisbawahi, kesalahan akan dilaporkan.
Tapi terlepas dari jenis kesalahan, pesan kesalahan yang ditampilkan adalah informasi kunci untuk menemukan masalah, dan masalah biasanya dapat dilihat dari pesan kesalahan. Anda dapat menggunakan alat terjemahan untuk menerjemahkan pesan kesalahan dan mengekstrak informasi kunci."err-msg":"invalid symbol"
In the above example, the translation is:
Sistem backtesting juga menjadi fokus dari alat kuantitatif. Sistem backtesting dapat menguji prototipe strategi dengan mudah, bug potensial dan masalah logis dalam strategi uji awal. Sistem backtesting perlu dilihat secara rasional. Sistem backtesting dapat mencerminkan beberapa masalah strategi sampai batas tertentu.
Berikut ini adalah deskripsi singkat dari sistem backtesting pada platform FMZ dari tingkat bahasa strategi yang berbeda yang didukung oleh FMZ. (Beberapa pengenalan sistem backtesting disebutkan dalam artikel sebelumnya)
JavaScript
Backtesting di browser menggunakan sumber daya hardware asli.
Python
Ketika melakukan backtesting pada docker, Anda dapat memilih docker mana yang akan ditugaskan (baik docker yang digunakan oleh diri Anda sendiri, atau docker publik pada platform FMZ). Mengingat beban besar custodian publik pada platform FMZ, disarankan untuk menggunakan docker lokal untuk backtesting (ini juga akan cepat, ketika docker publik melakukan backtesting, jika tugas melebihi beban, beberapa tugas backtesting akan dibatalkan, mengakibatkan gangguan backtesting).
C++
Tidak seperti bahasa skrip, strategi bahasa C++ perlu dikompilasi dan kemudian dieksekusi. Strategi bahasa C++ akan dikompilasi terlebih dahulu di platform FMZ (server) (jika ada masalah dengan kode, kompilasi mungkin tidak lulus, dan pesan kesalahan akan muncul langsung). Setelah kompilasi dilewati, itu akan diuji kembali di platform FMZ (server).
MyLanguage
Implementasi yang mendasari adalah JavaScript, dan backtesting juga dilakukan di browser.
Visualisasi
Implementasi yang mendasari adalah JavaScript, dan backtesting juga dilakukan di browser.
Sistem backtesting di Platform Perdagangan Kuantum FMZ dibagi menjadi dua mode backtesting (ini terlepas dari bahasa strategi, ini adalah pengaturan backtesting, dan backtesting strategi dalam semua bahasa adalah sama).
A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
Ini seperti simulasi seperti ini:https://www.fmz.comTentu saja, ketika sistem backtesting yang sebenarnya menerapkan simulasi ini, situasinya sedikit lebih rumit daripada yang ditunjukkan pada gambar. Mengetahui prinsip ini, penting untuk mencatat kelemahan backtesting tingkat simulasi, meskipun backtesting tingkat simulasi sangat cepat (karena harga yang dihasilkan oleh simulasi bukan harga nyata detik demi detik yang dirilis satu per satu).tren gerakan kutu simulasi, strategi akan bekerja dengan sangat baik (tetapi dalam kenyataannya, harga mungkin tidak tren ini, meskipun harga berada dalam kerangka K-line bar ini). Garis K yang digunakan untuk menghasilkan data tick simulasi di sini disebut garis K bawah, dan periode garis K ini disebutperiode garis K bawah, yang ditetapkan seperti yang ditunjukkan pada halaman pengaturan strategi:
Pengaturan 1 menit di sini berarti bahwa data garis K dengan periode 1 menit digunakan sebagai sumber data untuk menghasilkan tik simulasi.
Titik lain adalah bahwa untuk strategi frekuensi tinggi, jelas tidak tepat untuk menggunakan backtesting tingkat simulasi. Namun, untuk strategi tren, penggunaan backtesting tingkat simulasi masih dapat mencerminkan kinerja strategi sampai batas tertentu.
Di mana sumber data dari sistem backtesting FMZ Quant Trading Platform? Sistem backtesting menggunakan data dari pusat data platform FMZ secara default. Pusat data platform FMZ mengumpulkan data pasar yang ditetapkan dari setiap mata uang dari setiap bursa secara otomatis dan memasoknya ke sistem backtesting di platform.
Ada juga beberapa catatan tentang sumber data kustom dalam dokumentasi FMZ API:https://www.fmz.com/api#custom-data-source
Anda tidak bisa melakukan programmatic dan kuantitative trading tanpabelajar, pengujian, danberpikirAku tidak tahu. Berpikir tentang masalah tidak bisa dipikirkan sia-sia, itu tidak efisien.menemukan informasi, makaCobalah, berpikir dan menganalisis, jika masalah tidak teratasi, silakan ulangi tindakan di atas.
Tetapi, ketika seorang pemula menghadapi masalah, ia akan merasa:
Oops~ itu terlalu sulit untuk memprogram, mengukur, dan menulis strategi . Setelah menontonnya untuk waktu yang lama, aku masih tercengang! Aku ingin menyerah sebelum aku mulai! ... Aku tidak tahu.
Memulai di platform FMZ sangat sederhana sebenarnya. Pertama-tama, Anda harus pandai mencari informasi. Ada banyak informasi yang tersedia di kotak strategi, komunitas dan perpustakaan FMZ Quant Trading Platform.
Yang kedua adalah kemampuan hands-on, yang dapat dengan mudah diuji dengan menggunakan sistem backtesting dan alat debugging. Ini tidak berarti menguji strategi lengkap. Bahkan, Anda bahkan dapat mempelajari dasar-dasar program JavaScript pada sistem backtesting FMZ Quant jika Anda benar-benar dasar.
Ini adalah situs web tutorial di mana saya sering belajar JS:https://www.runoob.com/js/js-loop-for.html, tidak terbatas pada JS, semua jenis pengetahuan IT dapat ditanyakan dan dipelajari di sini. Misalnya, saya tidak tahu cara menggunakan ekspresi reguler dari JS, apa yang harus saya lakukan? Tentu saja, mencari informasi pertama, dan kemudian mencoba untuk melakukannya ~
Aku melihat contoh ini:Saya ingin mengujinya, dan saya bisa menggunakan sistem backtesting dari platform FMZ untuk menguji dan belajar.
Atur pertukaran acak pada sistem backtesting
Uji kode berikut:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}
Lihat ~ apa alat pembelajaran! Sebagai contoh, saya ingin belajar bagaimana menulis logika loop dari bahasa JavaScript, dan mencobanya:
Loop melalui elemen dari variabel array dalam urutan di mana mereka muncul di array:
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}
Apakah Anda merasa termotivasi untuk belajar dalam sekejap? Bahkan, di FMZ, Anda dapat mempelajari dasar-dasar JavaScript pada sistem backtesting sambil menonton tutorial JavaScript. Grammar JavaScript hampir dikuasai, dan memasuki tahap berikutnya, Anda perlu menggunakan antarmuka pertukaran untuk mendapatkan pengujian data. Anda juga dapat menggunakanalat debuggingdari platform FMZ untuk melakukan pengujian antarmuka nyata.
Kemudian adalah untuk berpikir lebih banyak, menarik kesimpulan dari satu kasus, verifikasi tes, analisis komparatif, dll. Ini membuat belajar untuk memulai sangat cepat.