Mekanisme pencocokan transaksi tingkat Tick yang dikembangkan untuk backtesting strategi frekuensi tinggi

Penulis:Kebaikan, Dibuat: 2019-09-09 11:46:24, Diperbarui: 2023-11-07 20:51:21

img

Ringkasan

img

Apa yang paling penting ketika backtest strategi trading? kecepatan? indikator kinerja?

Jawabannya adalah akurasi! Tujuan dari backtest adalah untuk memverifikasi logika dan kelayakan strategi. Ini juga arti dari backtest itu sendiri, yang lain adalah sekunder. Hasil backtest yang benar-benar mencerminkan data historis strategi memiliki nilai referensi. kurva backtest yang tampaknya sempurna dapat menceritakan cerita yang bagus, tetapi tidak dapat dilakukan di lingkungan pasar nyata.

Data apa yang dibutuhkan untuk backtesting

Bagaimana untuk mencapai backtesting yang akurat adalah masalah yang banyak pedagang kuantitatif peduli tentang. hal pertama yang kita perlu mencari tahu adalah bahwa apa data yang dalam perdagangan, karena kualitas data telah sebagian besar menentukan kualitas backtest.

Untuk jenis data ini, kebanyakan orang mungkin berpikir tentang harga pembukaan, harga tertinggi, harga terendah, harga penutupan dan volume perdagangan pada grafik garis K. Untuk perbedaan yang lebih baik, kita menyebut data ini secara kolektif sebagai data Bar, yang dapat Anda pahami sebagai garis K. Tapi apakah Anda pernah berpikir tentang dari mana datanya berasal, dan di mana sumber data ini?

img

Pada kenyataannya, data dari bursa yang mengirim kembali tidak mengandung data Bar ini, hanya data Tick. Jadi apa itu data Tick? Anda dapat menggambarkan data di bursa sebagai sungai. Sungai ini berisi data rinci untuk setiap pesanan. Data Tick adalah sepotong dalam aliran data. Frekuensi adalah 2 sepotong per detik. ini adalah reproduksi dari situasi pasar tertentu.

Kemudian, data Bar didasarkan pada data Tick dan dibagi sesuai periode waktu. Data Bar 1 menit terdiri dari data Tick dalam waktu 1 menit, data Bar 5 menit terdiri dari data Tick dalam waktu 5 menit, dan sebagainya. Ini membentuk berbagai grafik menit, grafik per jam, grafik harian dan sebagainya. Garis K satu menit hanya memiliki satu data Bar, tetapi dapat berisi 120 data Tick. Oleh karena itu, data historis backtest dapat dibagi menjadi: data Bar dan data Tick, dan jumlah data dalam data Tick jauh lebih besar daripada jumlah data Bar dalam siklus yang sama.

Backtest berdasarkan data Bar

Sebagian besar perangkat lunak perdagangan kuantitatif di pasar mendukung backtesting data Bar. Karena jumlah data kecil, beban kerja mesin backtesting sangat disederhanakan. Oleh karena itu, backtesting ini biasanya sangat cepat, dan data sepuluh tahun dapat backtest dalam beberapa detik. Bahkan ketika backtest puluhan varietas futures pada saat yang sama tidak akan melebihi satu menit. Tapi backtesting data Bar memiliki banyak masalah:

  • Harga ekstrim

Sebagian besar pedagang tahu bahwa sulit untuk membeli atau menjual pada harga batas harian, tetapi dapat diperdagangkan dalam lingkungan backtest.

img

  • Kekosongan harga

Ketika harga tiba-tiba melompat dari batas terendah ke batas harga tertinggi atau muncul celah harga, itu ditunjukkan sebagai garis K positif besar pada grafik K-line siklus besar, tetapi tidak ada transaksi yang dilakukan selama seluruh waktu.

Sebagai contoh: garis K saat ini telah melayang di sekitar harga 5000, dan tiba-tiba naik ke 5100 di dekat penutupan pasar, dan hampir tidak ada pesanan dan transaksi yang tertunda di tengah.

  • Mencuri harga dan data masa depan

Saya percaya bahwa banyak pedagang kuantitatif telah mengalami lubang seperti itu, dan sebagian besar kurva backtest sudut 45 derajat berasal dari ini. Untuk memudahkan pemahaman semua orang, izinkan saya memberikan contoh lain: Kami tahu bahwa satu garis K memiliki 4 harga. Jika itu adalah garis k positif 1 menit, maka pembentukan garis K ini harus: harga pembukaan >>> harga terendah >>>> harga tertinggi >>> harga penutupan.

Namun, garis k siklus besar tidak akan begitu sederhana. Ia mungkin mencapai tinggi baru, kemudian rendah baru, dan kemudian menutup; ia juga mungkin mencapai rendah baru, kemudian tinggi baru, dan kemudian menutup; atau bahkan setelah putaran putaran dan putaran, ia mencapai rendah baru, dan kemudian tinggi baru, dan kemudian rendah baru, dan kemudian menutup; tapi hanya muncul sebagai garis K dengan bayangan atas dan bawah, ada banyak kemungkinan di tengah bagaimana terbentuknya.

