Pemula, periksa Membawa anda ke Perdagangan Kuantitatif Cryptocurrency (3)

Penulis:Ninabadass, Dicipta: 2022-04-20 11:46:56, Dikemas kini: 2022-04-20 16:53:34

Pemula, periksa Membawa anda ke Perdagangan Kuantitatif Cryptocurrency (3)

Mesej ralat

Dalam artikel sebelumnya, kita telah belajar bahawa apa yang dipanggil perdagangan berprogram dan kuantitatif adalah program skrip berdasarkan data yang diperoleh dari platform, selepas satu siri pengiraan, penghakiman, dan pencetus untuk melakukan beberapa operasi, dan mengoperasikan akaun platform untuk berdagang. Tindakan ini memperoleh data dan akaun operasi semua dijalankan melalui antara muka API platform. Sederhananya, program skrip berinteraksi dengan platform. Oleh kerana ia adalah interaksi, mesti ada interaksi normal dan interaksi abnormal. Apabila interaksi abnormal berlaku, antara muka mengembalikan maklumat pengecualian.

Sudah tentu, sistem perdagangan berprogram dan kuantitatif di pasaran atau program yang dibangunkan sendiri akan mempunyai pelbagai arahan dan mesej ralat. Mesej ralat ini tidak terhad kepada mesej ralat yang dilaporkan oleh API platform. Terdapat juga ralat lain, seperti: ralat pengecualian program semasa operasi, ralat konfigurasi, ralat sintaks program dan sebagainya.

