
Sebagian besar strategi perlu diuji ulang untuk verifikasi sebelum diterapkan. FMZ mendukung beberapa jenis mata uang digital spot, futures, dan kontrak berjangka, serta semua jenis komoditas berjangka. Namun, mekanisme pengujian ulang pada Inventor Quantitative Platform berbeda dengan pengujian ulang onbar umum, sehingga menimbulkan kebingungan bagi banyak pemula. Artikel ini akan menjelaskan dan menjawab beberapa pertanyaan umum pengujian ulang secara rinci.

Seperti yang ditunjukkan pada gambar di atas, waktu mulai hingga waktu berakhirnya pengujian ulang dapat dianggap sebagai sumbu waktu. Saat melakukan pengujian ulang, titik waktu pengujian ulang bergerak dari kiri ke kanan sepanjang sumbu untuk memulai pengujian ulang. Pada titik waktu ini, hanya titik ini yang dapat Strategi ini menggunakan data historis sebelumnya untuk melakukan pembelian dan penjualan berdasarkan data ini, yang pada akhirnya menghasilkan laba atau rugi. Jelasnya, distribusi titik waktu pengujian ulang bersifat diskret, dan kerapatan distribusi menggambarkan keakuratan pengujian ulang. Tentu saja, mengingat semakin padat titik waktu pengujian ulang, semakin lama waktu yang dibutuhkan, sistem pengujian ulang yang sebenarnya perlu membuat keseimbangan antara akurasi dan efisiensi.
Mekanisme backtesting onbar didasarkan pada K-line, yaitu setiap K-line menghasilkan titik waktu backtesting, di mana harga pembukaan tinggi dan harga penutupan rendah, volume perdagangan, dan informasi lain dari K-line saat ini dapat diperoleh, seperti serta informasi sebelum titik waktu ini. Informasi historis K-line. Kerugian mekanisme ini jelas: hanya satu transaksi beli dan jual yang dapat dihasilkan pada garis K, dan harga biasanya didasarkan pada harga penutupan garis K. Selain itu, satu garis K hanya dapat memperoleh empat harga: pembukaan tinggi dan penutupan rendah. Mengenai bagaimana harga berubah dalam garis K, apakah harga tertinggi terjadi lebih dulu atau harga terendah terjadi lebih dulu, dll., tidak ada cara untuk memperoleh informasi tersebut. Mengambil contoh K-line 1 jam, dalam perdagangan nyata, informasi pasar akan diperoleh setiap beberapa detik, dan instruksi perdagangan akan dikeluarkan selama sesi perdagangan, tanpa harus menunggu K-line berakhir. Keuntungan mekanisme pengujian ulang onbar adalah mudah dipahami dan kecepatan pengujian ulangnya sangat cepat.

Gambar di atas adalah antarmuka pengaturan pengujian ulang FMZ. Mode pengujian ulang dibagi menjadi dua jenis: pengujian ulang tingkat simulasi dan pengujian ulang waktu nyata, yang diperkenalkan di bawah ini:
Apa itu kutu?
Berbeda dengan data K-line, tick adalah harga pada titik waktu tertentu. Berdasarkan data K-line, kita sebenarnya hanya mengetahui waktu terjadinya harga pembukaan dan harga penutupan. Tidak jelas kapan harga mencapai titik tertinggi dalam siklus K-line. Faktanya, data K-line juga dihasilkan berdasarkan kutu. Berdasarkan data K-line, kita juga dapat mensimulasikan perubahan dalam tanda centang tertentu dari periode K-line. Meskipun itu bukan tanda centang yang sebenarnya, itu dapat membuat pengujian ulang kita lebih akurat. Selain itu, periode K-line yang digunakan untuk simulasi bisa jauh lebih kecil daripada periode yang digunakan untuk pengujian ulang, sehingga akurasinya lebih tinggi.
Pengujian ulang tingkat simulasi
Untuk pengujian ulang tingkat simulasi, Anda perlu memilih periode K-line dan periode K-line mendasar yang digunakan untuk pengujian ulang. Misalnya, jika strategi menggunakan backtesting per jam dan garis K yang mendasarinya adalah 5 menit, maka interval antara titik waktu backtesting akan didasarkan pada tick yang dihasilkan oleh simulasi garis K 5 menit, yang secara khusus tercermin dalam kontinu perubahan harga penutupan K-line 1 jam terakhir. Mekanisme spesifik untuk menghasilkan tanda centang dalam garis K berdasarkan garis K mirip dengan MT4. Ada penjelasan terperinci dalam posting ini: https://www.fmz.com/bbs-topic/662

