
Pada artikel sebelumnya, kita telah mempelajari bahwa perdagangan terprogram dan kuantitatif adalah program skrip yang melakukan beberapa operasi berdasarkan data yang diperoleh dari bursa setelah serangkaian perhitungan, penilaian, dan pemicu untuk mengoperasikan akun bursa untuk perdagangan. Tindakan memperoleh data dan mengoperasikan akun semuanya dilakukan melalui antarmuka API pertukaran. Sederhananya, ini adalah interaksi antara program skrip dan pertukaran. Karena ini adalah interaksi, pasti 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 petunjuk kesalahan dan pesan kesalahan. Pesan kesalahan ini tidak terbatas pada pesan kesalahan yang dilaporkan oleh antarmuka API pertukaran. Ada pula hal-hal seperti: kesalahan pengecualian program runtime, kesalahan konfigurasi, kesalahan sintaksis program, dan lain-lain.
Pada Platform Perdagangan Kuantitatif Inventor, pesan kesalahan secara garis besar dapat dibagi menjadi beberapa kategori:

Kode tersebut tidak memiliki karakter seperti tanda kurung. Jenis kesalahan ini biasanya terlihat pada halaman pengeditan kebijakan, dan kebijakan tidak dapat dijalankan (kesalahan akan dilaporkan langsung selama runtime, seperti yang ditunjukkan pada gambar di bawah).
Jadi setelah menulis strategi, saya biasanya memeriksa halaman penyuntingan strategi platform untuk melihat apakah ada tanda XX merah kecil. Jika ada, pasti ada kesalahan yang jelas.


Kesalahan seperti itu akan menyebabkan program gagal dan program akan berhenti berjalan.
Pada platform FMZ, pasangan perdagangan didefinisikan secara seragam sebagaiX_YDalam format ini, X mewakili nama mata uang perdagangan, dan Y mewakili nama mata uang yang didenominasi (mata uang yang didenominasi dari pasangan perdagangan kontrak berbasis mata uang berjangka biasanya dinyatakan dalam USD, yang telah diperkenalkan dalam artikel sebelumnya). MisalnyaBTC_USDT, jika saya menulis pasangan perdagangan secara acak,BTC-USDT。

Kesalahan dilaporkan dalam sistem pengujian ulang platform FMZ:

Laporkan kesalahan dalam perdagangan nyata:

Selain itu, kesalahan umum yang dialami oleh pemula:
https://www.fmz.com
Jenis kesalahan ini disebabkan oleh perubahan kata sandi akun platform FMZ, yang mengakibatkanAPI KEYTidak valid (KUNCI API pengguna dienkripsi pada browser dan kemudian dikonfigurasi pada platform FMZ), strategi tidak dapat dimulai, dan kesalahan dilaporkan.
Kesalahan pemanggilan antarmuka sering ditemui saat menjalankan strategi. Pada artikel sebelumnya, kita telah mempelajari bahwa antarmuka pada platform FMZ dibagi menjadiAntarmuka untuk menghasilkan permintaan jaringan、Antarmuka yang tidak menghasilkan permintaan jaringan. Kesalahan antarmuka tidak akan menyebabkan program kebijakan berhenti. Hal ini biasanya disebabkan oleh pengecualian panggilan antarmuka, yang mengembalikan data yang salah. Maka kebijakan tidak memiliki toleransi kesalahan, dan kesalahan pengecualian program yang disebabkan oleh data yang salah menyebabkan program berhenti. (konsep toleransi kesalahan telah dibahas dalam artikel sebelumnya). disebutkan).
Berikut adalah beberapa pesan kesalahan antarmuka yang menghasilkan permintaan jaringan:
Waktu habis jaringan

Salah satu pesan kesalahan yang sering ditemui pemula adalah penggunaan perangkat jaringan domestik (komputer milik sendiri atau server domestik). Karena sebagian besar bursa diblokir, banyak bursa yang pada dasarnya tidak dapat diakses dari jaringan domestik, dan antarmuka akses akan melaporkan batas waktu. (disebutkan dalam artikel sebelumnya)
kesalahan http 429
https://www.fmz.com
Salah satu pesan kesalahan klasik. Alasannya adalah antarmuka pertukaran dipanggil terlalu sering, melebihi batas frekuensi pertukaran. (disebutkan dalam artikel sebelumnya)
Beberapa mahasiswa baru mungkin berkata, Saya akan melamar lebih banyak pertukaran.API KEYAtau saya bisa mengajukan beberapa akun pertukaran lagi. Perlu kita ketahui bahwa exchange biasanya membatasi frekuensi akses interface berdasarkan alamat IP. Sederhananya, selama semua permintaan yang dikirim dari suatu alamat IP dihitung pada alamat IP tersebut, jika batasnya terlampaui dan IP tersebut mengirimkan permintaan lagi , server pertukaran akan menolak akses.
Pelaporan kesalahan pada tingkat bisnis antarmuka pertukaran
Batas waktu dan 429 yang disebutkan di atas adalah kesalahan tingkat jaringan. Kesalahan juga akan dilaporkan jika terjadi masalah pada tingkat bisnis antarmuka pertukaran. Misalnya, saya ingin memperoleh kuotasi spot, tetapi saya menetapkan pasangan perdagangan yang tidak ada. Saya mengujinya di alat debugging platform FMZ. Alat debugging adalah alat pengujian yang sangat praktis, yang sangat cocok untuk pengujian pemanggilan fungsi, akuisisi data, dan kebutuhan lainnya secara real-time.

