Perdagangan Kuantitatif Cryptocurrency untuk Pemula - Membawa Anda Lebih Dekat dengan Kuantitatif Cryptocurrency (3)

Penulis:Lydia, Dicipta: 2022-07-29 09:37:22, Dikemas kini: 2023-09-21 21:03:55

img

Perdagangan Kuantitatif Cryptocurrency untuk Pemula - Membawa Anda Lebih Dekat dengan Kuantitatif Cryptocurrency (3)

Mesej ralat

Dalam artikel sebelumnya, kita telah belajar bahawa yang dipanggil programmatic dan kuantitative trading adalah program skrip berdasarkan data yang diperoleh dari bursa melalui satu siri pengiraan, penghakiman, dan pencetus untuk melakukan beberapa operasi, dan mengendalikan akaun bursa untuk berdagang. Tindakan ini memperoleh data dan akaun operasi semua dijalankan melalui antara muka API bursa. Sederhananya, program skrip berinteraksi dengan pertukaran. Oleh kerana ia adalah interaksi, mesti ada interaksi normal dan interaksi yang tidak normal. Apabila interaksi yang tidak normal berlaku, antara muka mengembalikan mesej pengecualian.

Sudah tentu, terdapat semua jenis isyarat ralat dan mesej ralat dalam sistem perdagangan berprogram dan kuantitatif di pasaran, atau dalam program yang dibangunkan oleh diri kita sendiri. Mesej ralat ini tidak terhad kepada mesej ralat yang dilaporkan oleh antara muka API pertukaran. Terdapat juga ralat pengecualian masa pelaksanaan program, ralat konfigurasi, ralat tatabahasa program dan sebagainya.