Jika garis K muncul seperti ini: harga pembukaan 4950, harga terendah 4900, harga tertinggi 5100, harga penutupan 5050, garis K positif normal. Strategi Anda adalah: Jika harga terbaru melebihi harga tertinggi sebelumnya 5000, beli panjang, dan atur stop loss 1% setelah membuka posisi, yaitu, ketika harga turun di bawah 4950, itu akan melakukan stop loss.

Oke, mari kita mulai backtest:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

Tapi situasi sebenarnya bisa seperti ini:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Seperti yang dapat Anda lihat, contoh di atas, strategi yang sama, data yang sama, ada dua hasil yang sangat berbeda. alasannya masih karena perbedaan data. Dalam backtest tingkat Bar, jika Anda menggunakan backtest K-line harian, Anda tidak akan tahu bagaimana garis K ini terbentuk. Jika Anda menggunakan backtest K-line per jam, Anda tidak akan tahu garis k per jam ini terbentuk. Singkatnya, tes data Bar lemah!

  • Backtest berdasarkan data Tick

Jika Anda dapat menggunakan data Tick untuk backtesting dan analisis, tidak ada keraguan bahwa itu memiliki keuntungan besar. Namun, tampaknya tidak ada platform perdagangan kuantitatif untuk backtesting dan analisis data Tick di pasar. Misalnya, MT4 menggunakan data simulasi interpolasi. Ini hanya mensimulasikan perubahan dalam data, bukan data Tick nyata.

Tentu saja, ada perangkat lunak yang mengklaim dapat melakukan backtesting tingkat Tick. tetapi perangkat lunak ini membuat kesalahan fatal saat merancang mesin backtesting, yaitu: mekanisme pencocokan harga. apa artinya? jika data Tick saat ini adalah: harga jual 5001, harga beli 5000, jika pesanan pembelian saya yang sedang menunggu berada di 5000, di pasar nyata, itu pasti tidak dapat berdagang, tetapi kenyataannya tidak.

Perlu diketahui bahwa dalam lingkungan perdagangan nyata, pesanan yang kami tempatkan dicocokkan dalam aliran data Tick bursa. Aturan pencocokan bursa adalah: prioritas harga, prioritas waktu. Jika kedalaman pesanan tidak terlalu tebal pada saat ini, pesanan pembelian harga 5000 yang kami kirim kemungkinan akan diperdagangkan secara pasif.

  • Prinsip mesin backtesting berdasarkan data pasar

Oleh karena itu, platform FMZ Quant (fmz.com) Mesin backtesting tingkat Tick diciptakan, mesin backtesting ini tidak hanya mencocokkan pesanan berdasarkan prioritas harga dari data Tick. Menurut prioritas harga yang sama, jumlah pesanan tertunda dihitung untuk menentukan apakah pesanan tertunda saat ini telah mencapai kondisi transaksi pasif, sehingga mencapai lingkungan simulasi nyata.

  • Tick pertama adalah: Menjual: 101 Volume: 80 Beli: 100 Volume: 30

  • Tick kedua adalah: Menjual: 101 Volume: 60 Beli: 100 Volume: 50

  • Tick ketiga adalah: Menjual: 101 Volume: 80 Beli: 100 Volume: 30

  • Tick keempat adalah: Menjual: 101 Volume: 80 Beli: 100 Volume: 10

Untuk Tick pertama, harga beli adalah 100, jumlah pesanan tertunda adalah 30 lot; pada saat ini, sinyal beli datang, beli 20 lot dengan harga 100; Tick kedua dihasilkan, harga beli adalah 100, dan jumlah pesanan tertunda adalah 50. ada 20 lot pesanan tertunda; Tick ketiga diproduksi, harga beli adalah 100, dan jumlah pesanan tertunda adalah 30 lot. Ini membuktikan bahwa 20 lot telah dieksekusi atau dibatalkan, dan kami menutup kesepakatan; Tick keempat diproduksi, harga beli adalah 100, dan jumlah pesanan tertunda adalah 10 lot. Itu adalah penjual besar, dan semua pesanan pembelian kami dieksekusi sekaligus.

Melalui contoh di atas, kita dapat menemukan bahwa dalam data Tick, di bawah premis bahwa harga tidak berubah, dimungkinkan untuk menghitung apakah ada transaksi pasif dari pesanan yang sedang menunggu melalui perubahan jumlah pesanan yang sedang menunggu. Penggunaan harga yang sama, pendekatan pertama waktu. Mesin backtesting semacam ini hampir bionics lingkungan perdagangan nyata, menghilangkan mekanisme pencocokan harga dari transaksi dan transaksi palsu, sehingga setiap data pasar benar-benar ditunjukkan, sehingga backtest sama dengan pasar nyata, hanya backtest semacam itu yang masuk akal.