Tidak ada perbedaan antara hasil eksekusi alat debugging dan eksekusi sesungguhnya.

Huobi 错误 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 transaksi tidak valid (seperti yang dapat dilihat di sini"err-msg":"invalid symbol")。
Misalnya, ada banyak kesalahan terkait bisnis seperti itu. Misalnya, saat mengatur leverage, beberapa bursa tidak mendukung nilai leverage dengan bagian desimal. Saat ini, jika nilai leverage berisi bagian desimal, itu juga akan menyebabkan kesalahan panggilan antarmuka.
Daftarkan panggilan antarmuka yang tidak menghasilkan permintaan jaringan
Tetapkan kode kontrak berjangka Beberapa antarmuka hanya menetapkan beberapa variabel global dalam sistem dan tidak menghasilkan permintaan jaringan, misalnya:

Namun, kesalahan akan terjadi jika parameter yang dimasukkan salah atau ditulis secara acak.

Namun, apa pun jenis kesalahannya, pesan kesalahan yang ditampilkan adalah informasi utama untuk menemukan masalahnya, dan masalah biasanya dapat diidentifikasi dari pesan kesalahan. Anda dapat menggunakan alat penerjemahan untuk menerjemahkan pesan kesalahan dan mengekstrak informasi penting. Misalnya saja pada contoh di atas"err-msg":"invalid symbol", terjemahan: “err msg”: “Simbol tidak valid”. Anda mungkin tahu bahwa pengaturan pasangan perdagangan salah, karena simbol bahasa Inggris biasanya digunakan untuk mewakili kode perdagangan dan pasangan perdagangan.
Kami akan membahas informasi kesalahan secara singkat. Ada postingan yang akan terus mengumpulkan pertanyaan umum untuk ditanyakan: https://www.fmz.com/bbs-topic/1427
Sistem pengujian ulang juga merupakan poin penting dalam alat kuantitatif. Sistem pengujian ulang dapat dengan mudah menguji prototipe strategi dan menguji awal potensi bug dan masalah logis dalam strategi. Kita perlu bersikap rasional terhadap sistem pengujian ulang. Sistem pengujian ulang dapat mencerminkan beberapa masalah strategi sampai batas tertentu.
Di bawah ini kami akan menjelaskan secara singkat sistem pengujian ulang pada platform FMZ dari perspektif berbagai bahasa strategi yang didukung oleh FMZ. (Beberapa pengenalan terhadap sistem backtesting telah disebutkan dalam artikel sebelumnya)
Pengujian ulang sisi browser menggunakan sumber daya perangkat keras lokal.
Saat melakukan pengujian ulang pada kustodian, Anda dapat memilih kustodian mana yang akan dialokasikan (baik kustodian Anda sendiri atau kustodian publik pada platform FMZ). Mengingat beban kustodian publik yang sangat besar pada platform FMZ, maka disarankan untuk menggunakan kustodian lokal untuk backtesting (ini juga akan lebih cepat. Saat melakukan backtesting dengan kustodian publik, ketika ada terlalu banyak tugas yang melebihi beban, beberapa backtesting tugas akan dibatalkan, sehingga mengakibatkan penundaan pengujian ulang). gangguan pengukuran).
Tidak seperti bahasa skrip, kebijakan C++ perlu dikompilasi sebelum dapat dieksekusi. Strategi bahasa C++ akan dikompilasi pada platform FMZ (server) terlebih dahulu (jika ada masalah dengan kode, kompilasi mungkin gagal dan pesan kesalahan akan muncul). Setelah kompilasi, lakukan uji ulang pada platform FMZ (server).
Implementasi yang mendasarinya adalah JavaScript, dan pengujian ulang juga dilakukan di sisi browser.
Implementasi yang mendasarinya adalah JavaScript, dan pengujian ulang juga dilakukan di sisi browser.
Sistem pengujian ulang dari Platform Perdagangan Kuantitatif Inventor memiliki dua mode pengujian ulang (yang ini tidak membedakan antara bahasa strategi, yang ini adalah pengaturan pengujian ulang, dan pengujian ulang strategi dalam berbagai bahasa adalah sama).

