Cryptocurrency Quantitative Trading for Beginners - Membawa Anda Lebih Dekat dengan Cryptocurrency Quantitative (3)

Penulis:Lydia, Dibuat: 2022-07-29 09:37:22, Diperbarui: 2023-09-21 21:03:55

img

Cryptocurrency Quantitative Trading for Beginners - Membawa Anda Lebih Dekat dengan Cryptocurrency Quantitative (3)

Pesan kesalahan

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.

    img

    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).

    imgJadi 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.

    img

    img

    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.

    img

    Sebuah kesalahan dilaporkan pada sistem backtesting platform FMZ:

    img

    Selain itu, kesalahan yang sering dialami pemula:

    img

    Jenis kesalahan ini disebabkan oleh modifikasi kata sandi di akun platform FMZ, yang mengakibatkan pembatalanAPI KEYdalam 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 KEYkita 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.

      img

      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:

      img

      Namun, jika parameter dilewatkan dengan salah atau digarisbawahi, kesalahan akan dilaporkan.

      img

    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: err msg: tidak valid simbol . It is probably known that the trading pair is set incorrectly, because English symbols are usually used to represent the trading code and trading pair. For common problems, there is a post that will continue to be collected for query: Untuk masalah umum, ada posting yang akan terus dikumpulkan untuk kueri:https://www.fmz.com/bbs-topic/9158

Sistem pengujian balik

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).

img

    1. Backtesting tingkat simulasi Dalam istilah awam yang sederhana, backtesting tingkat simulasi mengacu pada data harga dari setiap node waktu yang disimulasikan dan dihasilkan sesuai dengan data K-line.
    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.comimgTentu 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:

    imgPengaturan 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.

    1. Backtesting tingkat bot nyata Setelah berbicara tentang backtesting tingkat simulasi, mari kita bicara tentang backtesting tingkat bot nyata. Sederhananya, backtesting pada tingkat bot nyata adalah rilis data harga setiap detik selama backtesting. Ini memungkinkan strategi untuk melacak kembali harga per detik pasar. Mode backtesting ini memungkinkan Anda untuk backtest strategi dengan frekuensi perdagangan yang tinggi dan mendapatkan tingkat nilai referensi tertentu. Kelemahannya adalah bahwa jumlah data backtesting pada tingkat bot nyata terlalu besar untuk backtesting dalam rentang waktu yang besar (waktu biasanya kurang dari 1 hari).data terbagi(transaksi data tik-by-tik, dan data kedalaman pasar juga memiliki snapshot detik-demi-detik dalam backtesting bot nyata, sehingga jumlah data backtesting bot nyata sangat besar) untuk meningkatkan rentang backtesting dengan tepat, seperti yang ditunjukkan dalam gambar:

    img

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.

    1. Gunakan data dari pusat data FMZ secara default Seperti yang disebutkan dalam artikel-artikel sebelumnya:https://www.fmz.com/bbs-topic/9536Data backtesting yang disediakan oleh platform hanya mendukung sejumlah pasangan perdagangan yang terbatas (data backtesting dari seluruh pasar dan semua mata uang adalah angka astronomi, dan tidak realistis untuk mengumpulkan semuanya.
    1. Gunakan data sumber data khusus Anda dapat menggunakan opsi pada halaman backtesting untuk mengatur sumber data kustom. Sederhananya, jika Anda memiliki data dari pertukaran, Anda dapat memasoknya ke sistem backtesting platform FMZ untuk backtesting sesuai dengan persyaratan format di platform FMZ.

    img

    Ada juga beberapa catatan tentang sumber data kustom dalam dokumentasi FMZ API:https://www.fmz.com/api#custom-data-source

Belajar, menguji, berpikir

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.

img

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:imgSaya ingin mengujinya, dan saya bisa menggunakan sistem backtesting dari platform FMZ untuk menguji dan belajar.

Atur pertukaran acak pada sistem backtestingimg

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))
}

img

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])
    }
}

img

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.


Berkaitan

Lebih banyak