Dalam artikel sebelumnya, kita telah belajar bahwa yang disebut program dan kuantitatif perdagangan adalah program skrip berdasarkan data yang diperoleh dari platform, setelah serangkaian perhitungan, penilaian, dan pemicu untuk melakukan beberapa operasi, dan mengoperasikan akun platform untuk perdagangan. Tindakan ini memperoleh data dan akun operasi semua dilakukan melalui antarmuka API platform. Sederhananya, program skrip berinteraksi dengan platform. Karena ini adalah interaksi, harus ada interaksi normal dan interaksi abnormal. Ketika interaksi abnormal terjadi, antarmuka mengembalikan informasi pengecualian.
Tentu saja, sistem perdagangan terprogram dan kuantitatif di pasar atau program yang dikembangkan sendiri akan memiliki berbagai perintah dan pesan kesalahan. Pesan kesalahan ini tidak terbatas pada pesan kesalahan yang dilaporkan oleh API platform. Ada juga kesalahan lain, seperti: kesalahan pengecualian program selama operasi, kesalahan konfigurasi, kesalahan sintaksis program dan sebagainya.
Pada FMZ Quant Trading Platform, pesan kesalahan dapat dibagi dalam beberapa kategori:
Kesalahan sintaks strategi Kesalahan semacam ini adalah kesalahan yang paling umum, yang biasanya disebabkan oleh situasi bahwa pemula tidak akrab dengan pemrograman, dan kode mereka menulis selama belajar memiliki kesalahan sintaksis.
Kode ini ditulis tanpa karakter seperti tanda kurung. Untuk jenis kesalahan ini, prompt kesalahan biasanya dapat dilihat di halaman pengeditan strategi, dan dalam keadaan tersebut, strategi tidak dapat dijalankan (setelah strategi dijalankan, akan ada kesalahan yang dilaporkan, seperti yang ditunjukkan pada gambar).
Oleh karena itu, Anda dapat membuat kebiasaan untuk memiliki sekilas dari halaman strategi pengeditan setelah selesai menulis kode, untuk melihat apakah ada sedikit salib merah; jika ada satu, itu berarti pasti ada kesalahan yang jelas.
Pengecualian program selama operasi yang disebabkan oleh program strategi BUG Jika program memiliki bug selama operasinya, pemicu pengecualian akan membuat program berhenti secara abnormal, dan jenis pesan kesalahan ini akan ditampilkan.
Kesalahan semacam ini semua dapat menyebabkan program pengecualian, dan menghentikan program dari berjalan.
Kesalahan yang disebabkan oleh konfigurasi & pengaturan yang tidak benar
Di platform FMZ, semua pasangan perdagangan didefinisikan dalam bentukX_Y
, di mana BTC_USDT
; misalkan saya menulisnya salah, saya menulisnya keBTC-USDT
.
Pelaporan kesalahan dalam sistem backtest pada platform FMZ:
Pelaporan kesalahan di bot:
Atau, kesalahan yang paling umum yang sering dihadapi pemula:
Kesalahan semacam ini disebabkan oleh pembatalanAPI KEY
dalam objek pertukaran yang dikonfigurasi setelah modifikasi kata sandi akun FMZ (KEY API pengguna semuanya dienkripsi oleh browser dan dikonfigurasi di platform FMZ). Itu akan membuat strategi tidak dapat dimulai, yang akan menyebabkan kesalahan dilaporkan.
Kesalahan yang disebabkan oleh antarmuka panggilan
Kesalahan panggilan antarmuka sering terjadi saat menjalankan strategi. Dalam artikel sebelumnya kami telah mempelajari dan belajar bahwa antarmuka pada platform FMZ dibagi menjadiantarmuka yang membuat permintaan jaringandanantarmuka yang tidak membuat permintaan jaringan. Kesalahan antarmuka tidak akan langsung menyebabkan program strategi berhenti. Biasanya, karena pengecualian panggilan antarmuka, data yang salah dikembalikan, dan strategi tidak melakukan toleransi kesalahan. Kemudian, kesalahan pengecualian program yang disebabkan oleh data yang salah membuat program berhenti (konsep toleransi kesalahan sudah diperkenalkan dalam artikel sebelumnya).
Di sini saya daftar beberapa pesan kesalahan dari antarmuka yang membuat permintaan jaringan:
Jangka waktu jaringan
Salah satu pesan kesalahan yang sering dialami pemula adalah karena penggunaan perangkat jaringan domestik (PC atau server domestik). Karena sebagian besar platform diblokir, banyak platform pada dasarnya tidak dapat diakses oleh jaringan domestik (di China), dan antarmuka akses akan melaporkan timeout (diperhatikan dalam artikel sebelumnya).
Kesalahan http 429
Ini adalah salah satu pesan kesalahan klasik; alasannya adalah bahwa antarmuka platform dipanggil terlalu sering, melebihi batas frekuensi platform. (dicatat dalam artikel sebelumnya). Beberapa siswa baru mungkin mengatakan bahwa kesalahan tidak akan muncul jika mereka mengajukan aplikasi untuk API KEY beberapa platform atau beberapa akun platform. Kita perlu tahu bahwa batas frekuensi mengakses antarmuka oleh platform biasanya didasarkan pada alamat IP. Sederhananya, selama semua permintaan yang dikirim dari alamat IP dihitung pada alamat, server platform akan menolak akses ke IP, jika jumlah permintaan melebihi batas.
Kesalahan layanan antarmuka platform
Timeout dan 429 error yang disebutkan di atas adalah error di lapisan jaringan. Jika ada masalah di lapisan layanan antarmuka platform, kesalahan juga akan dilaporkan. Misalnya, saya ingin mendapatkan penawaran 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 pelaksanaan alat debugging; tidak ada perbedaan antara pelaksanaan alat debugging dan pelaksanaan bot.
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 (lihat di sini:"err-msg":"invalid symbol"
)).
Misalnya, ada banyak kesalahan terkait layanan seperti itu. Misalnya, saat mengatur leverage, beberapa platform tidak mendukung nilai leverage dengan angka desimal. Jika nilai leverage memiliki angka 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 membuat permintaan jaringan.
Namun, jika parameter dilewatkan atau ditulis salah, kesalahan juga akan dilaporkan.
Tidak peduli apa jenis kesalahan itu, pesan kesalahan yang ditampilkan adalah informasi kunci untuk menemukan masalah, yaitu Anda dapat mengetahui masalah dari pesan kesalahan. Anda dapat menggunakan alat terjemahan untuk menerjemahkan informasi kesalahan ke dalam bahasa yang dapat Anda baca, untuk mengekstrak kata kunci."err-msg":"invalid symbol"
Anda mungkin tahu kesalahan ini disebabkan oleh pengaturan pasangan perdagangan yang salah, karena simbol
Sistem backtest juga merupakan titik kunci dari alat kuantitatif. Sistem backtest dapat dengan mudah menguji prototipe strategi, dan pada awalnya memeriksa bug potensial dan masalah logis dalam strategi, tetapi sistem backtest perlu dilihat secara rasional. Sistem backtest dapat mencerminkan beberapa masalah strategi sampai batas tertentu.
Berikut ini adalah deskripsi singkat dari sistem backtest pada platform FMZ dari tingkat bahasa strategi yang berbeda yang didukung oleh FMZ. (Beberapa pengenalan sistem backtest disebutkan dalam artikel sebelumnya.)
JavaScript
Backtest dilakukan di browser, dan menggunakan sumber daya perangkat keras lokal.
Python
Dalam backtest pada docker, Anda dapat memilih docker mana yang akan ditugaskan (baik docker yang digunakan oleh diri sendiri, atau docker publik dari platform FMZ). Mengingat beban besar dari docker publik pada platform FMZ, disarankan untuk menggunakan backtest docker lokal (Itu juga akan lebih cepat. Dalam backtest dari docker publik, ketika terlalu banyak beban, beberapa tugas backtest akan dibatalkan, dengan hasil backtest terganggu).
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 penulisan kode, kompilasi mungkin tidak lulus, dan pesan kesalahan akan langsung muncul).
Mylangage
Lapisan bawah diimplementasikan oleh JavaScript, dan backtest juga dilakukan di browser.
Visualisasi
Lapisan bawah diimplementasikan oleh JavaScript, dan backtest juga dilakukan di browser
Sistem backtest dari platform FMZ Quant Trading memiliki dua mode backtest (tidak peduli bahasa mana strategi ditulis, mode backtest adalah pengaturan sistem backtest, dan opsi pengaturan adalah sama untuk semua bahasa yang didukung di FMZ).
Untuk instruksi sistem backtest, Anda dapat merujuk ke bagian terkait dari tutorial menulis strategi di platform FMZ:
There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.
Sama seperti simulasi yang ditampilkan pada gambar berikut:
Tentu saja, sedikit lebih rumit daripada yang ditunjukkan pada gambar untuk mewujudkan simulasi dalam sistem backtest, yang tidak akan dibahas lebih lanjut di sini. Setelah mengetahui prinsipnya, Anda perlu memperhatikan kelemahan dari backtest tingkat simulasi. Meskipun backtest tingkat simulasi sangat cepat (karena harga yang dihasilkan oleh simulasi bukan harga real detik per detik dirilis secara berurutan).tren perubahan tik yang disimulasikan, strategi akan bekerja dengan sangat baik (tetapi pada kenyataannya, harga mungkin tidak berubah dengan tren, meskipun harga berada dalam struktur garis K). Garis K yang digunakan untuk menghasilkan data tick simulasi di sini disebut garis K bawah, dan periode garis K disebutperiode garis K bawah, yang ditetapkan pada halaman pengaturan strategi sebagai gambar berikut:
Di sini saya mengatur 1 menit, yang berarti menggunakan data K-line dengan periode 1 menit sebagai sumber data untuk menghasilkan data tick simulasi.
Ada satu poin lagi bahwa, untuk strategi frekuensi tinggi, backtest tingkat simulasi jelas tidak sesuai. tetapi, untuk strategi tren, backtest tingkat simulasi dapat, sampai batas tertentu, menunjukkan kinerja strategi.
Di mana sumber data sistem backtest FMZ Quant? Sistem backtest menggunakan data dari dasbor pada platform FMZ secara default. Dasbor FMZ secara otomatis mengumpulkan data pasar yang ditetapkan dari setiap mata uang di setiap platform dan memasoknya ke sistem backtest platform.
Ada juga beberapa instruksi tentang sumber data kustom dalam dokumentasi FMZ API:https://www.fmz.com/api#Custom Data Source
Ada juga beberapa skema di Digest di platform FMZ. Pemula, yang tertarik pada itu, dapat merujuk pada skema tersebut dan mempelajarinya.
Anda tidak bisa melakukan perdagangan terprogram dan kuantitatif tanpabelajar, pengujiandanberpikirAku tidak tahu. Ini tidak efisien untuk berpikir tentang pertanyaan dari nol. cara yang paling efisien untuk memecahkan masalah dan berpikir tentang pertanyaan adalah denganmencari informasi, makaCobalah sendiri, danberpikir dan menganalisisJika masalah tidak teratasi, ulangi tindakan di atas.
Tetapi, biasanya ketika para pemula menghadapi masalah, mereka akan merasa:
Oh, menulis strategi terprogram dan kuantitatif sangat sulit! Masih bingung tentang hal itu, bahkan saya telah mempelajari itu untuk sementara waktu! Aku hanya ingin menyerah sebelum memulai! Aku tidak tahu.
Memulai dengan platform FMZ sebenarnya sangat mudah dan sederhana. Pertama-tama, Anda harus pandai mencari informasi. Ada banyak informasi di
Kemudian, ada kemampuan operasional; menggunakan sistem backtest dan alat debugging dapat dengan mudah membuat tes. Ini tidak berarti untuk menguji strategi yang lengkap. Bahkan, jika Anda memiliki dasar-dasar nol, Anda bahkan dapat mempelajari dasar-dasar program JavaScript langsung pada sistem backtest FMZ Quant.
Ini adalah situs web tutorial di mana saya sering belajar JS:https://www.runoob.com/js/js-loop-for.html; situs web ini tidak terbatas pada JS, dan semua jenis pengetahuan TI dapat ditanyakan dan dipelajari di sini. Misalnya, saya tidak tahu cara menggunakan ekspresi reguler dari JS, apa yang harus saya lakukan? Tentu saja, carilah informasi terlebih dahulu, lalu cobalah!
Saya melihat contoh seperti ini:Jika saya ingin mengujinya, saya dapat menggunakan sistem backtest FMZ untuk mengujinya untuk penelitian.
Tentukan platform secara acak pada sistem backtest.
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 the email address? ", " Answer:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}
Lihatlah, alat belajar yang luar biasa! Misalnya, jika saya ingin belajar bagaimana menulis logika loop dari bahasa JavaScript, dan kemudian mencobanya:
Menurut urutan array, cetak setiap elemen variabel array dalam loop:
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 segera belajar? Bahkan, di FMZ, Anda dapat benar-benar mempelajari dasar-dasar JavaScript dengan mencoba operasi pada sistem backtest sambil menonton tutorial JavaScript. Setelah sintaksis JavaScript hampir dikuasai, Anda dapat memasuki tahap berikutnya, untuk benar-benar menggunakan antarmuka platform untuk mendapatkan data dan tes. Anda juga dapat menggunakanalat debugdi FMZ untuk melakukan pengujian antarmuka nyata. Kemudian, Anda perlu berpikir lebih banyak, menarik kesimpulan dari satu kasus, dengan tes, verifikasi, dan analisis komparatif, dll. Yang membuat belajar dan memulai sangat cepat.