Pemula, periksa Membawa Anda ke Cryptocurrency Quantitative Trading (3)

Penulis:Ninabadass, Dibuat: 2022-04-20 11:46:56, Diperbarui: 2022-04-20 16:53:34

Pemula, periksa Membawa Anda ke Cryptocurrency Quantitative Trading (3)

Pesan Kesalahan

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.

    img

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

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

    img

    img

    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 X mewakili nama mata uang perdagangan, dan Y mewakili nama mata uang penawaran (mata uang penawaran pasangan perdagangan dalam kontrak berjangka crypto-margin biasanya dinyatakan dalam USD, dan yang diperkenalkan dalam artikel sebelumnya).BTC_USDT; misalkan saya menulisnya salah, saya menulisnya keBTC-USDT.

    img

    Pelaporan kesalahan dalam sistem backtest pada platform FMZ:

    img

    Pelaporan kesalahan di bot:

    img

    Atau, kesalahan yang paling umum yang sering dihadapi pemula:

    img

    Kesalahan semacam ini disebabkan oleh pembatalanAPI KEYdalam 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

      img

      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

      img

      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.

      img

      Hasil pelaksanaan alat debugging; tidak ada perbedaan antara pelaksanaan alat debugging dan pelaksanaan bot.img

      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.

      img

      Namun, jika parameter dilewatkan atau ditulis salah, kesalahan juga akan dilaporkan.

      img

    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 biasanya mewakili kode perdagangan dan pasangan perdagangan dalam bahasa Inggris. Untuk pesan kesalahan, kami akan menutup diskusi di sini. Kami memiliki posting di mana FAQ dikumpulkan dan akan diperbarui terus-menerus, untuk pencarian:https://www.fmz.com/bbs-topic/1427.

Sistem Backtest

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

img

Untuk instruksi sistem backtest, Anda dapat merujuk ke bagian terkait dari tutorial menulis strategi di platform FMZ:

https://www.fmz.com/bbs-topic/9091

    1. Simulasi Tingkat Backtest Backtest tingkat simulasi, secara umum, adalah untuk menghasilkan data harga dari titik waktu berturut-turut berdasarkan data K-line dengan cara simulasi.
    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:img

    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:

    img

    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.

    1. Backtest Tingkat Pasar Nyata Setelah berbicara tentang tingkat simulasi, mari kita bicara tentang tingkat pasar nyata. Secara umum, backtest tingkat pasar nyata adalah benar-benar merilis data harga detik demi detik dalam tes, dan membiarkan strategi untuk menelusuri kembali harga setiap detik di pasar. Kelemahannya adalah bahwa jumlah data backtest pada tingkat pasar nyata terlalu besar, dan tidak dapat diuji dalam rentang waktu yang besar (biasanya rentang waktu kurang dari 1 hari).tidak perlu sejarah perdagangan(data sejarah perdagangan, dan data kedalaman pasar juga memiliki snapshot detik per detik dalam backtest tingkat pasar nyata, sehingga jumlah data backtest tingkat pasar nyata sangat besar).

    img

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.

    1. Gunakan data dari dashboard FMZ Hal ini disebutkan dalam artikel-artikel sebelumnya:https://www.fmz.com/bbs-topic/9245#Platform Perdagangan KuantitatifAku tidak tahu. Data backtest yang disediakan oleh platform hanya mendukung sejumlah pasangan perdagangan yang terbatas. (data backtest dari seluruh pasar dan semua mata uang adalah jumlah astronomi, dan tidak realistis untuk mengumpulkan semuanya. Platform telah mengumpulkan data pasar dari platform arus utama dan mata uang arus utama.)
    1. Gunakan data dari sumber data kustom Anda dapat memilih opsi pada halaman backtest untuk mengatur sumber data kustom. Sederhananya, jika Anda memiliki data dari platform sendiri, Anda dapat memasoknya ke sistem backtest pada platform FMZ untuk backtest, sesuai dengan persyaratan format platform FMZ.

    img

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.

Pelajari, Uji dan Pikirkan

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 Square, Forums dan Digest di Platform Perdagangan Kuantum FMZ.

img

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:imgJika saya ingin mengujinya, saya dapat menggunakan sistem backtest FMZ untuk mengujinya untuk penelitian.

Tentukan platform secara acak pada sistem backtest.img

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

img

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

img

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.


Lebih banyak