Deskripsi mekanisme FMZ Backtest

Penulis:Ninabadass, Dibuat: 2022-03-23 10:06:22, Diperbarui: 2022-03-28 13:42:35

Sebagian besar strategi membutuhkan backtest untuk verifikasi sebelum dilakukan di bot. FMZ mendukung spot, futures dan kontrak abadi dari beberapa cryptocurrency, serta semua jenis komoditas berjangka. Namun, mekanisme backtest dari platform FMZ Quant berbeda dari backtest onbar yang umum, yang telah menyebabkan kebingungan bagi banyak pemula.

Bagaimana sistem backtest bekerja?

img

Pada gambar di atas, waktu dari waktu awal backtest hingga waktu akhir dapat dianggap sebagai sumbu waktu. Selama backtest, titik waktu backtest bergerak dari kiri ke kanan di sepanjang sumbu untuk memulai backtest. Pada satu titik waktu, hanya data sejarah sebelum titik waktu ini yang dapat diperoleh. Berdasarkan data sejarah, strategi membuat pembelian dan penjualan, dan akhirnya membentuk keuntungan dan kerugian. Tentu saja, mengingat bahwa semakin padat titik waktu backtest, semakin lama waktu yang dibutuhkan, sistem backtest yang sebenarnya perlu membuat pilihan antara akurasi dan efisiensi.

Sistem onBar Backtest Tradisional

Mekanisme backtest onbar didasarkan pada K-line, yaitu, setiap K-line menghasilkan titik waktu backtest. Pada titik waktu, Anda dapat memperoleh informasi, seperti harga tertinggi, terendah, terbuka dan ditutup K-line saat ini, volume perdagangan, dll, serta informasi K-line sejarah sebelum titik waktu ini.

Kelemahan dari mekanisme ini jelas: pada K-line, hanya satu perdagangan yang dapat dihasilkan, dan harga biasanya didasarkan pada harga penutupan K-line. K-line hanya dapat memperoleh empat harga, yaitu harga terbuka, penutupan, tertinggi dan terendah, tetapi tidak dapat memperoleh informasi, seperti perubahan harga pada satu K-line, dan apakah harga terendah terjadi pertama atau harga tertinggi pertama. Ambil K-line 1 jam sebagai contoh. Informasi pasar harus diperoleh setiap beberapa detik di bot, dan pesanan perdagangan juga akan dikeluarkan di bot alih-alih menunggu K-line berakhir. Keuntungan dari mekanisme backtest onbar adalah mudah dimengerti dan kecepatan backtest sangat cepat.

FMZ Quant onTick Backtest Sistem

img

Gambar di atas menunjukkan antarmuka pengaturan backtest FMZ. Mode backtest dibagi menjadi dua jenis, yaitu tingkat simulasi dan tingkat pasar nyata yang akan diperkenalkan secara terpisah di bawah ini:

Apa itu kutu?

Tidak seperti data K-line, tick adalah harga pada titik waktu tertentu. Menurut data K-line, kita sebenarnya hanya tahu kapan harga terbuka dan harga penutupan terjadi. Tidak jelas kapan harga mencapai nilai tertinggi dalam periode K-line. Bahkan, data K-line juga dihasilkan berdasarkan tick. Menurut data K-line, juga mungkin untuk mensimulasikan perubahan tick tertentu dalam periode K-line. Meskipun bukan tick nyata, itu dapat membuat backtest kita lebih akurat. Dan periode K-line berdasarkan simulasi dapat jauh lebih pendek daripada periode yang digunakan untuk backtest, sehingga akurasi lebih tinggi.

Simulasi Tingkat Backtest

Untuk backtest tingkat simulasi, Anda perlu memilih periode K-line dan periode K-line sublayer yang digunakan untuk backtest. Misalnya, jika strategi menggunakan backtest line per jam, dan K-line sublayer ditetapkan menjadi 5 menit, maka interval titik waktu backtest akan didasarkan pada tick yang disimulasikan oleh K-line 5 menit, yang tercermin dalam perubahan terus-menerus harga penutupan K-line dalam 1 jam terakhir. Mekanisme menghasilkan tick di K-line sesuai dengan K-line mirip dengan MT4. Ada instruksi rinci dalam posting ini:https://www.fmz.com/bbs-topic/662

img
Kami menggunakan strategi sederhana untuk menunjukkan mekanisme ini; kode 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 tes balik:img

Hanya open dan close ticks dari setiap K-line yang tetap, dan 12 ticks yang disimulasikan ditambahkan di tengah, sehingga satu K-line akan membentuk 14 titik waktu backtest. Jika Anda backtest selama satu hari dengan periode K-line sublayer 5 menit, total 24×12×14 = 4032 titik waktu akan dihasilkan, sedangkan backtest onBar tradisional hanya memiliki 24, sehingga akurasi sangat meningkat. Operasi posisi terbuka dan dekat juga dapat diselesaikan dalam satu periode K-line. Meskipun ticks yang dihasilkan menengah disimulasikan, itu tidak banyak mempengaruhi. Dalam backtest, selama harga order lebih besar dari harga jual beli, dan harga order jual lebih kecil dari harga beli satu, backtest akan dicocokkan. Metode backtest ini memperhitungkan kecepatan dan akurasi backtest dan direkomendasikan untuk semua orang.

Backtest Tingkat Pasar Nyata

Backtest tingkat pasar nyata menggunakan tik nyata, dan interval terpendek antara setiap titik waktu hanya 1s. Jenis backtest ini akurat pada perubahan per detik, tetapi karena jumlah data yang besar, kecepatan backtest lambat dan waktu backtest tidak bisa terlalu lama. Gambar di bawah ini menunjukkan tik nyata.

img

Perbedaan antara Backtest dan Bot

Bahkan backtest tingkat pasar nyata dan perdagangan bot nyata masih memiliki kekurangan data yang jelas, seperti ketidakmampuan untuk mendapatkan perdagangan sejarah perdagangan, ketidakmampuan untuk mendapatkan perubahan kedalaman yang sebenarnya, penundaan jaringan nyata, dan sebagainya.

FAQ

Mengapa hanya beberapa pasangan perdagangan dan platform yang didukung untuk backtest?

Saat ini, hanya ada data dari beberapa pasangan perdagangan umum. Bahkan, hubungan antara strategi dan variasi tidak sangat dekat, sehingga cukup untuk memverifikasi strategi.

Bisakah itu mensimulasikan BitMEX untuk menagih tingkat pendanaan?

Tentu, Anda dapat memilih BitMEX backtest untuk membuka log.img

Di mana backtest dioperasikan?

Backtest strategi JavaScript dilakukan di browser, sementara Python dapat memilih server FMZ atau docker sendiri untuk mengoperasikan backtest.

Bisakah log backtest diunduh?

Tentu saja, ada tombol download di sudut kanan log.

Dapatkah backtest dioperasikan secara lokal?

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


Lebih banyak