Ke arah mana untuk backtest?

Pada platform FMZ Quant, backtesting tingkat Bar dan Tick ada pada saat yang sama. Setiap trader kuantitatif dapat menggunakan mesin backtesting yang berbeda sesuai dengan strategi trading mereka sendiri, dan tidak peduli jenis backtesting yang Anda gunakan.

low frequency strategy backtesting tidak memerlukan mesin pencocokan yang kompleks, karena jumlah transaksi untuk strategi tersebut kecil, biaya slippage tidak memiliki dampak besar pada strategi itu sendiri. secara umum, hanya beberapa titik slippage yang perlu ditambahkan selama backtesting, menggunakan backtesting tingkat bar akan cukup.

Beberapa perdagangan intraday atau strategi yang melibatkan posisi pembukaan selama hari, jika perlu, juga dapat menyesuaikan granularitas data pada halaman parameter konfigurasi backtesting, seperti backtesting pada siklus 1 jam, yang dapat disesuaikan dengan data 15 menit yang lebih halus.

Perdagangan frekuensi tinggi karena jumlah transaksi cukup tinggi, satu varietas dapat diperdagangkan puluhan atau bahkan ratusan kali dalam sehari, jadi selama mesin pencocokan masuk akal, maka di bawah efek hukum jumlah besar, hasil backtesting pada dasarnya dapat diandalkan.

Dalam backtest trading frekuensi tinggi, semakin tinggi frekuensi transaksi, semakin singkat periode waktu posisi kepemilikan; semakin rendah rata-rata keuntungan dari satu transaksi. pada saat ini, jika desain mesin backtest tidak masuk akal, atau metode pemasangan order dibandingkan dengan lingkungan perdagangan nyata tidak sama, maka akan ada fenomena perbedaan kecil membuat disparitas seribu besar, jadi untuk trading frekuensi tinggi, mesin backtest pada tingkat Tick adalah pilihan terbaik.

Tick level data backtest sesuai dengan data pasar nyata

Kami menunjukkan kepada Anda bagaimana backtest tingkat Tick bekerja dengan strategi pembuatan pasar frekuensi tinggi yang ditulis dalam C ++ (yang juga mendukung Python dan JavaScript). Anda dapat menyelesaikan strategi dan melakukan backtesting online dengan mengklik tautan di bawah ini. Gambar berikut diambil dari informasi log. Perhatikan bahwa kami membeli 1 lot dengan harga 2231 pada 2019-07-12 14:59, dan menjualnya pada 2232.

img

  • Tick pertama adalah: Jual: 2232 Volume: 409 Beli: 2231 Volume: 73

  • Tick kedua adalah: Jual: 2232 Volume: 351 Beli: 2231 Volume: 84

  • Tick ketiga adalah: Jual: 2232 Volume: 369 Beli: 2231 Volume: 67

Strategi demonstrasi ini adalah untuk menutup posisi saat membuat keuntungan dengan harga yang berdetak. Setelah membuka posisi, kita mengirim pesanan posisi penutupan pada 2232 untuk menutup posisi panjang, dan 2231 untuk menutup posisi pendek. Menurut backtest tingkat Bar tradisional, harga order yang sedang menunggu ini tidak dapat ditutup. Namun, mesin backtesting tingkat Tick platform terus menghitung perubahan jumlah order di pasar. Ketika data Tick ketiga dihasilkan, menurut mekanisme marching order pertukaran bursa, jika harga sama, menurut aturan waktu pertama, operasi posisi panjang penutupan kita akan diperdagangkan.

Strategi Salin

Klik link ini (https://www.fmz.com/strategy/162372) untuk menyalin strategi lengkap tanpa harus mengkonfigurasi parameter

Catatan: Saat ini, kami hanya mendukung jangkauan penuh futures komoditas domestik Cina dan data tingkat Tick dari bursa cryptocurrency OKEX. Kami akan mendukung lebih banyak bursa di masa depan.

Akhir

Di atas adalah analisis platform FMZ Quant dan pertempuran aktual dari backtesting semua tingkat. Tidak hanya itu, tetapi selain mendukung pedagang profesional dan pengguna institusional, itu juga sangat ramah bagi pemula yang belum memulai. Bahasa visual dapat diimplementasikan tanpa menulis kode. Selain itu, bahasa My dapat diselesaikan dalam 10 kalimat.

Berpikir tentang strategi, melakukan statistik, dan menganalisis... Perdagangan telah sangat sulit. Apakah Anda CTA frekuensi rendah, perdagangan intraday, perdagangan frekuensi tinggi, platform perdagangan kuantitatif FMZ Quant dapat didukung dengan sempurna tanpa batas. Kami tidak membuat fungsi mainan, berdasarkan backtesting historis yang akurat di tingkat Tick, kami dapat menguji kombinasi dari beberapa varietas, beberapa strategi dan beberapa siklus untuk membantu Anda membangun portofolio investasi yang optimal.


Berkaitan

Lebih banyak