Mesej ralat di Platform Dagangan Kuantitatif FMZ juga kira-kira tergolong dalam beberapa kategori:

  • Kesalahan tatabahasa strategi Jenis kesilapan ini adalah yang paling biasa, kerana pemula tidak biasa dengan pengaturcaraan, dan terdapat kesilapan tatabahasa dalam penulisan kod semasa fasa pembelajaran dan ujian.

    img

    Kod ini telah terlepas aksara seperti kurung. Kesalahan sedemikian biasanya dapat dilihat di halaman penyuntingan strategi, dan strategi tidak boleh dijalankan (kesalahan akan dilaporkan secara langsung pada masa berjalan, seperti yang ditunjukkan dalam gambar di bawah).

    imgJadi selepas menulis strategi, lihat biasa pada halaman penyuntingan strategi platform untuk melihat jika ada XX merah, jika ya, mesti ada kesilapan yang jelas.

  • Pengecualian program runtime yang disebabkan oleh program strategi BUG Terdapat kecacatan dalam program. Apabila program berjalan, mencetuskan pengecualian akan menyebabkan program berhenti secara tidak normal dan memaparkan mesej ralat tersebut.

    img

    img

    Kesalahan sedemikian akan menyebabkan program menjadi tidak normal dan program akan berhenti berjalan.

  • Kesalahan yang disebabkan oleh konfigurasi dan tetapan yang tidak betul

    Di platform FMZ, pasangan dagangan ditakrifkan secara seragam dalam formatX_Y, di mana X mewakili nama mata wang dagangan, dan Y mewakili nama mata wang yang diisytiharkan (mata wang yang diisytiharkan pasangan perdagangan kontrak berjangka yang berasaskan mata wang biasanya dinyatakan dalam USD, seperti yang diterangkan dalam artikel sebelumnya), sepertiBTC_USDT, jika saya menulis pasangan dagangan secara rawak, menulisnya sebagaiBTC-USDT.

    img

    Satu ralat dilaporkan pada sistem backtesting platform FMZ:

    img

    Selain itu, satu kesilapan yang sering dihadapi oleh pemula:

    img

    Kesilapan jenis ini disebabkan oleh pengubahsuaian kata laluan pada akaun platform FMZ, yang mengakibatkan kelulusanAPI KEYdalam objek pertukaran yang dikonfigurasikan (kunci API pengguna dikonfigurasikan di platform FMZ setelah disulitkan di penyemak imbas), dan strategi tidak dapat dimulakan, oleh itu kesalahan dilaporkan.

  • Kesilapan dilaporkan dalam panggilan antara muka

    Kesilapan panggilan antara muka sering berlaku semasa menjalankan strategi.antara muka yang menjana permintaan rangkaiandanantara muka yang tidak menghasilkan permintaan rangkaian. Kesalahan antara muka tidak akan menyebabkan program strategi berhenti, biasanya disebabkan oleh pengecualian panggilan antara muka dan data yang salah dikembalikan, strategi tidak membuat toleransi ralat, dan kesalahan pengecualian program yang disebabkan oleh data yang salah menyebabkan program berhenti (konsep toleransi ralat yang disebutkan dalam artikel sebelumnya).

    Berikut adalah beberapa mesej ralat antara muka yang menghasilkan permintaan rangkaian:

    • Masa henti rangkaian

      Salah satu mesej ralat yang sering ditemui oleh pemula adalah penggunaan peralatan rangkaian domestik (komputer atau pelayan domestik mereka sendiri).

    • Kesalahan http 429

      Salah satu mesej ralat klasik adalah bahawa antara muka pertukaran dipanggil terlalu kerap, melebihi had kekerapan pertukaran (disebutkan dalam artikel sebelumnya). Beberapa pemula mungkin berkata bahawa saya ingin memohon untukAPI KEYuntuk lebih banyak pertukaran atau saya memohon untuk lebih banyak akaun pertukaran. kita perlu tahu bahawa kekerapan had akses antara muka oleh pertukaran biasanya berdasarkan alamat IP. Secara ringkasnya, selagi semua permintaan yang dihantar ke alamat IP dikira pada alamat IP ini, pelayan pertukaran akan menafikan akses jika permintaan melebihi had.

    • Pelaporan ralat mengenai perniagaan antara muka pertukaran

      Timeout dan 429 yang disebutkan di atas adalah kesilapan rangkaian. Jika terdapat masalah pada perniagaan antara muka pertukaran, satu kesilapan juga akan dilaporkan. Sebagai contoh, jika saya ingin mendapatkan harga pasaran spot, tetapi saya menubuhkan pasangan perdagangan yang tidak wujud. Saya menguji dalam alat debugging platform FMZ, alat debugging adalah alat ujian yang sangat mudah, yang sangat sesuai untuk ujian bot sebenar panggilan fungsi dan pengambilalihan data.

      img

      Hasil pelaksanaan alat debugging, tidak ada perbezaan antara pelaksanaan alat debugging dan pelaksanaan bot sebenar.

      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}
      

      Mesej ralat di sini bermakna pasangan dagangan tidak sah (seperti yang dilihat di sini"err-msg":"invalid symbol")). Sebagai contoh, terdapat banyak kesilapan yang berkaitan dengan perniagaan, seperti menetapkan leverage apabila beberapa bursa tidak menyokong nilai leverage dengan bahagian perpuluhan, pada masa ini, jika nilai leverage mempunyai bahagian perpuluhan, ia juga akan menyebabkan ralat dalam panggilan antara muka.

    Senaraikan panggilan antara muka yang tidak menghasilkan permintaan rangkaian

    • Kod kontrak niaga hadapan Sesetengah antara muka hanya menetapkan beberapa pembolehubah global dalam sistem dan tidak menjana permintaan rangkaian, contohnya:

      img

      Walau bagaimanapun, jika parameter itu diteruskan dengan salah atau digariskan, satu kesilapan akan dilaporkan.

      img

    Tetapi tanpa mengira jenis ralat, mesej ralat yang dipaparkan adalah maklumat utama untuk mencari masalah, dan masalah biasanya dapat dilihat dari mesej ralat."err-msg":"invalid symbol"In the above example, the translation is: err msg: lambang tidak sah . 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. Untuk masalah biasa, ada post yang akan terus dikumpulkan untuk pertanyaan:https://www.fmz.com/bbs-topic/9158

Sistem Ujian Balik

Sistem backtesting juga menjadi tumpuan alat kuantitatif. Sistem backtesting boleh menguji prototaip strategi dengan mudah, bug berpotensi dan masalah logik dalam strategi ujian awal. Sistem backtesting perlu dilihat secara rasional. Sistem backtesting boleh mencerminkan beberapa masalah strategi ke tahap tertentu.