Pada Platform Dagangan Kuantum FMZ, mesej ralat boleh dibahagikan kepada beberapa kategori:

  • Kesalahan sintaks strategi Kesilapan jenis ini adalah kesilapan yang paling biasa, yang biasanya disebabkan oleh keadaan bahawa pemula tidak biasa dengan pengaturcaraan, dan kod mereka menulis semasa kajian mempunyai kesilapan sintaks.

    img

    Kod ini ditulis tanpa aksara seperti kurung. Untuk jenis ralat ini, arahan ralat biasanya dapat dilihat di halaman penyuntingan strategi, dan di bawah keadaan itu, strategi tidak dapat dijalankan (sebaik strategi dijalankan, akan ada ralat yang dilaporkan, seperti yang ditunjukkan dalam gambar).

    imgOleh itu, anda boleh membuat kebiasaan untuk melihat halaman penyuntingan strategi selepas selesai menulis kod, untuk melihat jika ada salib merah kecil; jika ada, itu bermakna terdapat kesilapan yang jelas.

  • Pengecualian program semasa operasi yang disebabkan oleh program strategi BUG Jika program mempunyai bug semasa pengoperasiannya, pencetus pengecualian akan membuat program berhenti secara tidak normal, dan jenis mesej ralat ini akan dipaparkan.

    img

    img

    Kesilapan jenis ini boleh menyebabkan program pengecualian, dan menghentikan program daripada berjalan.

  • Kesilapan disebabkan oleh konfigurasi dan tetapan yang tidak betul

    Di platform FMZ, semua pasangan dagangan ditakrifkan dalam bentukX_Y, di mana X mewakili nama mata wang dagangan, dan Y mewakili nama mata wang sebut harga (mata wang sebut harga pasangan dagangan dalam kontrak masa depan crypto-margin biasanya dinyatakan dalam USD, dan yang diperkenalkan dalam artikel sebelumnya). Sebagai contoh,BTC_USDT; anggap saya menulisnya salah, saya menulisnya ke dalamBTC-USDT.

    img

    Pelaporan ralat dalam sistem backtest pada platform FMZ:

    img

    Laporan ralat dalam bot:

    img

    Atau, kesilapan yang paling biasa yang sering dihadapi oleh pemula:

    img

    Kesilapan jenis ini disebabkan oleh pembatalanAPI KEYdalam objek pertukaran yang dikonfigurasikan selepas pengubahsuaian kata laluan akaun FMZ (kunci API pengguna semuanya disulitkan oleh hujung penyemak imbas dan dikonfigurasikan pada platform FMZ). Itu akan membuat strategi tidak dapat dimulakan, yang akan menyebabkan ralat yang dilaporkan.

  • Kesilapan disebabkan oleh antara muka panggilan

    Kesalahan panggilan antara muka sering berlaku semasa menjalankan strategi. Dalam artikel sebelumnya kita telah mengkaji dan belajar bahawa antara muka pada platform FMZ dibahagikan kepadaantara muka yang membuat permintaan rangkaiandanantara muka yang tidak membuat permintaan rangkaian. Kesalahan antara muka tidak akan menyebabkan program strategi berhenti secara langsung. Biasanya, kerana pengecualian panggilan antara muka, data yang salah dikembalikan, dan strategi tidak melakukan toleransi kesalahan. Kemudian, kesalahan pengecualian program yang disebabkan oleh data yang salah menyebabkan program berhenti (konsep toleransi kesalahan telah diperkenalkan dalam artikel sebelumnya).

    Di sini saya menyenaraikan beberapa mesej ralat antara muka yang membuat permintaan rangkaian:

    • Masa henti rangkaian

      img

      Salah satu mesej ralat yang sering dihadapi oleh pemula adalah disebabkan oleh penggunaan peranti rangkaian domestik (PC atau pelayan domestik).

    • Kesalahan http 429

      img

      Ia adalah salah satu mesej ralat klasik; alasannya adalah bahawa antara muka platform dipanggil terlalu kerap, melebihi had kekerapan platform. (disebutkan dalam artikel sebelumnya). Sesetengah pelajar baru mungkin mengatakan bahawa ralat tidak akan timbul jika mereka memohon kunci API beberapa platform atau beberapa akaun platform lagi. Kita perlu tahu bahawa had kekerapan mengakses antara muka oleh platform biasanya berdasarkan alamat IP. Sederhananya, selagi semua permintaan yang dihantar dari alamat IP dikira pada alamat, pelayan platform akan menafikan akses IP, jika bilangan permintaan melebihi had.

    • Kesalahan perkhidmatan antara muka platform

      Kesalahan 429 dan timeout yang disebutkan di atas adalah kesalahan pada lapisan rangkaian. Jika terdapat masalah pada lapisan perkhidmatan antara muka platform, kesalahan juga akan dilaporkan. Sebagai contoh, saya ingin mendapatkan sebut harga pasaran spot, tetapi saya menetapkan pasangan dagangan yang tidak wujud. Saya mengujinya dalam alat debugging platform FMZ. Alat debugging adalah alat pengujian 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.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}
      

      Mesej ralat di sini bermakna pasangan dagangan tidak sah (lihat di sini:"err-msg":"invalid symbol")). Sebagai contoh, terdapat banyak kesilapan berkaitan perkhidmatan. Sebagai contoh, apabila menetapkan leverage, beberapa platform tidak menyokong nilai leverage dengan angka perpuluhan. Jika nilai leverage mempunyai angka 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 membuat permintaan rangkaian.

      img

      Walau bagaimanapun, jika parameter diteruskan atau ditulis salah, kesilapan juga akan dilaporkan.

      img

    Tidak kira apa jenis ralat, mesej ralat yang dipaparkan adalah maklumat utama untuk mencari masalah, iaitu anda boleh memberitahu masalah dari mesej ralat. anda boleh menggunakan alat terjemahan untuk menterjemahkan maklumat ralat dalam bahasa yang anda boleh baca, untuk mengekstrak kata-kata kunci. sebagai contoh,"err-msg":"invalid symbol"Anda mungkin boleh tahu kesilapan ini disebabkan oleh tetapan pasangan dagangan yang salah, untuk simbol biasanya mewakili kod dagangan dan pasangan dagangan dalam bahasa Inggeris. Untuk mesej ralat, kami akan menutup perbincangan di sini.https://www.fmz.com/bbs-topic/1427.

Sistem Ujian Belakang

