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.
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).
Jadi 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.
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
.
Satu ralat dilaporkan pada sistem backtesting platform FMZ:
Selain itu, satu kesilapan yang sering dihadapi oleh pemula:
Kesilapan jenis ini disebabkan oleh pengubahsuaian kata laluan pada akaun platform FMZ, yang mengakibatkan kelulusanAPI KEY
dalam 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 KEY
untuk 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.
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:
Walau bagaimanapun, jika parameter itu diteruskan dengan salah atau digariskan, satu kesilapan akan dilaporkan.
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:
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).
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.comSudah 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:
Tetapan 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.
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.
Terdapat juga beberapa nota mengenai sumber data tersuai dalam dokumentasi FMZ API:https://www.fmz.com/api#custom-data-source
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.
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:Saya mahu menguji, dan saya boleh menggunakan sistem backtesting platform FMZ untuk menguji dan belajar.
Tetapkan pertukaran rawak pada sistem backtesting
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))
}
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])
}
}
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.