Mekanisme FMZ Backtest

Penulis:Ninabadass, Dicipta: 2022-03-23 10:06:22, Dikemas kini: 2022-03-28 13:42:35

Kebanyakan strategi memerlukan backtest untuk pengesahan sebelum dilakukan dalam bot. FMZ menyokong kontrak spot, niaga hadapan dan kekal beberapa mata wang kripto, serta semua jenis niaga hadapan komoditi. Walau bagaimanapun, mekanisme backtest platform FMZ Quant berbeza dengan backtest onbar biasa, yang telah menyebabkan kekeliruan bagi banyak pemula.

Bagaimana sistem backtest berfungsi?

img

Pada gambar di atas, masa dari masa permulaan backtest hingga masa akhir boleh dianggap sebagai paksi masa. Semasa backtest, titik masa backtest bergerak dari kiri ke kanan di sepanjang paksi untuk memulakan backtest. Pada satu titik masa, hanya data sejarah sebelum titik masa ini boleh diperoleh. Berdasarkan data sejarah, strategi membuat pembelian dan penjualan, dan akhirnya membentuk keuntungan dan kerugian. Jelas, pengedaran titik masa backtest adalah diskrit, dan kepadatan pengedaran mewakili ketepatan backtest. Sudah tentu, memandangkan semakin padat titik masa backtest, semakin lama masa yang diperlukan, sistem backtest sebenar perlu membuat pilihan antara ketepatan dan kecekapan.

Sistem onBar Backtest tradisional

Mekanisme backtest onbar adalah berdasarkan pada K-line, iaitu, setiap K-line menjana titik masa backtest. Pada titik masa, anda boleh mendapatkan maklumat, seperti harga tertinggi, terendah, terbuka dan ditutup K-line semasa, jumlah dagangan, dll., serta maklumat K-line sejarah sebelum titik masa ini.

Kelemahan mekanisme ini adalah jelas: pada K-line, hanya satu perdagangan boleh dihasilkan, dan harga biasanya berdasarkan harga penutupan K-line. K-line hanya boleh mendapatkan empat harga, iaitu harga terbuka, penutupan, tertinggi dan terendah, tetapi tidak dapat mendapatkan maklumat, seperti perubahan harga pada satu K-line, dan sama ada harga terendah berlaku terlebih dahulu atau harga tertinggi terlebih dahulu. Ambil K-line 1 jam sebagai contoh. Maklumat pasaran mesti diperoleh setiap beberapa saat di bot, dan pesanan perdagangan juga akan dikeluarkan di bot bukannya menunggu K-line berakhir. Kelebihan mekanisme backtest onbar adalah mudah difahami dan kelajuan backtest sangat cepat.

FMZ Quant onTick Backtest Sistem

img

Gambar di atas menunjukkan antara muka tetapan FMZ backtest. mod backtest dibahagikan kepada dua jenis, iaitu tahap simulasi dan tahap pasaran sebenar yang akan diperkenalkan secara berasingan di bawah:

Apa itu kutu?

Tidak seperti data K-line, tik adalah harga pada titik masa tertentu. Menurut data K-line, kita sebenarnya hanya tahu bila harga terbuka dan harga penutupan berlaku. Tidak jelas bila harga mencapai nilai tertinggi dalam tempoh K-line. Sebenarnya, data K-line juga dihasilkan berdasarkan tik. Menurut data K-line, juga mungkin untuk mensimulasikan perubahan tik tertentu dalam tempoh K-line. Walaupun ia bukan tik sebenar, ia boleh membuat backtest kita lebih tepat. Dan tempoh K-line berdasarkan simulasi boleh jauh lebih pendek daripada tempoh yang digunakan untuk backtest, jadi ketepatan lebih tinggi.

Ujian belakang tahap simulasi

Untuk backtest tahap simulasi, anda perlu memilih tempoh K-garis dan tempoh K-garis bawah yang digunakan untuk backtest. Sebagai contoh, jika strategi menggunakan backtest garis sejam, dan K-garis bawah ditetapkan kepada 5 minit, maka selang masa titik backtest akan berdasarkan tanda yang disimulasikan oleh K-garis 5 minit, yang tercermin dalam perubahan berterusan harga penutupan K-garis dalam 1 jam terakhir. Mekanisme penjanaan tanda di K-garis mengikut K-garis serupa dengan MT4. Terdapat arahan terperinci dalam catatan ini:https://www.fmz.com/bbs-topic/662

img
Kami menggunakan strategi mudah untuk menunjukkan mekanisme ini; kod strategi:

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods 
      var ticker = exchange.GetTicker()
      Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
      //js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time 
  }
}

Hasil ujian belakang:img

Hanya tik terbuka dan dekat setiap garis K yang ditetapkan, dan 12 tik yang disimulasikan ditambahkan di tengah-tengah, sehingga satu garis K akan membentuk 14 titik masa backtest. Jika anda backtest selama satu hari dengan tempoh K-line lapisan bawah 5 minit, jumlah 24 × 12 × 14 = 4032 titik masa akan dihasilkan, sementara onBar backtest tradisional hanya mempunyai 24, jadi ketepatan sangat meningkat. Operasi kedudukan terbuka dan dekat juga boleh diselesaikan dalam satu tempoh K-line. Walaupun tik pertengahan yang dihasilkan disimulasikan, itu tidak banyak mempengaruhi. Dalam backtest, selagi harga pesanan lebih besar daripada harga jual beli, dan harga pesanan jual lebih kecil daripada harga beli satu, backtest akan dipadankan.

Ujian belakang tahap pasaran sebenar

Ujian balik tahap pasaran sebenar menggunakan tik sebenar, dan selang paling pendek antara setiap titik masa hanya 1s. Ujian balik jenis ini tepat kepada perubahan setiap saat, tetapi kerana jumlah data yang besar, kelajuan ujian balik lambat dan masa ujian balik tidak boleh terlalu lama. Gambar di bawah menunjukkan tik sebenar. Ujian balik tahap pasaran sebenar boleh digunakan untuk mengesahkan strategi dengan tepat.

img

Perbezaan antara Backtest dan Bot

Walaupun backtest tahap pasaran sebenar dan perdagangan bot sebenar masih mempunyai kekurangan data yang jelas, seperti ketidakupayaan untuk mendapatkan perdagangan sejarah perdagangan, ketidakupayaan untuk mendapatkan perubahan kedalaman sebenar, kelewatan rangkaian sebenar dan sebagainya.

Soalan Lazim

Mengapa hanya beberapa pasangan dagangan dan platform yang disokong untuk backtest?

Pada masa ini, hanya terdapat data beberapa pasangan dagangan biasa. Malah, hubungan antara strategi dan pelbagai tidak sangat rapat, jadi ia cukup untuk mengesahkan strategi.

Bolehkah ia mensimulasikan BitMEX untuk mengenakan kadar pembiayaan?

Sudah tentu, anda boleh memilih BitMEX backtest untuk membuka log.img

Di mana backtest dijalankan?

Ujian belakang strategi JavaScript dilakukan di penyemak imbas, sementara Python boleh memilih pelayan FMZ atau dockernya sendiri untuk mengoperasikan ujian belakang.

Bolehkah log backtest dimuat turun?

Sudah tentu, ada butang muat turun di sudut kanan log.

Boleh backtest dikendalikan secara tempatan?

FMZ membuka sumber enjin backtest Python.https://www.fmz.com/bbs-topic/1687


Lebih lanjut