Berikut adalah penerangan ringkas mengenai sistem backtesting di platform FMZ dari tahap bahasa strategi yang berbeza yang disokong oleh FMZ. (Beberapa pengenalan sistem backtesting telah disebutkan dalam artikel sebelumnya)

  • JavaScript

    Backtesting dalam penyemak imbas menggunakan sumber perkakasan asli.

  • Python

    Apabila melakukan backtesting pada docker, anda boleh memilih docker mana yang akan ditugaskan (baik docker yang digunakan oleh anda sendiri, atau docker awam di platform FMZ).

  • C++

    Tidak seperti bahasa skrip, strategi C ++ perlu disusun dan kemudian dilaksanakan. Strategi bahasa C ++ akan disusun terlebih dahulu di platform FMZ (server) (jika ada masalah dengan kod, penyusunan mungkin tidak lulus, dan mesej ralat akan muncul secara langsung).

  • MyLanguage

    Implementasi yang mendasari adalah JavaScript, dan backtesting juga dilakukan di penyemak imbas.

  • Penglihatan

    Implementasi yang mendasari adalah JavaScript, dan backtesting juga dilakukan di penyemak imbas.

Sistem backtesting di Platform Dagangan Kuantum FMZ dibahagikan kepada dua mod backtesting (ini tidak kira bahasa strategi, ini adalah tetapan backtesting, dan backtesting strategi dalam semua bahasa adalah sama).

img

    1. Pengujian belakang tahap simulasi Dalam istilah awam yang mudah, backtesting tahap simulasi merujuk kepada data harga setiap nod masa yang disimulasikan dan dihasilkan mengikut 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.
    

    Ia seperti simulasi seperti ini:https://www.fmz.comimgSudah tentu, apabila sistem backtesting sebenar melaksanakan simulasi ini, keadaannya sedikit lebih rumit daripada yang ditunjukkan dalam gambar. Mengetahui prinsip ini, adalah penting untuk melihat kelemahan pengujian belakang peringkat simulasi, walaupun pengujian belakang peringkat simulasi sangat cepat (kerana harga yang dihasilkan oleh simulasi bukan harga sebenar kedua-dua yang dikeluarkan satu demi satu).trend pergerakan kutu simulasi, strategi akan berfungsi dengan baik (tetapi sebenarnya, harga mungkin tidak trend ini, walaupun harga adalah dalam rangka bar K-garis ini). K-garis yang digunakan untuk menjana data tik yang disimulasikan di sini dipanggil K-garis bawah, dan tempoh K-garis ini dipanggiltempoh garis K bawah, yang ditetapkan seperti yang ditunjukkan pada halaman penetapan strategi:

    imgTetapan 1 minit di sini bermaksud bahawa data garis K dengan tempoh 1 minit digunakan sebagai sumber data untuk menjana tik yang disimulasikan.

    Satu lagi perkara adalah bahawa untuk strategi frekuensi tinggi, ia jelas tidak sesuai untuk menggunakan pengujian belakang tahap simulasi.

    1. Ujian semula peringkat bot sebenar Selepas bercakap tentang pengujian semula tahap simulasi, mari kita bercakap tentang pengujian semula tahap bot sebenar. Secara ringkasnya, pengujian semula pada tahap bot sebenar adalah pelepasan data harga sebenar setiap saat semasa pengujian semula. Ia membolehkan strategi untuk mengesan semula harga setiap saat pasaran. Mod pengujian semula ini membolehkan anda menguji semula strategi dengan kekerapan perdagangan yang tinggi dan mendapatkan tahap nilai rujukan tertentu. Kelemahannya adalah bahawa jumlah data backtesting pada peringkat bot sebenar terlalu besar untuk backtested dalam julat masa yang besar (masa biasanya kurang daripada 1 hari).Data berpecah(transaksi data tik-by-tik, dan data kedalaman pasaran juga mempunyai snapshot kedua demi kedua dalam bot sebenar backtesting, jadi jumlah bot sebenar backtesting data adalah besar) untuk meningkatkan julat backtesting dengan sewajarnya, seperti yang ditunjukkan dalam gambar:

    img