Untuk petunjuk tentang sistem pengujian ulang, silakan lihat informasi dalam tutorial platform:
https://www.fmz.com/bbs-topic/4158#%E7%AD%96%E7%95%A5%E5%9B%9E%E6%B5%8B
K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。
Sama seperti simulasi pada gambar: https://www.fmz.com Tentu saja, ketika sistem pengujian ulang yang sebenarnya menerapkan simulasi ini, situasinya sedikit lebih rumit daripada yang ditunjukkan pada gambar. Kami tidak akan membahasnya di sini. Cukup memahami mekanisme pengujian ulang tingkat simulasi. Mengetahui prinsip ini, kita perlu memperhatikan kekurangan dari backtesting level simulasi, meskipun backtesting level simulasi sangat cepat (karena harga yang dihasilkan oleh simulasi bukanlah harga sebenarnya yang dirilis satu per satu detik demi detik). Namun jika strateginya cocokTren perubahan tanda centang yang disimulasikanIni akan membuat strategi berkinerja sangat baik (tetapi dalam situasi sebenarnya harga mungkin tidak bergerak seperti ini, meskipun harga berada dalam kerangka kolom garis K ini). Garis K yang digunakan untuk menghasilkan data tick simulasi disebut garis K yang mendasarinya, dan periode garis K ini disebutSiklus K-line bawahatur seperti yang ditunjukkan di halaman pengaturan kebijakan:
Pengaturan 1 menit di sini berarti bahwa data K-line dengan periode 1 menit digunakan sebagai sumber data untuk menghasilkan simulasi tanda centang.
Hal lain adalah bahwa untuk strategi frekuensi tinggi, jelas tidak tepat untuk menggunakan pengujian ulang tingkat simulasi. Namun, untuk strategi tren, penggunaan pengujian ulang tingkat simulasi masih dapat mencerminkan kinerja strategi sampai batas tertentu.

Dari mana data untuk sistem pengujian ulang Platform Perdagangan Kuantitatif Inventor berasal? Sistem pengujian ulang menggunakan data dari pusat data platform FMZ secara default. Pusat data platform FMZ secara otomatis mengumpulkan data pasar setiap mata uang dari setiap bursa dan menyediakannya ke sistem pengujian ulang pada platform.

Ada juga beberapa petunjuk dalam dokumentasi API FMZ tentang sumber data kustom: https://www.fmz.com/api#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90
Ada juga beberapa solusi di pustaka FMZ:

Bagi pemula yang berminat dapat mempelajari dan merujuknya.
Perdagangan terprogram dan kuantitatif tidak dapat dipisahkanbelajar、tes、memikirkan。 Anda tidak dapat memikirkan masalah dalam ruang hampa, itu tidak efisien. Cara yang paling efektif untuk memecahkan dan memikirkan masalah adalahTemukan informasi,KemudianCobalah sendiri、Analisis PemikiranJika masalah tidak terpecahkan, ulangi langkah-langkah di atas.
Namun biasanya ketika seorang pemula menghadapi suatu masalah, mereka merasa:
“Oh~ Pemrograman, kuantifikasi, dan penulisan strategi terlalu sulit.” “Saya sudah lama memperhatikannya, tetapi saya masih bingung!” “Saya belum memulainya dan saya ingin menyerah!” ….
Sebenarnya sangat mudah untuk memulai di platform FMZ. Pertama-tama, Anda harus pandai mencari informasi. Ada banyak informasi yang tersedia untuk referensi di Inventor Quantitative Trading Platform Strategy Plaza, Komunitas, dan Perpustakaan.

Kemudian ada kemampuan praktis. Menggunakan sistem pengujian ulang dan alat debugging dapat memudahkan pengujian. Ini tidak berarti menguji strategi secara menyeluruh. Bahkan, jika Anda sama sekali tidak memiliki pengetahuan dasar, Anda bahkan dapat mempelajari dasar-dasar pemrograman JavaScript pada sistem pengujian ulang kuantitatif FMZ.
Ini adalah situs web tutorial tempat saya sering belajar JS: https://www.runoob.com/js/js-loop-for.html Tidak terbatas pada JS, semua jenis pengetahuan IT dapat dicari dan dipelajari di sini. Misalnya, saya tidak tahu cara menggunakan ekspresi reguler JS, apa yang harus saya lakukan? Tentu saja, periksa informasinya terlebih dahulu, lalu cobalah~
Saya melihat contoh seperti ini:
Saya ingin mengujinya, dan saya bahkan dapat menggunakan sistem pengujian ulang platform FMZ untuk menguji dan mempelajarinya.
Siapkan pertukaran 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, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "[email protected]"
Log(strEmailAddress2, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress2))
}

Lihat~ sungguh alat pembelajaran yang hebat! Misalnya, saya ingin belajar cara menulis logika loop dalam JavaScript, jadi mari kita coba:
Lakukan pengulangan melalui elemen-elemen variabel array sesuai urutan kemunculannya dalam 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 segera? Bahkan, di FMZ, Anda dapat menonton tutorial JavaScript sambil mempelajari dasar-dasar JavaScript pada sistem pengujian ulang. Sintaks JavaScript hampir dikuasai. Untuk memasuki tahap berikutnya, Anda perlu menggunakan antarmuka pertukaran untuk mendapatkan data untuk pengujian. Anda juga dapat menggunakan platform FMZAlat DebuggingLakukan pengujian antarmuka yang nyata.
Kemudian Anda perlu berpikir lebih jauh, menarik kesimpulan dari satu contoh, menguji dan memverifikasi, membandingkan dan menganalisis, dst. Dengan cara ini Anda dapat memulai dengan sangat cepat.