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.
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).
Oleh 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.
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 BTC_USDT
; anggap saya menulisnya salah, saya menulisnya ke dalamBTC-USDT
.
Pelaporan ralat dalam sistem backtest pada platform FMZ:
Laporan ralat dalam bot:
Atau, kesilapan yang paling biasa yang sering dihadapi oleh pemula:
Kesilapan jenis ini disebabkan oleh pembatalanAPI KEY
dalam 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
Salah satu mesej ralat yang sering dihadapi oleh pemula adalah disebabkan oleh penggunaan peranti rangkaian domestik (PC atau pelayan domestik).
Kesalahan http 429
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.
Hasil pelaksanaan alat debugging; tidak ada perbezaan antara pelaksanaan alat debugging dan pelaksanaan bot.
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.
Walau bagaimanapun, jika parameter diteruskan atau ditulis salah, kesilapan juga akan dilaporkan.
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
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).
Untuk arahan sistem backtest, anda boleh merujuk kepada bahagian yang berkaitan dengan tutorial penulisan strategi di platform FMZ:
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:
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:
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.
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.
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.
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
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:Jika saya mahu menguji, saya boleh menggunakan sistem backtest FMZ untuk menguji untuk kajian.
Tetapkan platform secara rawak pada sistem backtest.
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))
}
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])
}
}
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.