Sistem backtest juga merupakan titik utama alat kuantitatif. Sistem backtest boleh dengan mudah menguji prototaip strategi, dan pada mulanya memeriksa bug dan masalah logik yang berpotensi dalam strategi, tetapi sistem backtest perlu dilihat secara rasional. Sistem backtest boleh mencerminkan beberapa masalah strategi ke tahap tertentu.

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

  • JavaScript

    Ujian belakang dilakukan di penyemak imbas, dan ia menggunakan sumber perkakasan tempatan.

  • Python

    Dalam backtest pada docker, anda boleh memilih yang docker untuk menetapkan kepada (sama ada docker yang digunakan oleh anda sendiri, atau docker awam platform FMZ). Memandangkan beban besar docker awam di platform FMZ, disyorkan untuk menggunakan backtest docker tempatan (Itu juga akan lebih cepat. Dalam backtest docker awam, apabila ia terlalu banyak, beberapa tugas backtest akan dibatalkan, dengan hasil backtest terganggu).

  • C++

    Tidak seperti bahasa skrip, strategi bahasa C ++ perlu disusun dan kemudian dilaksanakan. Strategi bahasa C ++ akan disusun terlebih dahulu di platform FMZ (server) (jika terdapat masalah dengan penulisan kod, penyusunan mungkin tidak lulus, dan mesej ralat akan diminta secara langsung). Selepas penyusunan dilewatkan, ia akan diuji semula di platform FMZ (server).

  • Mylangage

    Lapisan bawah dilaksanakan oleh JavaScript, dan backtest juga dilakukan di penyemak imbas.

  • Penglihatan

    Lapisan bawah dilaksanakan oleh JavaScript, dan backtest juga dilakukan di pelayar

Sistem backtest platform FMZ Quant Trading mempunyai dua mod backtest (tidak kira bahasa mana strategi ditulis, mod backtest adalah tetapan sistem backtest, dan pilihan tetapan adalah sama untuk semua bahasa yang disokong di FMZ).

img

Untuk arahan sistem backtest, anda boleh merujuk kepada bahagian yang berkaitan dengan tutorial penulisan strategi di platform FMZ:

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

    1. Ujian belakang tahap simulasi Ujian belakang tahap simulasi, secara amnya, adalah untuk menjana data harga nod masa 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 dipaparkan dalam imej berikut:img

    Sudah tentu, ia adalah sedikit lebih rumit daripada apa yang ditunjukkan dalam gambar untuk merealisasikan simulasi dalam sistem backtest, yang tidak akan dibincangkan lebih lanjut di sini. Selepas mengetahui prinsip, anda perlu memberi perhatian kepada kelemahan-kelemahan backtest tahap simulasi. Walaupun backtest tahap simulasi sangat cepat (kerana harga yang dihasilkan oleh simulasi tidak harga sebenar kedua-dua kedua dikeluarkan secara berturut-turut).trend perubahan tik yang disimulasikan, strategi akan berfungsi dengan sangat baik (tetapi sebenarnya, harga mungkin tidak berubah dengan trend, walaupun harga berada dalam struktur bar K-line). K-garis yang digunakan untuk menjana data tik simulasi di sini dipanggil bawah K-garis, dan tempoh K-garis dipanggiltempoh garis K bawah, yang ditetapkan pada halaman tetapan strategi sebagai gambar berikut:

    img

    Di sini saya menetapkan 1 minit, yang bermaksud menggunakan data K-garis dengan tempoh 1 minit sebagai sumber data untuk menjana simulasi data tik.

    Terdapat satu lagi titik bahawa, untuk strategi frekuensi tinggi, backtest tahap simulasi jelas tidak sesuai. tetapi, untuk strategi trend, backtest tahap simulasi boleh, ke beberapa meluas, menunjukkan prestasi strategi.

    1. Ujian belakang tahap pasaran sebenar Selepas bercakap tentang tahap simulasi, mari kita bercakap tentang tahap pasaran sebenar. Secara umum, backtest tahap pasaran sebenar adalah untuk benar-benar melepaskan data harga kedua-dua dalam ujian, dan membiarkan strategi untuk mengulangi harga setiap saat di pasaran. Mod backtest jenis ini boleh menguji beberapa strategi perdagangan dengan kekerapan yang tinggi, dan mendapatkan hasil dengan nilai rujukan tertentu. Kelemahannya adalah bahawa jumlah data backtest pada tahap pasaran sebenar terlalu besar, dan ia tidak boleh diuji dalam julat masa yang besar (biasanya julat masa kurang dari 1 hari).tiada keperluan untuk sejarah perdagangan(data sejarah perdagangan, dan data kedalaman pasaran juga mempunyai snapshot kedua-dua pada tahap pasaran sebenar backtest, jadi jumlah data tahap pasaran sebenar backtest adalah besar).

    img