Kami menggunakan strategi sederhana untuk menunjukkan mekanisme ini. Kode strateginya adalah sebagai berikut:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
var ticker = exchange.GetTicker()
Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
//js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
}
}
Hasil pengujian ulang:
Untuk setiap garis K, hanya tanda centang pembukaan dan penutupan yang ditetapkan, dan 12 tanda centang simulasi ditambahkan di antaranya, sehingga satu garis K akan membentuk 14 titik waktu pengujian ulang. Jika pengujian ulang dilakukan selama satu hari, siklus K-line yang mendasarinya adalah 5 menit, dengan total 24×12×14 = 4032 titik waktu, sedangkan pengujian ulang onBar tradisional hanya memiliki 24, yang sangat meningkatkan akurasi. Posisi pembukaan dan penutupan juga dapat diselesaikan dalam satu siklus K-line. Meskipun tanda centang yang dihasilkan di tengah disimulasikan, dampaknya tidak signifikan. Dalam pengujian ulang, selama harga bid lebih besar dari harga ask dan harga ask lebih kecil dari harga bid, maka transaksi akan dicocokkan. Metode pengujian ulang ini memperhitungkan kecepatan dan akurasi pengujian ulang, dan direkomendasikan untuk semua orang.
Pengujian ulang waktu nyata
Pengujian ulang waktu nyata menggunakan tick nyata, dengan interval terpendek antara setiap titik waktu hanya 1 detik. Akurasi pengujian ulang ini akurat hingga setiap detik, tetapi karena jumlah data yang besar, kecepatan pengujian ulang menjadi lambat dan waktu pengujian ulang tidak dapat ditentukan. dijamin. Sangat panjang. Gambar di bawah menunjukkan tanda centang sebenarnya. Pengujian ulang waktu nyata dapat digunakan untuk memvalidasi strategi secara akurat.

Bahkan pengujian ulang waktu nyata dan perdagangan nyata masih memiliki kekurangan data yang jelas, seperti ketidakmampuan untuk mendapatkan perdagangan riwayat transaksi, ketidakmampuan untuk mendapatkan perubahan kedalaman aktual, penundaan jaringan nyata, dll. Meski begitu, sistem pengujian ulang FMZ saat ini relatif lengkap dan memiliki banyak fungsi kecil, seperti simulasi kesalahan jaringan, yang dapat digunakan untuk menguji toleransi kesalahan strategi, simulasi penundaan jaringan, menggambar ikon pasar, dll.
Mengapa hanya beberapa pasangan perdagangan dan bursa yang didukung untuk pengujian ulang?
Saat ini, hanya ada beberapa pasangan data perdagangan umum. Faktanya, hubungan antara strategi dan produk tidak terlalu besar, tetapi cukup untuk memverifikasi strategi.
Bisakah mensimulasikan tingkat pendanaan yang dikenakan oleh BitMEX?
Ya, Anda dapat mengaktifkan pencatatan peristiwa dengan memilih BitMEX Backtest.

Di mana pengujian ulang dilakukan?
Pengujian ulang strategi JavaScript dilakukan di peramban, dan Python dapat memilih server FMZ atau hostnya sendiri.
Bisakah log pengujian ulang diunduh?
Ya, ada tombol unduh di sudut kanan atas log
Bisakah saya melakukan uji ulang secara lokal?
FMZ telah membuat mesin pengujian ulang Python-nya menjadi sumber terbuka. Referensi: https://www.fmz.com/bbs-topic/1687