Di mana sumber data sistem backtesting Platform Dagangan Kuantum FMZ? Sistem backtesting menggunakan data pusat data platform FMZ secara lalai. Pusat data platform FMZ mengumpul data pasaran set setiap mata wang setiap pertukaran secara automatik dan membekalkannya kepada sistem backtesting di platform.

    1. Gunakan data dari pusat data FMZ secara lalai Seperti yang dinyatakan dalam artikel sebelumnya:https://www.fmz.com/bbs-topic/9536Data backtesting yang disediakan oleh platform hanya menyokong sebilangan pasangan dagangan yang terhad (data backtesting keseluruhan pasaran dan semua mata wang adalah angka astronomi, dan tidak realistik untuk mengumpulnya semua. Platform kami telah mengumpul data pasaran bursa arus perdana dan mata wang arus perdana).
    1. Gunakan data sumber data tersuai Anda boleh menggunakan pilihan pada halaman backtesting untuk menetapkan sumber data tersuai. Secara ringkasnya, jika anda mempunyai data dari pertukaran, anda boleh membekalkannya kepada sistem backtesting platform FMZ untuk backtesting mengikut keperluan format pada platform FMZ.

    img

    Terdapat juga beberapa nota mengenai sumber data tersuai dalam dokumentasi FMZ API:https://www.fmz.com/api#custom-data-source

Belajar, menguji, berfikir

Anda tidak boleh melakukan programmatic dan kuantitatif perdagangan tanpapembelajaran, Ujian, danberfikir. Berfikir tentang masalah tidak boleh difikirkan sia-sia, itu tidak berkesan.cari maklumat, makaCubalah., berfikir dan menganalisis, jika masalah tidak diselesaikan, sila ulangi tindakan di atas.

Tetapi apabila seorang pemula menghadapi masalah, dia akan merasa:

Ups~ terlalu sukar untuk memprogram, mengukur, dan menulis strategi. Setelah menontonnya untuk masa yang lama, saya masih tercengang! Saya mahu menyerah sebelum saya mula! ... yang penting.

Memulakan di platform FMZ sangat mudah sebenarnya. Pertama sekali, anda mesti pandai mencari maklumat. Terdapat banyak maklumat yang tersedia di padang strategi, komuniti dan perpustakaan Platform Dagangan Kuantum FMZ.

img

Yang kedua adalah kemahiran tangan, yang boleh diuji dengan mudah dengan menggunakan sistem backtesting dan alat debugging. Ini tidak bermakna menguji strategi yang lengkap. Malah, anda juga boleh mempelajari asas program JavaScript pada sistem backtesting FMZ Quant jika anda benar-benar asas.

Ini adalah laman web tutorial di mana saya sering belajar JS:https://www.runoob.com/js/js-loop-for.html, ia tidak terhad kepada JS, semua jenis pengetahuan IT boleh ditanyakan dan dipelajari di sini. Sebagai contoh, saya tidak tahu bagaimana untuk menggunakan ungkapan biasa JS, apa yang harus saya lakukan? Sudah tentu, cari maklumat terlebih dahulu, dan kemudian cuba untuk melakukannya ~

Saya melihat contoh ini:imgSaya mahu menguji, dan saya boleh menggunakan sistem backtesting platform FMZ untuk menguji dan belajar.

Tetapkan pertukaran rawak pada sistem backtestingimg

Uji kod 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 mahu belajar bagaimana untuk menulis logik gelung bahasa JavaScript, dan cuba:

Loop melalui unsur-unsur pembolehubah array dalam urutan di mana mereka muncul 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])
    }
}

img

Adakah anda berasa termotivasi untuk belajar dalam sekejap? Sebenarnya, di FMZ, anda boleh mempelajari asas-asas JavaScript pada sistem backtesting sambil menonton tutorial JavaScript. Grammar JavaScript hampir dikuasai, dan memasuki peringkat seterusnya, anda perlu menggunakan antara muka pertukaran untuk mendapatkan ujian data.alat debuggingdari platform FMZ untuk menjalankan ujian antara muka sebenar.

Kemudian ia adalah untuk berfikir lebih banyak, menarik kesimpulan dari satu kes, pengesahan ujian, analisis perbandingan, dll. Ini membuat pembelajaran untuk memulakan dengan sangat cepat.


Berkaitan

Lebih lanjut