Di mana sumber data sistem backtest FMZ Quant? Sistem backtest menggunakan data papan pemuka pada platform FMZ secara lalai. Papan pemuka FMZ secara automatik mengumpul data pasaran set setiap mata wang pada setiap platform dan membekalkannya kepada sistem backtest platform.

    1. Gunakan data papan pemuka FMZ Ia disebut dalam artikel sebelumnya:https://www.fmz.com/bbs-topic/9245#Platform Dagangan Kuantitatif. Data backtest yang disediakan oleh platform hanya menyokong sebilangan pasangan dagangan yang terhad. (data backtest keseluruhan pasaran dan semua mata wang adalah jumlah astronomi, dan tidak realistik untuk mengumpul semuanya. Platform telah mengumpul data pasaran platform arus perdana dan mata wang arus perdana.)
    1. Gunakan data sumber data tersuai Anda boleh memilih pilihan pada halaman backtest untuk menetapkan sumber data tersuai. Secara ringkasnya, jika anda mempunyai data dari platform sendiri, anda boleh membekalkannya kepada sistem backtest di platform FMZ untuk backtest, mengikut keperluan format platform FMZ.

    img

Terdapat juga beberapa arahan mengenai sumber data tersuai dalam dokumentasi FMZ API:https://www.fmz.com/api#Sumber Data Sesuai

Terdapat juga beberapa skim dalam Digest di platform FMZ. Pemula, yang berminat dengan itu, boleh merujuk kepada skim-skim tersebut dan mengkaji mereka.

Belajar, Uji dan Berfikir

Anda tidak boleh melakukan perdagangan berprogram dan kuantitatif tanpabelajar, Ujiandanberfikir. Ia tidak berkesan untuk berfikir tentang soalan dari apa-apa.mencari maklumat, makaCuba sendiri., danberfikir dan menganalisis. Jika masalah tidak diselesaikan, ulangi tindakan di atas.

Tetapi, biasanya apabila pemula menghadapi masalah, mereka akan merasa:

Oh, menulis strategi terprogram dan kuantitatif adalah sangat sukar! Masih keliru tentangnya, walaupun saya telah mengkaji untuk seketika! Hanya mahu menyerah sebelum mula! ...

Memulakan dengan platform FMZ sebenarnya sangat mudah dan mudah. Pertama sekali, anda mesti pandai mencari maklumat. Terdapat banyak maklumat di Square, Forums dan Digest di Platform Perdagangan Kuantum FMZ.

img

Kemudian, ada keupayaan operasi; menggunakan sistem backtest dan alat debugging boleh dengan mudah membuat ujian. Ini tidak bermakna untuk menguji strategi yang lengkap. Malah, jika anda mempunyai asas sifar, anda juga boleh belajar asas program JavaScript secara langsung pada sistem backtest FMZ Quant.

Ini adalah laman web tutorial di mana saya sering belajar JS:https://www.runoob.com/js/js-loop-for.html; laman web ini tidak terhad kepada JS, dan 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 cubalah!

Saya melihat contoh seperti ini:imgJika saya mahu menguji, saya boleh menggunakan sistem backtest FMZ untuk menguji untuk kajian.

Tetapkan platform secara rawak pada sistem backtest.img

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 the email address? ", " Answer:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}

img

Lihat, alat yang indah untuk belajar! Sebagai contoh, jika saya mahu belajar bagaimana untuk menulis logik gelung bahasa JavaScript, dan kemudian cuba ia:

Mengikut urutan array, cetak setiap elemen pembolehubah array dalam gelung:

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 terdorong untuk belajar dengan serta-merta? Sebenarnya, di FMZ, anda boleh mempelajari asas-asas JavaScript dengan mencuba operasi pada sistem backtest sambil menonton tutorial JavaScript. Selepas sintaks JavaScript hampir dikuasai, anda boleh memasuki peringkat seterusnya, untuk benar-benar menggunakan antara muka platform untuk mendapatkan data dan ujian.alat debugdi FMZ untuk menjalankan ujian antara muka sebenar. Kemudian, anda perlu berfikir lebih banyak, membuat kesimpulan dari satu kes, dengan ujian, pengesahan, dan analisis perbandingan, dan sebagainya. Yang membuat pembelajaran dan memulakan sangat cepat.


Lebih lanjut